Web服务性能构成要素

日期: 2008-10-20 作者:Bill Brogden翻译:杨君 来源:TechTarget中国 英文

自从Web服务被当作应用程序后,依照响应时间和存储需要,Web服务的性能就成为了我们要考虑的主要因素。使用XML和SOAP是Web服务高效性的最大障碍,许多工具包的开发者都在解决性能问题方面付出了努力。本文的目的就是将Web服务的构成分成几个要素。   ·信息传递  ·信息分析  ·建立服务对象  ·后端流程  ·建立响应  ·信息传递   一般来说REST服务要求非常紧密,而SOAP信息要求相对于整个庞大的信息规模而言有效负荷的规模就很小了。

SOAP信息中命名空间引用的激增也会增加对带宽的要求。我之前在一篇文章中看到的Fast Infoset标准意在使SOAP信息更为紧凑,分析更为迅速。Su……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

自从Web服务被当作应用程序后,依照响应时间和存储需要,Web服务的性能就成为了我们要考虑的主要因素。使用XML和SOAP是Web服务高效性的最大障碍,许多工具包的开发者都在解决性能问题方面付出了努力。本文的目的就是将Web服务的构成分成几个要素。

  ·信息传递
  ·信息分析
  ·建立服务对象
  ·后端流程
  ·建立响应
  ·信息传递

  一般来说REST服务要求非常紧密,而SOAP信息要求相对于整个庞大的信息规模而言有效负荷的规模就很小了。SOAP信息中命名空间引用的激增也会增加对带宽的要求。我之前在一篇文章中看到的Fast Infoset标准意在使SOAP信息更为紧凑,分析更为迅速。Sun公司公司的开放源Glassfish服务器项目包括Fast Infoset实施,但是我不能肯定是否有人在用它。

  这里还有许多建立XML信息的方法。有些人将其概括为标准的“gzip”压缩算法,这种算法可以建立一个良好的紧凑信息。由于gzip可以用几种语言编写,所以在HTTP服务器的应用更为广泛,并且很容易实施。

  信息分析

  在这一步骤中,服务必须通过一些工具包,和参数方法来确定要求的目标。目标和参数可以直接通过RESTful Web服务从URL中进行抽取,但是需要分析SOAP信息。

  人们在改进SOAP要求的XML分析阶段耗费了很大精力。所有的XML分析程序都要扫描引入字符并且要识别多个XML要素,将所有的要素数据打包到特定的编程语言,例如Java对象。这些分析程序的不同之处在于如何处理这些数据。

  在文档对象模型或者是DOM中,当内存对象复制原有XML文档时结束时,所有的XML标签和真正的请求数据也随之结束了。创建DOM会占有很多CPU内存和时间。
  DOM的一个好处就是像XPath 这样的工具可以通过使用简化标记定位数据。原有的Apache SOAP工具箱使用DOM,但是速度很慢,还会占很大内存。

  XFire和Axis2工具箱项目使用的是构造SOAP的最新方法,该方法意在通过使用事件驱动的分析程序来提高性能,例如StAX。StAX被称为“牵引”分析程序,因为它能生成所需的事件,服务可以借此找到一切所需的数据,在整个SOAP信息读取之前就可以停止分析,所占的内存也相对较小。

  XFire工具包的高速度是出了名的,它于2005年建成。并于2007年五月在市场发布了XFire1.2.6版本。但是当 XFire项目和IONA公司的Celtix项目结合在一起组成了一个叫做CXF的Apache项目时,CXF却从Axis2项目分离了出来,所以现在是两个由Apache Software Foundation封装的完全分离的开放源高效Web服务项目。在这些基于StAX的工具包中,分析和建立服务对象同步进行。

  建立服务对象

  建立服务对象通常指当向服务要求抽取价值时所发生的“数据绑定”步骤,这些价值传递的方法会完成服务要求。通过这些基于Java的服务,建立新的对象会将抽取的价值进行初始化。

  这个步骤中有一个不断扩散的方案,有些人为Web服务设计了全新的的方案,有些人则是在现有的应用框架上安装了插件例如Spring。从这个基准点来看,数据绑定会使生产量得到大大的提高。CXF和Axis2试图尽可能的支持更多的数据绑定方案。常用的数据绑定方法包括:

  ·JAXB: XML绑定的Java应用程序接口是标准Java数据库的组成部分
  ·POJO: Axis2和CXF都为建立在Plain Old Java Objects基础上的Web服务建立提供至少一个以上的方法
  ·Spring框架对象:Spring是一个广为应用的开放源应用框架
  ·Castor:对于Java来说是一个流行的开放源XML绑定框架

  后端流程

  借于Web服务的设计的原因,后端流程,例如,和其它阶段相比,数据搜索整理会占用的时间更久。如果你的潜在Web服务也属于这种类型,你就没必要按照这个标准选择Web服务,这个标准只能衡量使用仿造结果的响应时间。

  能够扑捉复杂后端流程的标准技术是一个全新的理念。通过复制要求的频率,可以成倍提高速度。微软公司为建立Web服务量身打造的工具使用的是ASP.NET,ASP.NET含有一个机制,程序设计人员依靠这个机制发出指令,指定系统必须将输出复制到储藏处,这些是输出将在储藏处保留一段时间。

  建立响应

  在原有Apache SOAP工具箱内,通过建立输出信息的DOM来创建响应,并将其序列化到响应流。很显然这样效率很低。通常用于数据绑定的不同工具箱也会提供对象数据序列化入XML的机制。这主要取决于Web服务工具例如Axis2和CXF,以便将数据封装到正确的SOAP外壳中。

相关推荐