
网络程序设计教材第四章顾客服务员程序设计.doc
30页第四章 顾客服务员程序设计4.1网络服务模式近年来,在信息系统中广泛使用的信息共享模型是顾客 /服务器模型,这种计算模式迅速取代了以主机为主导的集中式计算方法顾客 /服务器计算具有自己的一组行业术语表4-1列出了一些术语,这些术语经常出现在对顾客 /服务器产品和应用的描述中表4-1顾客/服务器术语术语说明应用程序编程接口( API)一组支持顾客/服务器之间进行相互通信的函数和可调用程序顾客一个服务的请求方,通常是一个末端系统,能够从服务器处查询信息中间件一组驱动程序、应用程序编程接口或其它软件,用于改善顾客 /服务器之间的连接关系数据库是一种把信息访问限制于按照搜索条件选择数据的数据库服务器是一台计算机,通常是一台高性能工作站、 小型机或大型机,拥有供网络中 众多用户访问的信息结构化查询语言(SQL)由IBM开发、由ANSI标准化的一种语言,用于对关系数据库的寻址、创 建、更新和查询顾客/服务器环境中最基本元素是顾客和服务器 顾客通常是PC或工作站,为端用户提供非常友好的界面, 例如微软的 Windows等服务器为顾客提供一组共享的用户服务程序 最常见的是数据库服务器, 服务器能够使很多顾客共享对同一信息源的访问。
除了顾客和服务器,组成顾客 /服务器模型的第三个基本要素是网络系统服务器计算是分布式计算用户、应用程序和资源是分布式的,用来响应实际业务请求,并且它 们通过局域网、广域网或 In ternet连接起来顾客/服务器模型与分布式处理有很多不同点,主要有:在用户自己的系统中为该用户提供界面友好的应用程序 这使得用户可以在很大程度上控制时间安排和计算机使用类型,并使得部门管理者具有响应本地需求的能 力尽管应用是分散的,但仍然强调数据的集中以及很多网络管理和使用功能的集中对于用户组织和厂商来说,他们有一个共同的承诺,使系统开放和模块化这意味 着用户在选择产品和混合使用来自众多厂家的设备时具有很大的选择性网络互联是操作的基础, 网络管理和网络安全在组织和操作系统中具有很高的优先 权顾客/服务器应用顾客/服务器体系结构的核心是应用程序级任务在顾客和服务器之间的分配图 4-1给出了这个模型的一般情况 无论是顾客还是服务器, 最基本的软件是运行在硬件平台上的操 作系统,顾客的平台和操作系统可能和服务器的不同事实上,在网络环境下,可能会有很 多不同类型的顾客平台和操作系统以及很多类型的服务器平台和操作系统。
只要特定的顾客和服务器共享相同的通信协议并支持相同的应用程序, 低层的细节不必考虑顾客表示服务请求/应答服务器应用逻辑(顾客部分)4———・应用逻辑(服务器部分)通信软件 ・通信软件顾客操作系统协议交互服务器操作系统硬件平台硬件平台图4-1顾客/服务器体系结构使顾客和服务器能够交互的基础是通信软件,这种软件主要例子是 TCP/IP所有这些支持软件(通信软件和操作系统)的主要任务是,为分布式的应用程序提供一个基本结构在理论上,应用程序所执行的实际功能可以针对顾客和服务器分割开来, 方法是使平台和网络资源达到最优化且使用户执行各种任务及相互之间合作使用共享资源的能力达到最优 化在某些情况下,这些都要求大批的应用程序软件在服务器上执行, 而在其它一些情况下,多数应用程序逻辑上位于顾客端顾客/服务器环境能够成功的一个基本因素是用户将系统当作一个整体而与之打交道的方式因此,顾客端的用户界面的设计是十分重要的在大多数顾客 /服务器系统中,都突出强调了要提供易于使用、 易于学习、功能强大并且灵活的图形用户界面 (GUI )顾客/服务器应用程序分类在顾客/服务器的通用框架中,对顾客和服务器的工作划分有许多不同的实现方法。
图4-2针对数据库应用说明了可以以多种方式来分配处理过程,图中概括了数据库应用的一些 主要选项当然也存在其它的划分方法, 并且对于其它不同类型的应用选项也可能具有不同的特点服务器顾客顾客顾客DBMS(a) 基于主机的处理(b) 基于服务器的处理(c) 合作处理服务器服务器服务器数据库逻辑DBMS(d) 基于顾客的处理图4-2顾客/服务器应用程序分类图4-2描述了 4种网络服务类型,它们分别是:基于主机的处理:基于主机的处理并不是真正的用户普遍认同的顾客 /服务器计算而且,基于主机的处理是指传统的大型机环境,实质上所有的处理都是在一台中心 主机上完成的用户接口通常是通过一台哑终端,即使用户在使用一台微机,用户 终端也是局限于终端仿真器的角色基于服务器的处理:顾客/服务器配置的最基本的一类, 即顾客端主要负责提供图形化用户界面,而实质上所有的处理都是在服务器上完成的这种配置是早期的顾客 /服务器模式,尤其是部门级系统的典型 在这种配置背后的基本原理是用户工作站最适合提供良好的用户界面,并且数据库和应用程序很容易在中心系统上维护基于顾客的处理:在另一个极端,实际上所有应用处理可以全部在顾客端完成。
一 个例外是最适合在服务器上执行的数据确认例程和其它数据库逻辑功能一般地, 某些更复杂的数据库逻辑功能都位于顾客端 这种结构可能是当今使用最普遍的顾客/服务器方式,使用户能够使用适合本地需要的应用合作处理:在合作处理配置方式中,应用处理是以最优化的方式来执行的,充分利 用了顾客和服务器两方面的优势以及数据的分布性 这样一种配置在设置和维护方面更加复杂,但从长远看,这种配置类型比其它类型可以为用户更好的服务质量和 更高的网络效率图4-2c和图4-2d对应的配置情况是在顾客端上有相当大的一部分负载 这种所谓的“胖顾客"(fat client)模型已经被像 Powersoft 公司的 PowerBuilder 和 Gupta 公司的 SQL Windows 这样的应用程序开发工具所采用使用这些工具开发的应用在范围上是部门级的,支持 25到150个用户胖顾客的主要优点是它充分利用了桌面功能, 卸除了服务器上的应用处理并使它们更加有效,不易发生瓶颈然而,胖顾客策略也存在许多缺点,随着更多功能累加起来,快速地超出了桌面机器的 容量,迫使机器进行升级如果模型扩充,超出了部门的界限,合并了很多用户,则必须安 装高性能局域网来支持瘦服务器和胖顾客之间大量的数据传输。
最后,维护、升级或替换分布于数十台或百台桌面机的应用程序是非常困难的图4-2b代表了一种瘦顾客(thin client)的方式,这种方式更近似地模仿了传统的以主机为中心的方式,常常是使应用程序从大型机环境发展到分布式环境的移植途径, 是目前流行的In ternet网络环境下的应用程序开发模式三层顾客/服务器结构传统的顾客/服务器结构包括两级(或称两层):顾客层和服务器层近年来,一种三层 结构变得日益流行,如图 4-3所示在这种结构中,应用软件分布在三种类型的机器上:用 户机器、中间层服务器以及后端服务器 用户机器是顾客,在三层结构中, 它一般是一种瘦型顾客中间层机器基本上是位于顾客和很多后端数据库服务器之间的连接器 中间层机器能够转换协议,从一种类型的数据库系统映像为另一种 另外,中间层机器能够融合来自不同数据源的结果最后,中间层机器也可以充当桌面应用程序和后端应用程序之间的连接器在中间层服务器和后端服务器之间的交互也遵从顾客 /服务器的模式因此,中间层服务器同时充当着顾客和服务器图4-3三层顾客/服务器结构中间件顾客/服务器产品的开发和使用缺少标准化,使得实现集成的、多厂商的、企业范围的 顾客/服务器配置变得困难,因为顾客 /服务器方式的大多数优点与其模块化以及将平台和应 用程序混合、协调起来提供商业解决办法的能力紧密相连的, 这种互操作问题必须得到很好的解决。
为了获得顾客/服务器的优点,开发者必须开发一组工具,为跨越所有平台访问系统资 源提供唯一的方法和形式这使程序员能够构件这样的应用程序: 在不同的PC机和工作站上所见所感相同,而且无论数据在什么位置都使用相同的方法来访问数据满足这一要求的最普遍的方法是,在上层应用程序和下层通信软件和操作系统之间使用 标准编程接口和协议这种标准化的接口和协议称为中间件( middleware )具有了标准的编程接口,在不同的服务器类型和工作站类型上实现相同的应用就很容易了 这对于用户来说具有明显的好处,而厂商也受到市场的驱动来提供这样的接口 主要原因是用户购买应用程序而不是服务器;用户将只选择那些运行了他们希望的应用程序的服务器 需要标准化的协议将这些不同的服务器接口与需要访问它们的顾客连接起来目前已经有很多中间件软件包,从非常简单的到非常复杂的它们所具有的共同特点是 隐藏不同网络协议和操作系统的复杂性和不一致性 顾客和服务器厂商一般都提供了很多非常流行的中间件软件包供选择, 这样,用户可以决定一个特定的中间件策略, 然后从各个厂商那里汇集装置,来支持这个策略图 4-4给出了在顾客/服务器结构中中间件的作用。
注意,中间件具有顾客端组件和服务器端组件两部分, 中间件的基本目的是使位于顾客端的应用程序或用户能够访问服务器上的各种服务, 同时不需考虑服务器之间的差别对于特定的应用领域,结构化查询语言( SQL )提供一种标准化的方式,由本地或远程的用户或SQL,但他们将自己专有的扩展 但也产生了潜在的不兼容性应用程序访问关系数据库然而关系数据库厂商尽管支持 加到了 SQL中这样使厂商能够让众多产品有所差别,顾客工作站表示服务应用逻辑中间件交互服务器中间件V ►<4 ►协议交互中间件通信软件通信软件 应用服务顾客操作系统服务器操作系统硬件平台硬件平台图4-4在顾客/服务器结构中中间件的作用文件cache的一致性当使用文件服务器时, 文件I/O的性能相对于局部文件访问具有显著的下降, 主要原因是网络带来的延迟 为了减少这种性能下降, 系统可以使用文件高速缓冲器来保存最近访问图4-5文件高速缓存机制的文件记录由于局部性原理,使用本地文件高速缓冲器可以减少必须进行的远程服务器访 问次数图4-5描述了一种典型的文件高速缓存机制, 用于在网络互连的工作站组上高速缓存文件当进程要进行文件访问时,请求首先提交到进程所在的工作站的 cache中,如果在那里未得到满足,则该请求或者传递给本地磁盘, 或者传递给文件服务器。
在服务器端,首先查询服务器上的cache,如果没有命中,则访问文件服务器的磁盘双重高速缓存的方法用于 减少通信量和磁盘I/O当cache中总能含有远程数据的精确副本时,这些 cache是一致的Cache之间可能会变得不一致这是因为远程数据已经改变,而相应的已经陈旧的本地 cache副本并没有被废弃当一个顾客修改了也被其它顾客高速缓存了的文件时, 这种情况就会发生这个问题实际上存在于两个层次上, 如果顾客采用了将任何变化立即写回服务器的文件中的策略, 则任何具有文件相关部分的 cache副本的其它顾客将具有陈旧的数据 如果顾客延迟了将变化写回服务器,则问题就更糟了,因为服务器本身也只是拥有文件的旧版本, 且将请求读至服务器的新文件也可能拥有陈旧的数据 保持本地cache副本是远程数据的最新变化的问题就是cac。












