看透Spring MVC:源代码分析与实践
上QQ阅读APP看书,第一时间看更新

1.1 软件的三大类型

记得在上学的时候,计算机考试中很经典的一道题是“开电脑时应该先开主机电源还是先开显示器电源”,那个时代的软件主要以单机软件为主,如画图板、五笔打字等,当时学习使用电脑跟学习打字基本上是一个概念,那些不需要联网的单机软件就是最开始的软件。

后来有的程序需要统一管理软件中使用的数据,所以就将保存数据的数据库统一存放在一台主机中,所有的用户在需要数据时都要从主机获取,这时就分出了客户端和服务端,用户安装的软件叫客户端(Client),统一管理数据的主机中的软件就叫服务端(Server),这种结构就叫CS结构。再后来这种结构的服务端就不只是管理数据了,另外还可以处理一些业务逻辑,哪些业务放到客户端处理,哪些业务放到服务端处理就是见仁见智的问题了。业务放到服务端统一处理可以提供更好的安全性和稳定性而且升级比较容易,不过服务器的负担就增加了;业务放到客户端处理可以将负担分配到每个用户的机器上,从而可以节省服务器的资源,不过安全性和稳定性可能会有一些问题,而且升级也比较麻烦,每个用户安装的客户端程序都需要升级。另外,为了节省网络资源,通过网络传输的数据应该尽量少。CS结构如图1-1所示。

图1-1 CS结构图

CS结构的程序已经可以完成网络通信了,不过使用起来还是有点麻烦,首先软件提供商需要同时开发客户端和服务端两套软件;其次每个用户在使用时都需要单独安装客户端软件,而且升级的时候也需要每个用户都进行升级。为了解决这个问题而设计了统一的客户端,而且默认安装在用户电脑里面,这就是我们电脑中的浏览器(Browser),而且一个浏览器可以访问所有同种类型的网站,当然它主要用作展示数据,具体业务处理是在不同的服务端进行的,这种结构就叫BS结构。BS结构除了提供了统一的客户端,还根据相应协议和标准提供通用的服务器程序,服务器程序统一处理数据连接、封装和解析等工作。BS结构如图1-2所示。

图1-2 BS结构图

这就是软件的三大类型:单机类型、CS类型和BS类型。在这三种类型中,因为BS类型开发简单、使用方便而且功能强大,所以现在使用最广,当然并不是说BS结构是最好的,具体使用什么结构还需要根据实际的需求来决定,比如,现在我们电脑中的记事本、Office以及压缩软件等都是单机软件,而它们使用得也非常广泛,另外BS结构虽然比CS结构在开发和使用上都简单,但是BS结构的灵活性和处理效率都不如CS结构,所以像QQ、大型游戏等软件使用的还是CS结构。