
3.3.3 三层C/S系统的结构
在传统的两层C/S结构中,开发工作主要集中在客户方,客户端软件不但要完成用户交互和数据显示的工作,而且还要完成对应用逻辑的处理工作,即使用户界面与应用逻辑位于同一平台上。这样就带来了两个突出的问题,即系统的可伸缩性较差和安装维护较为困难。
因为在一个系统中,并不是所有的客户机要求都一样,所以它们要求程序的功能也不尽相同。使用两层C/S结构应用软件时,开发人员提供的所有程序都是相同的,除非开发人员根据不同用户的需求将大的软件裁剪成不同的小软件分发给不同的用户。
另外,在系统开发完毕后,整个系统的安装也非常繁杂。在每一台客户机上不但要安装应用程序,而且还必须安装相应的数据库连接程序,以及完成大量的系统配置工作。所有的客户端都要配置好几层软件,因而变得很庞大,被称为“肥客户机”。这样一来,如果系统有大量的用户,并且用户是分布的和流动的(如广域网环境下的应用系统),则整个系统的安装和维护将非常困难。在系统进行修改后,所有客户机上的软件都要受到影响。
为了解决两层C/S结构应用软件中所存在的问题,人们又提出了三层C/S结构应用软件。在三层C/S结构应用软件中,整个系统由三个部分组成,即客户机、应用服务器和数据库服务器。客户机上只需安装应用程序,负责处理与用户的交互和与应用程序的交互。应用服务器负责处理应用逻辑,即接受客户机方应用程序的请求,然后根据应用逻辑将这个请求转化为数据库请求后与数据库服务器进行交互,并将与数据库服务器交互的结果传送给客户机方的应用程序。数据库服务器软件根据应用服务器发送的请求进行数据库操作,并将操作结果传送给应用服务器。三层C/S结构如图3.3所示。

图3.3 三层C/S结构
从图3.3中可以看出,三层C/S结构应用软件的特点是用户界面与应用逻辑位于不同的平台上,并且应用逻辑被所有的用户共享。由于用户界面和应用逻辑位于不同的平台上,所以系统应提供用户界面与应用逻辑之间的连接,两者之间的通信协议是由系统自行定义的。
应用逻辑被所有的用户共享是两层C/S结构应用软件与三层C/S结构应用软件之间最大的区别。中间层(即应用服务器)是整个C/S系统的核心,它必须具有处理系统的具体应用的能力,并提供事务处理、安全控制以及满足不同数量客户机的请求而进行性能调整的能力。应用服务器软件可以根据应用逻辑的不同被划分为不同的模块,从而使客户机方应用程序在需要某种应用服务时只与应用服务器上处理这个应用逻辑的模块通信,并且一个模块能够同时响应多个客户机方应用程序的请求。
使用三层C/S结构应用软件开发系统的优点是非常明显的,主要有以下几点。
(1)整个系统被分为不同的逻辑块,层次非常清晰。
(2)能够使“肥客户机”变成“瘦客户机”。
(3)开发和管理的工作向服务器方转移,使得分布数据处理成为可能。
(4)管理和维护变得相对简单。
另外,引进三层C/S结构体系后,客户机便可省去与数据库系统直接互动的麻烦。客户机直接调用服务器上的应用逻辑,应用逻辑则代表客户机对数据库进行存取,这样就可以减少向服务器发出的SQL查询和更新要求,从而使其性能比两层C/S结构更优。此外,由于客户机不直接连接数据库系统,而服务器能够实现更细致的授权定义,因此,三层C/S结构能加强整个系统的安全。