服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

透视应用服务器


  由于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计划要适应大规模系统,与其它第三代产品的差距会逐渐缩小。不过,第三代产品,不管哪种结构都有满足大规模、高可靠性系统所要求的技术条件。

扫描关注微信公众号