您的位置:寻梦网首页编程乐园Java天地小龙亭之JSP实践之旅

 

应用服务器的现在和未来



作者 cgifans

传统的应用系统模式是“主机/终端”或“客户机/服务器”,随着Internet 的发展壮大,这些传统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,相应地,新的开发模式也应运而生,即所谓的“浏览器/服务器”结构、“瘦客户机”模式。如何实现这种模式呢?应用服务器便是一种核心技术。据Forrester Research 预测,到2002年时,应用服务器的营业额将超过20亿美元。既然有这么好的前景,那么到底何谓应用服务器?它是如何分类的呢?它有什么样的特点呢?本期技术特写将向大家全面阐述应用服务器的概念、分类、产生、发展以及应用服务器的代表性产品。 

概念篇 


目前应用服务器市场还是一个非常容易弄混的市场,有大约40家公司声称他们拥有应用服务器产品,而每家提供的功能却往往大相径庭。所以,尽管今天有许多应用服务器可供选择——从知名的领先于市场的大公司到小型新兴公司的产品,应有尽有,但这种技术还没有成为一种完全成熟的商品,所以选购者在在购买时难下决断。
由于应用服务器是门新的技术,它的概念还尚未统一,它到底应该包含什么还是仁者见仁,智者见智,但总体来说,应用服务器通过把用户接口、商业逻辑和后端服务分割开来,向开发者提供了一种创建、部署和维护企业规模的Web应用的模块化方式,为要转向Web的用户提供了高性能多线程的环境。它是一种支持多种工业标准的协议和界面引擎,它支持的标准包括数据库互联标准ODBC和JDBC、CORBA、COM/DCOM、Enterprise JavaBeans(EJB)对象模型等。 

三层或N层分布式Web计算技术的发展导致了应用服务器技术的革新。在分布式三层环境中,应用服务器驻留在中间层,夹在客户器前端的用户界面与后端的数据和企业应用之间。 

分布式多层体系结构要求应用服务器主要考虑三方面的技术。首先是开发环境,开发人员需要 一种创建新组件、并将已有组件加以集成的开发环境。其次是应用程序的集成,由于企业计算环境比较复杂,它综合了传统的应用程序和新型应用程序,因此开发人员需要集成各种应用程序,以创建出更强大的应用。第三是应用程序的配置,由于典型的Web 应用程序是分布式,其组件运行在不同的服务器上,并且有大量的用户对其进行访问,因此需要配置平台的支持,以便在用户剧增时能有效地扩展,并保持系统的稳定。 

这种分布式多层应用体系结构将会为企业带来实际利益。首先,应用功能被分为几个模块化部分,使应用的创建、修改和维护更加容易。其次,当业务逻辑从后端移向中层的一般较便宜的硬件上时,就会带来实际利益。这种体系结构的模块化特征还使公司能实施革新应用,从而改善业务流程,保持对竞争者的优势。 

分类篇 


目前的应用服务器已根据功能划分为独立的类别,在购买时请检查应用服务器所支持的功能。 
随着应用服务器市场的发展,新的和合并的功能将会出现,但目前市场中主要有六种类型:事务服务器、知识服务器、带有集成开发工具的应用服务器、协作服务器、瘦服务器和主机访问服务器。

事务服务器包括从电子商务实施到处理帮助桌面或人力资源数据共享的部门服务器的种种功能。事务服务器离商用功能还有很长一段距离。每种实施计划都需要用户进行努力开发,因此,这些计划成本仍在增加。 

21世纪将会有大量需求事务部署。有鉴于此,带有集成开发工具的事务服务器和应用服务器正合并成一种能同时处理事务管理和开发需求的服务器。IBM、Oracle、微软、Netscape、BEA和Sun等厂商在支持企业大型事务应用功能的同时,正在努力简化自己的产品的设计和开发。 

知识服务器是一种更新的应用服务器,一般能从结构化和非结构化来源中搜集数据并编索引。这些服务器通常具有HTTP支持、编索引功能和支持广泛的数据和文件格式的检查和析取的工具。知识服务器还可以支持工作流和业务逻辑处理能力。 

Lotus和Netscape等厂商正增加大量工作流,由于知识服务器支持工作流,因而,协作服务器可能会与之合并,以改善公司的数据管理。这一领域的供货商正在制定标准化协作方面的协议,可能将提高使用不同的协作服务器的机构间的互操作性。这一协议有可能大大使基于Web的商家对商家事务的集成更加容易。 

带有集成开发工具的应用服务器在激烈的竞争中走向成熟。该领域的供货商正在为开发和部署工具补充事务能力,创建一种更加完善的解决方案。 

许多早期采用应用服务器技术的人士抱怨它缺乏足够的开发工具支持。BEA/Weblogic、Bluestone、Forte和SilverStream等供货商在支持部署能力的同时大幅简化了开发程序。但是,这种服务器仍很复杂,应予以认真的分析对待。 

瘦服务器是一类与众不同的应用服务器。这些解决方案通常是支持HTTP及另外的具体功能(如Web页面缓存)的软、硬件的组件。将来,它们可能与其它种类合并。 

Cobalt等厂商推出了瘦服务器功能,当这种功能与另一种解决方案集成时,性能将超过同类特征;这对某种关键功能的高度优化来说至关重要。 

最近,主机访问服务器已接近商用服务器。这些服务器管理着主机应用的访问和表示,通常是通过服务器管理的基于浏览器的5250或3270仿真对话进行管理。 

IBM、Attachmate等添加了平台支持、可管理性和客户端自定义特征。下一代主机访问服务器可能将通过支持对主机数据更具客户化的访问与其它应用服务器合并。 

在某些情况下,应用服务器可能会不受分类所限,支持不只一种服务。例如,SilverStream和Sybase所推出的应用服务器就有集成开发工具,同时还具备事务支持。将来,服务器操作系统中也可能包含一种或多种功能。Solaris、OS/400、NetWare、Linux、Windows和其它服务器操作系统已具备Web技术,预计将来还会添加更多的应用服务器功能。其实,这种方式意味着把所有的鸡蛋都放在一个篮子里。 

在购买前对应用服务器作出评价并非易事。你必须衡量它是否满足你的需求,关键是要检查部署能力和安全功能,评估可伸缩性和可靠性。最后,还要考虑到这种市场处于不断发展变化之中。 

专家篇 


应用服务器走向成熟 中国科学院软件所 李渊明(lyming@public.east.cn.net


应用服务器的由来 

回顾软件平台的主要发展过程及趋势,对于理解应用服务器的发展是非常有帮助的。软件发展的过程就是一个从旧平台不断向新平台进化的过程。 

每当一个新平台出现的时候,都会有许多人首先开发出局部产品,每个产品可以满足一小部分的功能。随着市场的发展成熟,会出现几个主导公司,他们将许多局部产品的功能综合到他们的产品中,形成主导产品。关系数据库市场就是一个很好的例子,一开始有许多局部产品,如数据仓库、对象存储、全文检索、事务处理、位图索引等,现在这些都已经包含在主导产品中了,如Orcale 8、Sybase Adaptive Server等。在客户应用中,一开始有各种各样的小型软件产品,分别用于文字处理、电子表格、图文处理、邮件处理、拼写检查、记事簿、活动安排等等,现在微软、Lotus等已经将许多标准的办公功能集成到了一个单一的产品套装中,成为主导产品,现在我们一般不再需要五花八门的单一功能的办公软件产品了。 

我认为Web市场和应用服务器市场也会如此。Web市场现在还处于百家争鸣的时代,开发一个Web系统往往需要六、七种工具,但往往还不凑手,需要时刻注意新的小工具的出现,包括网上查找、四处搜集,这些都可能是解决问题的素材。更大的难度是将所有这些小工具集成到一起,因为这些小工具是各自独立开发的,谁也没有考虑集成的问题。不象客户机/服务器开发中,PowerBuilder、Delphi已全面集成了几乎所有所需的功能,我们只需专心开发。 

现在,Web的主导产品已经出现,如SilverStream、NetDynamics、Bluestone等,他们全面集成了开发所需的功能,包括集成开发环境、分层次开发机制、源代码控制功能、安全管理功能、加密功能、服务器集群(构造Cluster)能力、不间断的失败恢复能力、广泛的协议标准支持能力、广泛的数据连接能力、事务处理能力、电子邮件处理能力、工作流处理能力、触发代理功能等,各项功能分工合理,和谐统一。这个市场正处于统一的过程中。 

随着基于Web的瘦客户机结构的发展,Web世界发生了巨大的变化,这种变化将Web开发和传统的IT开发联系在一起。IT系统需要Web的规范界面,广泛应用,方便维护,而Web系统需要IT系统的规范化数据存储、海量数据访问、安全性及事务完整性保证。在这种情况下,就需要一种新的产品将两个平台联系到一起,在这种平台上,各组织机构可以结合这两种技术进行开发。这种平台,就是三层体系结构的中间层。 

下一代的计算平台已经很明显是基于瘦客户端和Web的计算了。支持Web和瘦客户应用自然就必须将更多的处理放到中间层去,中间层的重要性就是显而易见的了。瘦客户端就需要一个肥服务器,不能两者都瘦。而一般的Web服务器实在是太瘦了,因此需要我们费很大力气到处寻找营养来养肥它。应用服务器则是一个全面集成的肥服务器,本身就能够满足我们大多数的需求。 

应用服务器的发展过程 

在基于Web和瘦客户计算之前,我们可以看到一些局部产品具有中间层,如: 

分布对象服务(ORB、OTM等) 

TP监视器,事务管理器等 

连接产品,提供应用程序访问历史遗留数据、ERP应用、关系数据库等 
这些产品的一个突出特点是不能提供任何功能来支持用户界面,就是所谓的表演性服务。并且这些产品都是分立的专用产品。 
基于Web的中间层服务——表演性服务器(PresentationServer) 

从1994年开始,基于要创建动态交互式Web应用的想法,逐渐导出了一种新的中间层产品思想:应用服务器思想。这种产品的第一代是简单的Web服务器运行CGI程序,第二代产品则致力于使开发和发布动态生成的HTML页面变得容易。这一代产品的主要目的是提供表演性功能,这种结构的主要缺点是业务逻辑是嵌在Web页面的Script中的。这一代产品的主要功能为: 

表演性服务:动态HTML生成、状态和会话管理 

集成工具:服务器附带有集成开发工具,用来帮助开发基于HTML的应用。 

表演性服务器厂商着眼于扩充性及各种不同的数据源的连接性。如果你习惯于生成些Servlet及使用JDBC编写组件,则这种服务器就可能引起你的兴趣。代表性的服务器包括Microsoft ASP、IBM WebSphere等,这些产品各不相同,大致来说,这些服务器注重帮助开发者采用COM、EJB组件和Servlet等,并将其作裁减缩放。用户可以使用自己喜欢的IDE生成组件,并装入应用服务器中。因为HTML页面生成是通过Servlet完成,因此用户可以使用服务器的Wizards来帮助创建页面或使用任何HTMLIDE来生成Servlet。 

基于事务处理的中间层服务——事务处理服务器(TransactionServer) 

事务处理服务器是第三代应用服务器,第三代应用服务器有了长足的发展,具备了许多新特性: 

有限的分布对象服务 
当开发者认识到将业务逻辑放到Web页面的Script中的缺陷之后,便希望能将这部分逻辑放到可重用的中间层对象中去。这一代服务器大多数支持通过RMI和CORBA访问这些对象。有些产品还支持COM对象。 
连接服务 
这一代产品加入了健壮的、服务器级的关系数据库连接驱动程序,可以方便地访问大多数ERP应用和历史遗留数据。 
企业配置服务 
如果要使电子商务站点支持大量的并发用户访问,可扩展性和可靠性就变得非常重要了。负载平衡和失败恢复功能是必不可少的,安全性和可管理性也是关键的功能。 
Java客户程序 
基于Web的HTML应用可以满足很多Internet用户的需要,但对于Intranet上的用户,他们往往长时间地和同一个系统打交道,他们需要更为丰富、方便的用户界面。这一点HTML往往难以作到,而Java客户可以方便地作到,而且不失瘦客户计算的本质。 
这种服务器主要用于事务处理性的应用,代表性的服务器包括:Oracle Application Server,Microsoft MTS,BEA Weblogic,Gemstone,Sybase Jaguar等。但这类服务器不提供丰富的基于WEB的用户界面生成功能,即表演性服务器提供的那些功能。 

综合性中间层服务——综合应用服务器 

到现在为止,我们已经看到了Web应用服务器和事务处理服务器,这两种服务器都有缺点,以SilverStream、Bluestone为代表的新一代应用服务器是这两种服务器的结合。它不仅具备事务处理能力,还具备表演性服务能力,并且还包括集成的开发工具。这是一种集成完美的开发环境,是一种将开发、应用、表演、事务捆绑在一起的应用服务器。利用它,开发者能很快建立和使用Web应用。其着重点是在优美的环境下高度交互式地进行开发。这一代产品具备的功能包括: 

表演性服务、分布式对象服务、分布式事务服务、应用服务、连接服务、企业配置服务、集成开发工具以及对第三方开发工具的开放性。 

应用服务器的发展方向 

由上述发展状况,笔者认为,应用服务器是朝着集成、扩展的方向发展的,正如关系数据库和办公软件的发展一样。一方面,应用服务器会集成越来越多的功能,不管是应用服务器厂家自己开发的,还是从第三方厂家买来的,对用户来说是一个和谐的整体。另一方面,应用服务器会向着多方兼容和中立的方向发展,包括: 

跨平台能力:UNIX、NT等 

跨数据库能力:Oracle、DB/2、Microsoft SQLServer、Sybase、Informix等 

跨分布式对象标准能力:CORBA、DCOM、EJB、RMI等 

兼容多种应用和历史遗留数据的能力:SAP、Peoplesoft、Lotus Notes、CICS、MQ、Tuxedo等 
应用服务器市场是一个快速发展的市场,在过去的一年里得到了飞快的发展,在今后的一到两年里还会有激烈的竞争。尽管现在还没有统一,但用户对该技术的需求已比较明朗,统一的趋势已经非常明显,它正在逐渐走向成熟。 


产品篇 


尽管应用服务器的市场还相当稚嫩,但它的发展相当迅猛,除了有一些新兴厂商之外,很多著名的厂商纷纷进入这一领域,包括IBM、微软、SUN、Oracle等。以下便是几种有代表性的应用服务器产品,希望读者能从中更加深入地了解应用服务器。 


BEA WebLogic 

BEA WebLogic产品系列包括可单独使用或结合使用的适用于各种规模企业的一系列应用服务器解决方案: 

BEA WebLogic Enterprise是高可伸缩、高可用、支持企业Java标准和CORBA且具有主机互操作性的企业应用服务器,是运行关键任务Web应用的扩展型WebLogic组件中间件系列的旗舰产品。BEA WebLogic Enterprise能够帮助大型企业将其Web和Java应用与现有台式机应用、企业数据和原有系统集成起来。 

BEA WebLogic Server是BEA Web应用服务器的旗舰产品,为用户提供了一个可伸缩、满足企业Java标准的应用服务器。BEA WebLogic Server通过支持建立在网络上互联的Java应用程序而对BEA WebLogic Express进行扩展。BEA WebLogic Server是第一个提供EJB组件、Java消息传递和事件服务、微软COM集成以及零管理客户机的Web应用服务器。 

BEA WebLogic Express为用户提供了一个入门级Web应用服务器。使用BEA WebLogic Express能够生成动态Web页面并放入数据库查询结果。Web表示逻辑由企业Java Servlets以及Java Server Pages定义,关系型数据则通过BEA的Java数据库连接(JDBC)解决方案实现。BEA WebLogic Express支持HTML和Java客户机。 


IBM WebSphere Application Server 


IBM WebSphere Application Server是一个完善的、开放的Web应用服务器。它是IBM电子商务应用架构的核心。WebSphere应用服务器严格地遵循普遍流行的开放标准,如HTTP、HTML、JSP、JNDI和IIOP。 

WebSphere应用服务器基于Java Servlet引擎,将通常的Web服务器(如Apache Server,Microsoft IIS,Netsacpe Enterprise Server和Lotus Domino Go WebServer)增强为基于Java的Web应用服务器。作为IBM电子商务应用架构的核心,WebSphere应用服务器提供了无限的扩展性,允许用户利用IBM或其它厂商提供的Java技术扩展其运行环境。 

WebSphere应用服务器满足维护一个Web站点的任何需求:简单安装,图形用户界面(方便Servlet管理),基于Web的远程管理和安全特性。它支持标准的Java Servlet(包括Java Server Page scripts),并增强其服务,例如会话状态,用户描述文件,通过连接管理器(连接缓冲区)实现高性能的数据库访问。利用IBM Connector系列,实现与后台系统(CICS,IMS,MQSeries)的连接。WebSphere应用服务器支持Enterprise Java Beans(EJB)编程模型及CORBA。联合Enterprise Java Server(EJS)和一个Java Object Request Broker(ORB),可以通过IIOP访问分布的对象,利用这个标准的、广泛的编程模型,可在您的Web应用中实现对各种商业对象的访问和运行服务。 

Microsoft Transaction Server 

Microsoft Transaction Server (MTS) 2.0是 Windows NT 的一个重要特性,它采用Microsoft 组件对象模型 (COM) 技术,简化以服务器为中心的应用程序的开发和配置。MTS 2.0 是在Windows NT 上构建和配置基于COM 的应用程序的最简便的方法。MTS 完全分成三层结构,从表示层到应用逻辑, 这使 MTS 开发人员在构造他们的应用程序时,就象收集一组单用户COM 组件,然后在相应的层设置这些组件一样。 

MTS 2.0 提供全面的组件功能,如自动事务支持、简单但强大的基于角色的安全性、访问各种数据库及消息队列产品等。 

IIS(Microsoft Internet InformationServer)与 MTS 2.0 集成 ,使用MTS 进行许多运行时刻服务,如事务管理。事务支持使 IIS Active Server Pages能够在数据完整性的完全保护下访问数据库、主机应用程序和消息队列。MTS集成还给IIS 提供进程来防止单个故障影响Web站点的其它部分,增强的运行时刻服务如线程和连接池提高了性能,并简化了组件管理。MTS 2.0 与MSMQ(Microsoft Message Queue Server)的集成使基于 MTS 的应用程序能够以可靠、松散耦合的方式通信。MSMQ 操作 (如发送和接收)自动得益于MTS事务以保护数据完整。MTS 2.0 与 Microsoft SNA Server 4.0 的集成有助于主机应用程序的构建及相应的事务管理。 

Oracle Application Server 

Oracle应用服务器提供了一个开放的标准架构,是开发部署Web上的应用的理想平台。它的伸缩性、分布架构和高度数据库集成是支持关键事务,交易型应用的基础,通过采用Netscape和Microsoft HTTP服务器,提供了易于使用的界面,并为Oracle方案提供了简易的升级方法。 

以符合CORBA2.0标准的ORB为基础,Oracle Application Server将应用程序插件(Application Cartridge)与所有系统服务作为分布对象。这样的设计使应用处理能被分散于数部主机,有效而经济地解决性能瓶颈。与其它Web解决方案比较起来,Oracle Application Server架构本身即保证其可扩展性。 

Oracle Application Server是联系数据网络应用程序和数据库最简单的方法。内含的PL/SQL插件(PL/SQL Cartridge)使出版数据库内的资料非常快速而简单。当企业需出版动态资料讯息时,传统进行静态内容设计的Web服务器需撰写单调且困难的脚本,Oracle Application Server的应用程序插件将使这些工作变得毫无需要。集成各种类型数据库、旧型主机系统(legacy system)与网络运算、瘦客户端时,Oracle Application Server的表现尤其杰出。 

以对所有网络客户端提供跨平台支持为基础,Oracle Application Server提高对HTML、Java、CORBA、DCOM等各种组件模型提供的易于扩展的能力。 

SilverStream 

SilverStream是一个全面的集成产品。它既包含了高性能的应用服务器,又包含了高效的开发环境。在统一的界面中,既支持HTML开发,又支持Java开发;既支持一般数据,又支持多媒体数据。特别是,许多服务器基于对Web的扩充,而SilverStream则基于对标准的完整集成。它使用HTTP1.1进行客户通讯,SMTP/POP3进行邮件操作,JNDI/LDAP和X.509进行认证,SSL3.0进行加密,SNMP进行系统管理,CORBA,RMI和COM和远程对象通讯,JDBC/ODBC用于数据存取。 

SilverStream具有完整的集成开发环境——可视化、事件驱动工具和单一且一致的界面。所以无论你是构造数据驱动的HTML网页、Java应用程序或事物对象,利用SilverStream提供的丰富的函数,都能快速、方便的实现。 

用户可以使用SilverStream管理控制台来管理和监控任何事情,这包括安全性、服务器统计数据、均衡负载能力、数据库、电子邮件等等,或者通过SilverStream管理应用编程接口,创建自己的管理应用程序。这无疑给用户提供了很大的灵活性。 

SilverStream可连接的数据源非常广泛,不管是存储在关系数据库中,还是存储在IBM主机中,不管是您自己开发的系统,还是SAP、Notes、CICS、Peopsoft,都可以统一在SilverStream中。 

SilverStream为获取最大的吞吐量和均衡性作了优化,而并未牺牲其他性能。它的应用级触发器技术,使得推技术的应用简单而自然。 

Sybase Enterprise Application Server 

Sybase Enterprise Application Server 3.0(EA Server)是Sybase Internet应用开发包Enterprise Application Studio 3.0中的重要组成部分,它将Sybase 的组件事务处理服务器Jaguar CTS 和Web 应用服务器PowerDynamo 紧密集成并加以发展,是同时实现Web OLTP 和动态信息发布的企业级应用服务器平台,并且支持所有标准的组件模型,包括JavaBeans、COM和CORBA等。 

Jaguar CTS支持基于各种组件模式和客户类型的应用的迅速开发和提交,而PowerDynamo 支持标准的Web技术,二者的联合对于要求动态页面服务、基于组件的业务逻辑和事务处理的Web 应用非常有利。PowerDynamo 的模板和脚本语言能够处理任何数据和业务逻辑,并按客户端需求生成相应的HTML 页面,送往Web 服务器,它通过嵌入在模板中的SQL 指令访问数据,通过调用Jaguar CTS 组件的方法访问复杂的业务逻辑。 

EA Server 可以支持多种客户类型。客户端可以用HTML、Java、ActiveX、PowerBuider等工具开发或是它们中几种工具组合开发。原有的应用程序可以完美地被移植到新的应用环境中,使得客户端应用可以根据它们的实现特征选择合适的开发工具。