5.3.3客户/服务器模式的结构和原理
我们可以把一个计算机应用分为3部分:接口表示(presentation)、处理逻辑(processlogic)和数据管理(datamanagement)。接口表示是通过终端设备实现与用户交互的代码,这个部分完成屏幕格式化、屏幕信息的读写、窗口管理、键盘及鼠标管理等任务。当前最流行的是各种GUI(图形用户接口)的实现,例如Windows、X-Windows、Motif、OpenLook、Presentation Manager(PM)等。处理逻辑是指使用输入数据来完成应用任务的应用代码,这些代码通常用3GL或4GL编写。数据管理是应用程序中负责数据操作的代码和由DBMS实际数据存取的处理程序。将这3个部分合并在一起实现的平台是单机或者分时系统,而分开实现的平台则是广义的C/S系统。
第1种C/S计算模式:以服务器为中心,与分时系统几乎没有差别。它以PC机、X终端或X服务器作为客户,提供网络虚拟终端服务功能。这种应用方式不要求对已有的应用做任何修改,具有实施方便、快捷和易于管理的优点,但客户端的资源没有得到充分利用,而且网络的开销也不小。
第2种C/S计算模式:把接口表示与处理逻辑、数据管理分离开来,是一种服务共享的模式。在实际应用中,每个系统都应具有其最佳的定位,有的系统比较适合于管理,而有的系统则比较适合于科学计算。因此,可以针对不同的应用选择合适的平台。用户可以根据需要使用这些平台,完成自己的工作。这种应用方式的实现在很大程度上取决于用户对应用的开发。
第3种C/S计算模式:把处理在客户和服务器之间进行了合理分配,充分利用资源,这是理想的方式,也是C/S模式所追求的目标。但是,如何把处理合理地分配在两台计算机上,使它们配合默契,对支撑平台、开发工具和程序设计都有较高的要求。
第4种C/S计算模式:与第2种模式不同的是,这种模式将数据接口、处理逻辑分开,是常见的基于数据库管理系统的应用方式。其特点是应用与管理分离,既减去了应用中对数据管理的负担,又能保证数据的完整性和一致性,同时对计算资源和网络资源的利用也比较合理。
第5种C/S计算模式:这种模式以客户为中心,是我们在实际中非常熟悉的资源共享方式,例如PC-LAN。这种方式通过网络操作系统提供数据服务,应用放在客户端,共享数据放在服务器上。这种方式给我们实现网络应用系统带来很多方便。但是,因为全部处理都放在资源有限的客户端进行,这种方式的应用扩展性比较差,而且网络的负担也比较重。
在上述5种计算模式中,第1种模式和第5种模式不是真正意义上的C/S计算模式。第3种模式比较理想。在C/S系统的两边各有3个基本层,值得关注的是最上面的应用层,大部分应用程序跨越在客户与服务器之间。
下面以一个数据查询为例,简单说明应用处理的过程。
(1)用户通过客户端的应用界面输入查询条件,客户应用程序检查用户的输入,形成SQL查询语句流;
(2)客户应用程序通过中间件接口(例如ODBC函数)发送对数据库服务器的查询请求,此请求通过网络协议及网络连接件传送给数据库服务器;
(3)服务器处理请求,得到满足匹配的查询结果;
(4)服务器再通过网络向客户端返回查询结果;
(5)客户应用程序通过用户界面显示查询结果。
5.3.4客户/服务器模式和分布式处理
前面已经介绍了分布式数据和分布式数据库的概念,这里结合C/S模式再对分布式处理作若干说明。
(1)分布式处理
为了向C/S模式靠近,可以认为分布式处理是指任务的一个应用单元处理使用了1台以上的独立计算机。这里是指应用单元处理,不是指操作系统、数据库或其他支持系统。只有当应用程序的处理被分配到独立的不同计算机上进行时才算是分布处理。如图5.8所示的应用程序被分配到客户端和服务器上。分布式处理的一个重要特点是两台计算机通过通信协议互相协作来完成任务。脱离C/S概念来讲,在分布式处理中,每个应用处理都可以独立地访问数据库,两个数据库可以是同构的,也可以是异构的。
应用意义上的分布式处理通常有以下5种基本形式:
a.分布式界面表示。典型的分布式界面表示模式由前端(front-end)和后端(back-end)两部分组成。前端一般是指终端用户的接口设备,例如微机或工作站;后端一般是指网络服务器。前端负责管理用户界面的物理部分,包括屏幕显示、GUI、窗口管理、颜色、字体、鼠标以及键盘等;后端完成一些通用和共享的功能。
b.远程界面表示。当应用程序的全部界面表示驻留于一个结点而程序的其余业务逻辑驻留于另一个结点时,界面表示被称为远程的。这是一种介于界面表示功能与其他应用程序功能之间的协作处理,这种协作处理方式由远程过程调用(RPC)或者program-to-program通信支持。
c.分布式业务逻辑。主要适合于交互频繁的复杂C/S应用,是一种比较难以设计和开发的协作处理应用,即使是最简单的情况,它也应包括两个分离的编译过的程序,这两个程序在设计上必须相互关联,在运行时必须相互协作。典型的分布式业务逻辑功能分离模式类似于front-end/back-end形式。实际上,与界面表示功能打交道的业务逻辑功能部分通常驻留于客户一方,而与数据库相关的业务处理逻辑驻留于数据库服务器一方。
d.分布式数据管理。这是分布式系统设计的重要环节,可以使数据更接近于数据源,便于维护,减少传输,而且还可以支持更高的数据可用性。例如,可将关键和重要的数据多次拷贝并置于不同地点,从而避免或者减少“单点失败”的可能性。
e.远程数据管理。如果一个应用程序的全部数据、数据处理逻辑和DBMS都从应用代码中分离出来,并驻留于单一的系统中,便称之为远程数据管理。这里所说的数据处理逻辑是指操作数据的应用程序代码,DBMS是指由DBMS负责完成的实际处理。这种远程数据管理虽然形成了单服务器、多客户的环境,但由于数据并没有分布,实质上与传统的集中式数据库并没有区别。
(2)C/S模式与分布式处理的关系
从概念上讲,C/S模式是一种特殊的分布式处理,但分布式处理并非是C/S模式的充分条件,而只是必要条件。两个应用程序之间构成协作处理,并不一定就是C/S模式,即不一定非通过客户和服务器硬件平台来实现。分布式处理讲了很多年,而C/S模式使分布式处理走向了现实。
可以把上面所述的5种情况与第5.3.3节介绍的5种C/S计算模式相对照,以得到更完整的印象。
(3)C/S模式和系统集成
C/S模式为企业的信息系统提供了一个开放且可伸缩的环境,也就是为系统集成提供了良好的环境。当企业的信息系统由孤立的部门应用向单元技术信息集成、企业级信息集成和跨企业级信息集成一步一步迈进时,正如我们一直强调的,开放性是非常重要的问题,否则,在发展中很难保护已经投入使用的资源。C/S模式成功推出以前,开放性主要是一种概念,没有一个基本模型来支持它,设计人员大多按照自己的想法来处理开放性的问题。
C/S规定的是一种计算模式,并没有一个固定的硬软件结构。每个企业完全可以根据自身的需求和特点来设计具体的集成方案,这种方案可以从很小到极大的系统集成。典型的集成方案可以按照不同规模分为以下4种结构:
a.个人C/S。实现在同一台微机上运行客户、中间件、大部分的业务服务(可能有部分服务是由远程服务提供的),适用于个人办公和流动用户。在企业信息化的起步阶段,如果不想承担风险,可以先采用这种形式。
b.部门/工作组C/S。适用于企业的单元技术集成,由部门或者工作组协同工作的情况。在这种结构下,客户与服务器相分离,分别完成客户和服务器的功能,是C/S模式的基本结构。
c.企业级C/S。这种结构主要面向整个企业,是C/S多层次的实现,全部服务器给客户一个单一的系统映像(SSI),但它们的实际物理位置可能在企业的不同地方。
d.对等C/S。这是C/S模式的最高实现,系统中的计算机既是客户机,又是服务器,彼此处于对等的位置,在跨企业信息集成中需要考虑这种情况。
5.3.5客户/服务器模式的特点和优缺点
(1)C/S模式的特点
C/S模式具有以下特点:
a.分离和协同工作。客户和服务器是两个分离的逻辑实体,但它们之间又在彼此协同地工作,服务器提供服务,客户请求服务,是服务的消费者。它们之间根据服务的观点对功能进行了明确的划分。
b.共享资源。一个服务器可以在同一时刻对许多客户提供服务,并且协调它们对共享资源的访问。
c.可扩展性。C/S系统可以水平或者垂直扩展。所谓水平扩展,是指可以添加多个客户而不会对系统性能造成太大的影响;所谓垂直扩展,是指可以把现有系统插入到更大、更快的服务器上或移到多台服务器支持的系统中。
d.基于消息的交换。C/S是一对耦合系统,它们之间通过消息(message)机制发生交换行为,消息是服务请求和回答的收发机制。
e.服务封装。服务功能封装于服务器中,服务器接到服务请求后,就会自行决定提供什么服务,因此,只要消息接口不发生变化,服务器的版本升级对客户就没有什么影响。
f.规模适度优化。C/S模式在客户和服务器各方合理地分配了业务处理逻辑功能和数据的存储,最大限度地发挥了客户、服务器和网络系统的效益,是一种规模适中的模式。
g.服务器对用户的透明性。服务器对客户完全透明,一个与服务器通信的客户可以完全不知道服务器的软件、硬件和物理位置。
(2)C/S模式的优点
C/S模式具有以下优点:
a.为企业信息化工程指出了一个有前景的发展方向,把选择硬件的目光集中于微机和工作站。通过局域网(LAN)、广域网(WAN)的互连,以及微机和工作站所具备的极其强大的扩充能力,构成企业和跨企业的信息系统是没有问题的,而微机和工作站的价格低廉,维护成本低,使企业可以逐步投资,用扩充的方式建立系统。
这种投资策略符合企业的利益。
b.C/S模式支持和倡导标准化及开放的系统,这样,客户和服务器都可以在异构的软硬件平台上运行,将用户从专用的体系结构中解放出来。用户可以在C/S模式的指导下选择对本企业最合适的硬软件组合方式。
c.由于C/S模式是一种分布式处理模式,数据和处理都可以得到较合理的分布,数据处理尽可能靠近数据源,使网络的负担大为减轻,从而减少了对网络带宽和成本的需求,同时大大提高了系统的响应速度。
d.C/S模式强调界面的逻辑功能,采用GUI技术,用户面对的是易学易用、图形丰富的可视化界面,便于用户尽快掌握系统操作。
(3)C/S模式的缺点
C/S模式具有以下缺点:
a.C/S模式是一种分布式处理模式,分布式应用系统的设计、实现和管理比起集中式、文件处理方式要复杂得多。数据被分布后如何保持数据的同步性和安全性,如何将处理的逻辑合理地分配到客户和服务器,如何保持分布式事务处理的同步,这些都是人们所关注的问题。目前市场上还缺乏完全符合分布标准的商品软件。
b.如果应用逻辑并未在客户和服务器中合理分配,而是大多数移到了服务器上,这就是所谓的集中式C/S环境。这种环境与集中式处理并无本质的区别,服务器也会成为系统的瓶颈,这一点是企业在采用C/S模式时容易犯的毛病。
总之,C/S模式在减少集成成本、提高信息共享度、加强网络性能和软件可移植性等方面有许多优点。由于C/S模式的使用时间还不很长,商品软件的成熟程度还不够,一些理论上的概念并没有真正实现,管理上还有一定的难度,安全性有待加强,并且缺乏掌握C/S技术的新型的系统分析员和程序设计员,因此,C/S模式也表现出有待改进的方面。
5.3.6服务器
服务器是一个笼统的概念,它可以分为软件服务器和硬件服务器两类。通常,在C/S模式中人们更强调软件服务器。