在浏览器进入到千家万户以前,最终用户只能享用来自本地服务器的内容单一、乏味的数据。今天,随着URL在全球的普及,我们可以享用来自巴黎乃至皮奥里亚的数据库的数据,而且就像读取我们身边服务器的数据一样简单。
最终用户一直期望着能享用更多种类的数据,但在因特网面世之前,却没有什么可行的办法达到这一目的。因特网的蓬勃发展为最终用户提供了理想的数据分布方法,并奠定了在全球范围内交换数据的基础。但尽管在基础结构方面取得了这些改进,IT企业仍然不愿意把他们的数据库向大众开放。
看来,我们还需要再耐心地等待几年,才能看到IT企业以其认为有益的方式与大众共享其数据库。总部设在新墨西哥州阿尔伯克基市的系统集成商计算机系统开发公司( CSD )负责销售和市场营销的副总裁Tom Herring说:"使用大型机的企业多年来一直在寻求一种方法,以便能为最终用户提供访问数据库的图形化客户机 ,但困难实在太大。"首先是安全问题,其次是建立这种系统的可行性究竟有多高的问题 。
浏览器/ Web服务器/数据库的结构为上述IT企业所关心的问题提供了解决方案。嵌入在客户机和服务器之间,位于企业防火墙之前的Web服务器能出色地防止非法入侵者获取企业的保密数据 。但更为重要的是,利用Web服务器建立基于数据库的应用程序变得相当的非常简单。预装在最终用户台式电脑中的浏览器使开发人员不再需要为应用程序编写复杂的图形用户接口了。如果这个应用程序非常受欢迎,IT 企业只需简单地扩大其规模,并把工作量分布在多个Web 服务器上即可。此外,因为浏览器可自动下载用户所需要的任何图形用户接口以及万维网主页,所以,信息技术企业也不再需要参与软件分发了。
基于Web的数据库应用程序即为三层应用程序的典型例子,它有一个显示层、一个逻辑层和一个数据层。从万维网上分布的成千上万的三层应用程序就能看出,这种三层模式在因特网开发方面已经非常普及。实际上,三层模式在整个软件开发业非常流行,其优点正得到越来越多的人的认可。用专家的话说,这种三层模式作为软件开发的主流体系结构将很快成功地取代二层模式。
为什么不采用二层模式?
Apptivity Java应用服务器制造商、总部设在马萨褚塞州贝德福德市的Progress软件公司副总裁Dennis Moore建议,如果您想得到一层、二层和三层模式体系结构的最恰当的比喻,那么就可以看一看食品的生产过程。在一层模式中,您自己采集食品。在二层模式中,您直接从当地农场购买食品。而在三层模式中,您从超级市场购买食品,而超级市场从多家农场采购食品。
初看起来,从荷兰运来西红柿比直接从当地农场购买效率更低,成本更高,而且还不如自己种。但我们都清楚事实恰恰与此相反。大型专业化农场可以更高的效率生产食品,从而能够弥补运输、贮存和分销的附加成本。消费者把食品的生产委托给若干专业化农场后,最终不但能节省开支,还能获得品种更多的食品,并确保在不发生全球性灾害的前提下总能有充足的食品供应。如果大型企业教会我们新的方式,那么这就是规模经济的价值。
Progress公司的Moore先生认为,客户机/服务器的领域也是类似的道理。虽然二层客户机/服务器模式在基于PC的一层应用程序基础上更进了一步,但是。计算机系统开发公司的Herring先生说:"客户机/服务器做出了很多承诺,但技术上却达不到。"
客户机/服务器向最终用户做出的承诺之一就是,用户可广泛地访问数据。在客户机/服务器出现之前,对驻留在全球各地众多数据库中的庞大的数据存储来说,最终用户只具备有限的经验。而保存这些数据的大型机的严密程度甚至超过了诺克斯堡。对那些为数极少的,能够访问数据仓库的应用程序---通常是3270终端上的应用程序---它们实在太笨重和乏味,足以使最终用户放弃整个想法。
与最终用户缺乏经验的情形一样,我们也不能保证肯定能与数据进行交互,并根据数据进行交易。数据是一种神圣的东西,只有那些精通相应工具的专家才会摆弄。
当然,客户机/服务器面临的问题是,对每个希望使用应用程序的用户来说,您都得去他们的计算机上安装软件。从很多方面看,这种模式非常麻烦。首先,在每台计算机上逐个安装软件非常耗费时间,更不要说成本了。其次,在个人计算机的世界里,每台计算机都不相同,要进行维护就更麻烦了。例如,基于组件的应用开发工具制造商、纽约州纽约市Jyacc公司旗下Prolific公司总裁Frank Vafier建议说:"有时,您需要安装的DDL (动态链接库)会与其它程序的DLL发生冲突。"
第三,Herring先生认为,因为在二层模式下,显示和逻辑被封闭在一个层内,客户机就会非常大,或者至少比较大,因而会消耗本机存储空间和系统资源。
换句话说,Vafier先生说:"除非您需要大量使用应用程序,否则就根本不值得安装这些东西。对偶尔使用的用户来说,应用程序根本没用。" Vafier先生举例说明了向大众市场推出的二层客户机/服务器应用程序在早期曾经经历过的失败,并专门谈到最初的家庭银行应用程序和Federal Express Corp. (联邦快递公司)开发的软件包跟踪程序(不是基于Web的)。
第三层
近来,我们普遍认为出现各种在线数据库应用程序是很自然的事情 ---但是这些应用程序,不论其目的和用途为何,在几年前甚至不可能出现。不论我们是制订自己的旅行计划,还是在线订购图书或光盘,乃至查阅雇员的401K记录,用Vafier先生的话说,这种在"源头进行交易"的能力是任何新的应用程序都必须具备的功能。
除了极少的几个例外情况外,使这些应用程序成为可能的是在客户机与数据库之间增加的一个层---即Progress公司的Moore先生所谓的"中间层",他说:"中间层对计算的作用是把会话、通信负载和工作本身打包,分成可以管理的块,这样就能进行有效的处理。"
中间层(又称逻辑层、应用 服务器或信息代理)可执行很多功能。这些功能中有一些曾经是由客户机或数据库执行的,但中间层所提供的很多功能都是全新的。
Sun Microsystems公司北美Java中心总经理Stu Stern说,在基于Web的数据库应用程序领域,中间层所执行的最基本任务可能就是提供安全性。中间层驻留在企业网络内防火墙以外,并以万维网服务器的形式构成客户机与数据库堡垒之间的可靠门户。
在纯粹的三层系统中,中间层的任务是提供应用程序逻辑---程序的核心部分。Stern先生认为,把应用程序逻辑放置在客户机层或数据层会产生很大麻烦,因为"前端和后端系统常随需求的变化而有较大的变动。"如果把应用程序逻辑构筑在起协调作用的中间层内,就能确保不论前端或后端如何变化,编码的大部分都能保持不变。
最后,企业还依靠中间层确保应用程序能被最终用户所获得。在大型系统中,这就会涉及在服务器之间保持负载平衡、管理客户机的连接以及代理在客户机和数据库之间来回传输的信息等功能。Prolific公司的Vafier先生认为,对Web应用尤为重要的是:能够将应用程序逻辑分布在多台服务器上,从而提高其计算处理能力。他说:"如果二层客户机/服务器应用程序是成功的,那么希望使用它的用户的数量会比您预想的多得多。如果是基于Web的应用,这个数量可能是100倍或1000倍。"
为什么现在才采用三层体系结构?为什么不早些采用呢? 如果每个人都认为三层体系结构更好,那么为什么直到现在它才出现呢?
实际上,三层体系结构的想法并不新鲜。正在使用IBM公司的Customer Information Control System ( CICS ---客户信息控制系统)和BEA系统公司的Tuxeda事务处理(TP)监视器等中间件的Progress公司的Moore先生说:"三层结构早就是可能的。"实际上,如果您好好寻找的话,您就会在很多地方看到生产过程采用了三层应用程序。
航空公司的订票系统一直是三层应用程序的典型例子。Moore先生说:"您听说过航空公司的检票员写字非常糟糕,一生都在打字这个笑话吗?"实际情况是,一台小型电脑运行一个专门设计的客户程序,客户机又与其它地方非常专门的应用服务器对话,而这个服务器可能是IBM公司的CICS或其它UNIX上的TP监视器,这些服务器又与后台的数据源对话。这种应用程序肯定具备三层系统的特点:客户机、应用服务器和数据库都分别安装在不同的系统组件上。
但是,建立和维护三层应用程序曾经是令所有人头疼的难题,只有最顽强或背水一战的开发小组才会对它持之以恒。计算机系统开发公司的Herring先生说:"我们以前都是安排最好的程序员开发这些项目。但他们都说非常难。"如果不是现在在每台电脑上都安装了万维网浏览器,开发商可能现在还在琢磨在最终用户的计算机上建立和安装客户机程序呢。目前,只有Sybase公司的PowerBuilder等少数开发工具可以用来建立这类应用程序。而且,为了获得多数数据库应用程序所要求的交易功能---可靠的发送、两阶段提交等等---您就必须雇佣精通中间件的开发人员。
Sun公司的Stern先生说:"从逻辑上和物理上划分这三个层肯定是好想法。但我也很清楚,在短期内,您的工作量肯定更大。"因此,绝大多数客户机/服务器开发商都跳过开发中间层这一步,而把工作重心放在直接在GUI客户机上建立应用 逻辑这方面。
所以,三层应用程序的开发仅仅被那些真正需要它的系统采用了,如自动柜员机(ATM)银行应用程序和上面提到的航空公司订票系统等。一般说来,考虑采用三层模式进行开发的应用程序具有以下特点:它们要求能可靠地发送信息,必须能支持大量的潜在客户---即它们均要求具备良好的可扩展性和性能。
但开发商应用三层模式的主要原因可能并非因为这是构造应用程序的正确方法,而是因为在很多情况下它比二层模式的开发更容易。因此,三层模式应该感谢可下载的瘦客户机。Progress公司的Moore先生说:"三层模式的简单程度堪与一层模式媲美。"
Java也对三层体系结构的普及有重大贡献。开发商无不认为,Java是创建联网的应用程序的最佳语言。
Moore先生说:"从设计上看,Java是一种简单的网络计算体系结构,"它对三层系统的成功面世起到了至关重要的作用---下载瘦客户机的能力、内置的网络安全性以及这种语言的其它卓越功能---如,从一台计算机向另一台计算机调用功能在Java中就很容易。
现在采用三层体系结构后会有什么益处?
现在,三层体系结构已经被开发商公认为应用程序开发中最有效的模式,但如果要使三层结构成为真正可用的系统,还需要在哪些方面做出改进呢?
Sun公司的Stern先生认为,首先,中间层还必须经过完善,而不仅仅是能支持万维网和Windows客户机。Stern先生说:"客户机设备比比皆是,"他暗示的是下一代掌上型电脑、电话、电视、寻呼机等等。
中间件制造商已经开始着手添加对不同组件体系结构的支持。总部设在弗吉尼亚州雷斯顿市的ICL公司负责CORBA对象请求代理(ORB)产品的市场营销经理Ian Hunter说:"目前有三大主流技术。"这些技术包括:Microsoft公司的组件对象模型(COM)和分布式COM,CORBA和ORB解决方案(见" OTM称雄" )和Java。Hunter先生说:"企业为中间件市场开发的任何解决方案都必须包括这三种技术。"
在这方面,ICL公司的DAIS系列中最近又添加了两种新产品:COM2CORBA ---一种可将Windows应用程序链接到基于CORBA的企业应用程序的开发软件,和J2 --- Java版本的DAIS ORB 。其他中间件制造商也不甘落后。例如,马萨褚塞州绍斯伯勒市以PRC(远程程序调用)产品著称的NobleNet公司最近宣布推出可在至少4种中间件环境:COM、CORBA、Java和RPC上支持可交互操作性的一种应用程序开发工具:Nouveau。
向n层以上发展
所以,如果计算机系统已经成功地从一层模式发展到二层,直到现在的三层结构,那么还会怎样发展呢?
Progress公司的Moore先生认为:"从逻辑角度看,计算机体系结构的下一个发展阶段应该是所谓的全分布式计算这样的概念。在这样的模式中,实际上既不存在客户机,也不存在服务器---任何部分都可以作为客户机,也可以作为服务器。"但Moore先生又指出,在全分布式计算模式下,也就失去了三层结构中大受欢迎的专门化的好处。对全分布式应用程序进行管理也将非常困难。Moore先生说:"三层模式是仍可管理的最成熟的应用体系结构。"
这并不是说就不存在改进的余地了。ActiveWeb应用集成系统制造商、加里福尼亚州圣克拉拉市Active软件公司的技术总监Rafael Bracho对未来的展望是,我们将采用n层体系结构,而非二层或三层结构。这种模式要求在建立中间层时有更大的灵活性,同时还要保持三层模式的显示层、逻辑层和数据层。
例如,Bracho先生描述了一种新的客户跟踪应用程序。Bracho先生说:"有关您的客户的信息可能散布在整个企业,并被不同的应用程序处理着。如果您想创建您需要的应用程序,那么中间层内的应用程序彼此之间必须能够对话。"
本文地址:http://com.8s8s.com/it/it18480.htm