传统的二层C/Sl构存在以下几个局?1它是单一服务器且以局域网Z心的,所以难以扩展至大型企业q域|或Internet;2受限于供应商;3软、硬件的l合?qing)集成能力有?4难以理大量的客h。因?三层C/Sl构应运而生?
三层C/Sl构是将应用功能分成表示层、功能层和数据层三部分。其解决Ҏ(gu)?对这三层q行明确分割,q在逻辑上其独立。原来的数据层作为DBMS已经独立出来,所以关键是要将表示层和功能层分L各自独立的程?q且q要使这两层间的接口z明了?
上qC层功能装载到g的方法基本上有三U?如图1所C?。其中表C层配置在客h?而数据层配置在服务器中?/p>
一般情冉|只将表示层配|在客户Z,如图1(1)或图1(2)所C。如果像?(3)所C的那样q功能层也放在客h?与二层C/Sl构相比,其程序的可维护性要好得?但是 其他问题q未得到解决。客h的负荷太?其业务处理所需的数据要从服务器传给客户?所以系l的性能Ҏ(gu)变坏?
如果功能层和数据层分别攑֜不同的服务器?如图1(2)所C?,则服务器和服务器之间也要q行数据传送。但?׃在这UŞ态中三层是分别放在各自不同的gpȝ??所以灵zL很?能够适应客户机数目的增加和处理负L(fng)变动。例?在追加新业务处理?可以相应增加装蝲功能层的服务器。因?pȝ规模大q种形态的优点p显著?
值得注意的是:三层C/Sl构各层间的通信效率若不?即分配l各层的g能力很强,其作为整体来说也达不到所要求的性能。此?设计时必L重考虑三层间的通信Ҏ(gu)、通信频度?qing)数据量。这和提高各层的独立性一h三层C/Sl构的关键问题?
二、三层C/S的功?/strong>
1. 表示?
表示层是应用的用h口部?它担负着用户与应用间的对话功能。它用于查用户从键盘{输入的数据,昄应用输出的数据。ؓ(f)使用戯直观地进行操?一般要使用囑Ş用户接口(GUI),操作单、易学易用。在变更用户接口?只需改写昄控制和数据检查程?而不影响其他两层。检查的内容也只限于数据的Ş式和值的范围,不包括有关业务本w的处理逻辑?
囑Ş界面的结构是不固定的,q便于以后能灉|地进行变更。例?在一个窗口中不是攑օ几个功能,而是按功能分割窗?以便使每个窗口的功能z单U。在q层的程序开发中主要是用可视化~程工具?
2. 功能?
功能层相当于应用的本?它是具体的业务处理逻辑地编入程序中。例?在制作订购合同的时要计算合同金额,按照定好的格式配|数据、打印订购合?而处理所需的数据则要从表示层或数据层取得。表C层和功能层之间的数据交往要尽可能z。例?用户索数据时,要设法将有关索要求的信息一ơ传送给功能?参见?),而由功能层处理过的检索结果数据也一ơ传送给表示层。在应用设计?一定要避免"q行一ơ业务处?在表C层和功能层间进行多几次数据交换"的笨拙设计?
通常,在功能层中包含有:认用户对应用和数据库存取权限的功能以及(qing)记录pȝ处理日志的功能。这层的E序多半是用可视化编E工具开发的,也有使用COBOL和C语言的?/p>
3. 数据?
数据层就是DBMS,负责理Ҏ(gu)据库数据的读写。DBMS必须能迅速执行大量数据的更新和检索。现在的L是关pL据库理pȝ(RDBMS)。因?一般从功能层传送到数据层的要求大都使用SQL语言?
三、三层C/Sl构的优?/strong>
1. h灉|的硬件系l构?
对于各个层可以选择与其处理负荷和处理特性相适应的硬件。这是一个与pȝ可羃放性直接相关的问题。例?最初用一台Unix工作站作为服务器,数据层和功能层都配|在q台服务器上。随着业务的发?用户数和数据量逐渐增加,q时可以将Unix工作站作为功能层的专用服务器,另外q加一C用于数据层的服务器。若业务q一步扩?用户数进一步增?则可以l增加功能层的服务器数目,用以分割数据库。清晰、合理地分割三层l构q其独?可以使系l构成的变更非常单。因?被分成三层的应用基本上不需要修正?
2. 提高E序的可l护?
三层C/Sl构?应用的各层可以ƈ行开?各层也可以选择各自最适合的开发语a?
3. 利于变更和维护应用技术规?
因ؓ(f)是按层分割功?所以各个程序的处理逻辑变得十分单?
4. q行严密的安全管?
关键的应用,用户的识别和存取权限讑֮愈重要。在三层C/Sl构?识别用户的机构是按层来构{的,对应用和数据的存取权限也可以按层q行讑֮。例?即外部的入侵者突破了表示层的安全防线,若在功能层中备有另外的安全机?pȝ也可以阻止入侵者进入其他部分。
此外,pȝ理?可支持异U数据库,有很高的可用性?
四、三层C/S应用的开?/strong>
三层C/S应用的开发必遵从以下原?保护已有投资;降低应用pȝ的风? 满当前的迫切需?考虑未来的发展规划?
开发出的三层C/S应用pȝ必须?功能丰富且具有高可用?功能要能跨应用系l?pȝ要能跨^台运行?
国BEApȝ有限公司产品计划和战略副总裁Jeri Edwards奛_,按下qCU三层C/S应用pȝ的典型开发类?分别举例介绍了他们的开发目标、开发过E、开发成果及(qing)l验体会(x)。新建应用系l类?Greenfield),如英国劳工局的劳动力市场pȝ;提升已有pȝ性能cd(Turbocharger),如Apple公司的AppleOrder Globalpȝ;l合集成已有pȝcd(Integrator),如AT&T的Zenith应用pȝ。Jeri Edwards奛_Ҏ(gu)三层C/S应用pȝ的开发经验和教训,ȝZ实现C/S应用pȝ?黄金10原则" :
(1) 量化项?佉K目易于管理。应快v一个初始系l?q尽早投入运行。当目规模较大?可以其分割成由更小开发组担负的子目?
(2) 要把_֊花在设计上。首先要d弄清"需? ,然后建立一个原?以便试设计中的"薄弱"环节。后来增加的Ҏ(gu)或部g要保证与pȝl构兼容?
(3) 要奉?拿来M"。近?可供选购的市售C/S产品很多,要坚?能买׃,为我所?的原则。必要时,买来后可对系l加以修?其中既包括基部g也包括应用?
(4) 严格遵守业界标准?
(5) 采用TP监控器或对象事务处理理?(Object Transaction Manager ,OTM)?
(6) 要@序渐q。及(qing)时得到用L(fng)反馈;保证目各部分的良好衔接;?qing)早解决接口问?以保证项目进展协?坚持"边分?边设?边编?Ҏ(gu)?的原则?
(7) 在应用开发过E中,不可忽视pȝ理?
(8) 反复试,包括用户信Q试、基准测试、系l测试、性能试、系l集成测试、坚固性测试、服务交付测试等?
(9) 制定合理的工E进度?
(10) 制定完善的系l拓展计?包括用户的培训和技术支持、高效的Y件装载、已有数据和pȝ的^滑迁UR?
五、三层C/S应用中的核心
每个C/S环境,从最的LAN环境到超U网l环?都用某UŞ式的中间件。实际上,无论客户Z时给服务器发送请?也无论它何时应用存取数据库文?都有某种形式的中间g传递C/S链\,用以消除通信协议、数据库查询语言、应用逻辑与操作系l之间潜在的不兼定w题。中间g是C/S环境中最重要的部件。所谓中间g是一个用API定义的Y件层,是具有强大通信能力和良好可扩展性的分布式Y件管理框架。它的功能是在客h和服务器或者服务器和服务器之间传送高U通信,客h和服务器群有机?_合"h。其工作程?在客h里的应用E序需要驻留网l上某个服务器的数据或服务时,搜烦此数据的C/S应用E序需讉K中间件系l?该系l将查找数据源或服务,q在发送应用程序请求后重新打包响应,其传送回应用E序?
TP监控器在中间件技术中扮演着来重要的角色,特别是在三层C/Spȝ中。据Standish Group的调?TP监控器是q两q信息业界最热门的技术之一?996q有57%的关键应用是构筑在TP监控器上的。TP监控器擅长提供事务性语?允许q境速度和可靠性进行编E。作ZU中间g,TP监控器提供一U用于编写分布式应用E序的API,它通常包含一l强大的理工具。TP监控器是一个高性能、高q行性、多用户的快速响应Y件运行环?它能有效地管理大量的q发d,q而提高系l资源的利用率。如果采用TP监控?pȝL资可节约30%以上,开发周期可~短40%?0%。大多数投入应用的三层应用系l都配备有一套事务处理监控系l?BEA TUXEDO是目前应用最q泛的事务处理监控系l?
BEA TUXEDO是用于分布计的中间件基l构,它开攑ּ应用pȝh高可~放性、高灉|性和高可l护性。它不仅h分布式交易处理和应用间报文通信的功?而且h一pd极其完善的服?可帮助企业徏立和q行应用pȝ,使开发h员能够徏立跨多个^台、数据库和操作系l的应用E序。这?可以灉|选配操作q_以充分适应应用环境。它h以下特点:
1、支持多UYgq_。完全符合Open Group的X/Open标准,支持TCP/IP协议,支持包括Unix、Windows NT、AS/400和大型机专用pȝ在内?0多个gq_和操作系l?
2、结构开放、灵zR模块结构以高E序接口ATMI(Application-to-Transaction Manager Interface)Z?有丰富的ATMI函数可供调用?
3、开攄联机事务处理。可提供诸如事务性语义、透明的二D式提交、事务记录及(qing)分布事务处理理l构{功能?
4、与DCE的结合。通过一套工具和E序?实现了与Open Groupl织的分布计环境DCE的有机结合?
5、功能丰?包括:应用理;事g代理;通过鉴别服务、授权服务和数据加密服务,为客h供安全保?对COBOL语言的支?应用动态调节、负载^衡等保证高可靠性的功能{?
六、三层C/Sl构的应用现?/strong>
目前,用三层C/Sl构开发的应用q不太多,但其数量的确在逐日增加。图3昄了北运行的应用开发Ş态。三层C/S型应用的比例1995q占5%,1997q增加到7.8%,预计?999q将?2.9%。二层C/S型应用和在原有系l上附加GUI型的应用,是被定位为向三层C/S型{化的q度形态。就当前来说,q种形态的比例要比三层C/S?且要持箋一D|间。那?什么情况下应采用三层C/S?据Gartner Group的调查表?h下述特点的应 用应考虑采用三层C/S?
1、应用的服务或种c超q?0?
2、应用是用不同语a~写?
3、两个以上的异构数据??个不同的DBMS?个DBMS?个文件系l?
4、应用的生命周期过3q?
5、高工作负荷,例如每天过5万个事务处理或在同一pȝ讉K同一数据库的q发用户数超q?00?
6、有臛_重要的应用内部通信,包括像电(sh)子数据交?EDI)q类企业的内部通信?
从传l的L/l端型应用到三层C/S?要考虑旉和费用问?有的场合q不适合,需要@序渐q?/p>