当前位置:Linux教程 - Linux业界 - 透视应用服务器

透视应用服务器

透视应用服务器
讨论主题: 透视应用服务器

  由于Internet的发展,企业信息系统所扮演的角色发生了根本变化。在Internet
上开放企业系统,可以将其中的信息提供给直接消费者和贸易伙伴。这是过去无法想
象的、崭新的环境。这个变革来自于应用服务器,这个环境的继续发展有赖于应用服
务器的进展。

沿 革 篇

  应用服务器(Application Server)是适应业务需求、将高级应用作为Web功能
的产品。但是,现在市场上销售的应用服务器产品,从内容和功能上相差甚远。各路
厂商迎合市场需求,结合自家特色技术,推出了各色应用服务器产品,虽然都冠以
“应用服务器”,却难识庐山真面目。为了准确认识、正确选择应用服务器,在此我
们透过其沿革,分析探讨各色应用服务器的长短优劣。

第一代:基于CGI

  基于CGI(Common Gateway Interface)的应用服务器以微软的IIS(Internet Information Server)为代表。IIS原本是用来发布静态HTML的Web服
务器产品,后来通过CGI、ISAPI(Internet Server Application Programming
Interface)等应用接口和服务器端的脚本等扩充技术,演化成应用服务器。现在,
Internet上的中小规模Web应用,基本上都是这种形态。特别是服务器端脚本,只要
将脚本语言嵌入HTML中,就能很简单地实现Web应用。所以如果系统功能单纯,初学
者也能很容易地构筑系统,这是基于CGI的应用服务器的优点。可惜用这种应用服务
器,难以构筑嵌入复杂业务逻辑的系统,另外在应对来自多个用户的处理要求的可伸
缩性方面也存在问题。

第二代:基于Java

  近年来出现的应用服务器多数是这种类型的产品,在服务器端运行Java应用,在
客户端经由Web服务器来利用其功能。这种情况下,有2种方式:一是客户端也是
Java Applet;另一种客户端是HTML页面。

  之所以要特意选择用Java来构筑服务器端的应用功能,最主要的理由是,因为近
年来在应用服务器上构筑业务逻辑的需求日益高涨。90年代,是主机系统的统治地位
开始动摇、2层C/S系统崛起、系统结构发生巨大变革的时代。特别是C/S系统构筑技
术,可说是日新月异,就连主力开发语言,也从C到4GL,而后变成VB,象走马灯一样
换代升级。结果,一时间倍受推崇的C/S系统,很多情况下在企业内已经成了包袱。因
此,要凡独自构筑关键业务系统的场合,以基于Java的Web应用来构筑的逐日增加。
采用Java的服务器端应用,不管是NT、UNIX还是主机系统都能运行,而且还能利用
Internet、中间件和分布对象等新功能。另外,通过将Java应用配置在多个节点,可
实现负载平衡,这样就能构筑可与主机系统相匹敌的大型系统。所以,这种系统是作
为先进的金融系统构筑手段,被越来越广泛的采用,很有生命力。

  但是,在至今的基于Java的Web应用中,对于数据库和中间件的访问,是用直接
使用API的专有方式实现的,在复用性和应对未来技术变革的能力上,仍有尚待解决的
课题。

第三代:适应Java组件技术

  适应Java组件的应用服务器技术,可能对系统开发产生划时代的影响。许多应用
服务器产品,都在开足马力加速朝第3代进军。这里所说的Java组件,是以EJB
(Enterprise JavaBeans)为中心的服务器端的软件组件技术。EJB是目前以Java语
言为前提的组件技术规范,由OMG(Object Management Group)制定的CORBA组件,
就是参考EJB的多种语言版的组件模型。在不久的将来,这些组件模型可望具有互操作
性和统一的技术规范。

选 择 篇

  选择应用服务器应从对应用服务器的要求及实现这些要求的“相应技术”着手,
来说明应用服务器的选择要领。

  开发效率 在飞速发展的电子商务市场竞争中,要求用Web系统在短期内能构筑先
进的商业模式,开放适应新商业模式的Web应用功能,以博得广大用户的支持。这点至
关重要。要想在竞争中立于不败之地,必须“以快取胜”,必须选择开发效率高的Web
应用产品。

  用Java构筑应用服务器已经成为潮流。因此最重要的是,要有用Java能够进行高
效开发的综合环境(Integrate Development Environment)。IBM和Inprise的
Java开发环境,捆绑在自家的软件包中;而BEA和Oracle则利用其它公司的Java开发
软件包作为Java开发环境。目前存在的问题是,在这些环境中应用服务器与Java开发
环境的集成性还很不完善。通常在Java开发环境中,能提供详细测试用的查错功能,
如分步执行、断点设定等;但是能对应用服务器实施综合查错的工具很少。因此,在
客户端的本地环境下完成详细查错之后,要将构筑的模块移到应用服务器,实施执行
水平的测试。这样的测试环境,对于习惯于开放系统中的查错环境的开发者来说,不
能说是完善的。人们渴望有在应用服务器中能进行详细查错的、综合性分散型查错工
具。

  在开发应用服务器时,客户端用户接口构筑的生产性也是问题。客户端界面的制
作方法,有用Applet的,还有使用Servlet或HTML制作的。其中,用Applet制作界面
时,在Java开发环境中能提供编辑、制作界面的RAD(Rapid Application
Development,快速应用开发)功能,所以可以高效地进行开发。但在实际应用服务
器开发中,用HTML制作界面的占多数。这种情况下,在应用服务器开发环境下,能够
直接编辑HTML界面接口的产品较少。为了解决这个问题,由JSP(JavaServerPage,
利用Java动态生成Web页的服务器端内容脚本)来记述基于HTML的界面图象的方法将
逐渐成为标准,可望能提供使用JSP的RAD开发功能。

  复用性 要再利用原来的业务逻辑,同时还要添加新的组件,才能提升系统水平
和业务处理能力。在考虑技术实现时,既要压缩开发成本,又要构筑能迅速应变的系
统,这对于提高企业的竞争能力至关重要。正由于此,人们渴望系统既能复用在应用
服务器中构筑的业务逻辑,又要能充分适应、跟踪新的业务需求。

  在Web应用开发中,充分、有效、活用EJB,是提高复用性的技术关键。所谓
EJB,就是以将服务器端的业务逻辑部件化为目标的Java组件技术,包括EJB服务器
(EJB执行环境)以及EJB组件(组件管理环境)。EJB包括Entity Beans和Session
Beans。Entity Beans是持久性对象,就是将数据库的数据可以作为对象部件来使
用。若用Entity Beans,就可以读取数据库上的数据、生成对象部件,并能将更新结
果反映到数据库上。这样的Entity Beans,目前都是由应用服务器端来提供的,但据
说Oracle等数据库厂商,计划要让Entity Beans在数据库端运行。Session Beans是
非持久性对象,临时生成的对象部件,用来将操作Entity Beans的业务逻辑部件化。
譬如,在不变更数据结构只修改业务规则的时候,只变更Session Beans即可。另
外,Session Beans也被用在与MQ和CICS这类中间件连接的场合。就是说,可以将经
由中间件、能访问主机系统等历史遗留业务的功能,进行部件化。这样,通过充分有
效的活用EJB,就可以将业务逻辑和对历史遗留系统的访问功能部件化,以实现复
用。

  可伸缩性和可靠性 过去的企业系统基本上是以本企业的用户为主,用户数也不
是太多。但用应用服务器构筑的系统,不仅是企业内部,通过Internet,可以对全世
界的顾客和商业伙伴开放。因此,在可伸缩性和可靠性方面,对于应用服务器就提出
了更高的要求。而且,由Internet所形成的电子商务市场在急速增长,交易额和用户
数也直线增长,而且这些用户是一天24小时不停的访问。因此,如果应用服务器不能
应对日益增大的处理量,就会贻误商机。

  负载平衡 要有把处理适当地分配给多个服务器,以求获得负荷分散的功能。由
于有负荷均衡功能,所以可以实现系统的大型化。

  分散事务处理 在用多个服务器处理关键业务时,数据更新中的一致性是个问
题。为了解决这个问题,要有相应的分散事务控制功能。

  DB Session Pulling(会话引入) 在应用服务器中,多个程序即使是同时访问
数据库,也必须确保事先定好的会话个数,以便能更有效的利用数据库。

  故障切换 为了提高系统的正常运行率,要准备待机(热备份)服务器,以便在
发生故障时,可以将处理转移到待机系统。

点 评 篇

  按照选择应用服务器的3个要素,给主要的应用服务器产品一个大致的定位。

生产性和复用性

  第一代产品的代表是Microsoft IIS,最近可以用Interdev、ASP(Active
Server Pages)和MTS(Microsoft Transaction Server)进行开发,但与第二
代、第三代产品相比,在内容上仍屈居下风。特别是要用IIS来构筑具有可伸缩性的系
统时,需要使用C++编码,生产性和复用性明显低下。相反,SilverStream,却有应
用服务器能用RAD制作界面和功能的特点,尤其是在新开发时生产性特别高,所以非常
适合想在短期内构筑系统、开始营业的场合。从3.0版本以后,SilverStream也适应
EJB。

  其它的第三代产品,生产性虽然不如SilverStream高,但有效利用EJB组件技术
的复用性可望得到提升。但必须要注意的是,EJB的设计难,一旦有误往往会造成系统
性能很低。

可伸缩性和可靠性

  第一代产品的可伸缩性和可靠性都较差。相反,SilverStream尽管是RAD开发环境,但要达到中等规模、中等可靠性水平,技术上还是充分的。今后,SilverStream计划要适应大规模系统,与其它第三代产品的差距会逐渐缩小。不过,第三代产品,不管哪种结构都有满足大规模、高可靠性系统所要求的技术条件。

  第三代产品各有特色,似乎不宜进行简单的比较。但从实际应用的角度,应该对每个产品的特点有所了解。

  BEA WebLogic 在适应EJB方面,技术超群。

  IBM WebSphere 虽然在适应EJB方面起步稍晚,但能有效活用MQ和CICS等中间件,所以可望在企业环境能获得广泛应用。

  Oracle Application Server 在系统体系结构上尚存在斟酌之处,数据库本身也要适应EJB,应用服务器和数据库在整体系统中各自所扮演的角色、分工还不明确。这个问题一旦解决,无疑这个产品是相当有诱惑力的。

  Netscape Application Server和NetDynamics 计划在2000年上半年将Netscape和SUN的产品集成起