ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.03KB ,
资源ID:9239528      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9239528.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Webservice框架性能对比.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Webservice框架性能对比.docx

1、Webservice框架性能对比几种流行Webservice框架性能比照、拼接1摘要开发webservice应用程序中离不开框架的支持,当open-open列举的就有很多种,这对于开发者如何选择带来一定的疑惑。性能Webservice的关键要素,不同的框架性能上存在较大差异,而当前在官方、网络资料中可以方便的找到各自框架的介绍,但是很少有针对不同框架性能测试数据。本文选择了比拟流行几个框架:Apache Axis1、Apache Axis2、CodehausXFire、Apache CXF、Apache Wink、oss RESTEasy、sun JAX-WS最简单、方便、阿里巴巴 Dubbo

2、除外等,采用java作为测试用例,通过本机和远程两种进展测试方式,对这几种框架进展了性能测试,并对测试结果分析和性能比拟,最后并对性能优异的框架进展了推荐。目前三种主流的web服务实现方法: REST新型:表象化状态转变 (软件架构风格RESTEasy、Wink、CXF、Axis2.SOAP比拟成熟:简单对象访问协议Xfire、Axis2、CXF、Axis1XML-RPC淘汰:远程过程调用协议慢慢被soap 所取代REST 简单易用,效率高,貌似未来有很大的开展空间,也有宣称rest性能个方便比soap强大的,已经有很多框架宣称对rest进展支持比如spring、struts. XX观点SOA

3、P 成熟度较高,安全性较好关键词:Axis1、Axis2、XFire、CXF、Spring、SOAP、StAX、WSDL2 框架介绍2.1 Apache Axis1Axis本质上就是一个SOAP引擎Apache Axis is an implementation of the SOAP,提供创建服务器端、客户端和网关SOAP操作的根本框架。但Axis并不完全是一个SOAP引擎,它还包括: 是一个独立的SOAP服务器。 是一个嵌入Servlet引擎例如Tomcat的服务器。 支持WSDL。 提供转化WSDL为Java类的工具。 提供例子程序。 提供TCP/IP数据包监视工具。2.2 Apache

4、 Axis2Apache Axis2相比Apache Axis1更加有效、更加模块化、更加面向xml,支持容易插件模块扩展新功能和特性,例如安全和可靠。Apache Axis2是基于Apache AXIOM,它是一个高性能、pull-based XML对象模型。Apache Axis2的关键特性: 解析xml更快。采用自己的对象模型和StAX (Streaming API for XML)。 更低的内存占用。 支持热部署。新服务参加到系统,无需重启服务。 支持异步webservice、 MEP支持,灵活支持在定义的Message Exchange Patterns (MEPs) 更加灵活。引擎

5、给开发人员提供了充足的自由度可扩展客户头信息处理、系统管理、 更加稳定性。 传输框架不依赖于具体协议。为集成和传输协议SMTP, FTP, message-oriented middleware, etc有一个简单和抽象,引擎核心是完全独立于具体的传输协议。 支持WSDL。支持、。 方便集成其他组件Add-ons。几个web services已经被集成,包括:WSS4J for security (Apache Rampart), Sandesha for reliable messaging, Kandulawhich is an encapsulation of WS-Coordinati

6、on, WS-AtomicTransaction and WS-BusinessActivity. 良好的扩展性。2.3 CodehausXFireXFire核心是一个轻量的基于STAX消息处理模型,用来与SOAP消息交互,它支持不同类型的绑定机制、容器和传输协议。支持webservice标准- SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc. 高性能SOAP STACK 可插拔绑定POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support 通过Java1.5 和

7、1.4(mons attributes JSR 181 syntax)使用JSR 181 API配置服务 支持多中传输协议- HTTP, JMS, XMPP, In-JVM, etc. 可嵌入的和直观的API 支持Spring, Pico, Plexus, and Loom 支持I 客户端和服务端stub代码生成 支持JAX-WS early access2.4 Apache CXFApache CXF是一个开源服务框架。Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下

8、简称为 CXF。CXF 继承了Celtix和XFire两大开源项目的精华,比如:JAX-WS and JAX-RS,主要特性包括: 支持Web services标准。包括:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation和WS-SecurityPolicy. 支持不同类型前端开发模型。CXF实现了JAX-WS APIs,支持JAX-RS开发。 容易使用。CXF设计的简洁和直观,具有简洁APIs迅速的构建基于代码的服务,Mav

9、en插件使得工具集成更加容易、JAX-WS API支持、Spring 2.x XML使得配置更加容易。支持二进制和遗留协议。CXF被设计为可插拔的架构,在不同的传输协议结合下,不仅支持XML,也支持非XML类型绑定,例如:JSON和CORBA。2.5 RESTEasyXX观点较好RESTEasy是oss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Java应用程序。它是JAX-RS规X的一个完整实现并通过JCP认证。作为一个OSS的项目,它当然能和OSS应用服务器很好地集成在一起。但是,它也能在任何运行JDK5或以上版本的Servlet容器中运

10、行。RESTEasy还提供一个RESTEasy JAX-RS客户端调用框架。能够很方便与E、Seam、Guice、Spring和Spring MVC集成使用。支持在客户端与服务器端自动实现GZIP解压缩。资料少无法比拟有较专业的人士对CXF、Restlet、RESTEasy、Jersey框架测试【数据】,他说从性能上看RESTEasy是最好的,Jersey其次但Jersey连可查阅的英文文档都比拟少故个人不推荐使用,cxf和Restlet最差,Dubbo 个人观点-无理由Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Sp

11、ring框架无缝集成。资料少无法比拟2.7java6JAX-WSJAX-WS2.0 (JSR 224)是Sun新的web services协议栈JAVA中有三种WebService规X,分别是JAX-WSJAX-RPC、JAX-RS、JAXM&SAAJ。JAX-WSJava API For XML-WebService,JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。早期的JAVA Web服务规XJAX-RPCJava API ForXML-Remote Procedure Call目前已经被JAX-WS 规X取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS

12、 并不完全向后兼容JAX-RPC。2.8 Apache WinkREST(Representational State Transfer) based Web Service【c:iknowdocsharedatacur_workbaike.sosov812054.htm】是相对于传统的Web Service(SOAP+WSDL+UDDI)而提出的。传统的Web Service可以很好的解决异构系统之间的通信问题,但是需要首先定义好XML格式的合同(WSDL),client和server都必须严格遵守协议,不容易升级以与集群伸缩。REST Web Service不需要事先定义格式,传输的内容也

13、可以依据不同的client变化(json,xml,html等),最重要的是使用源URL来唯一定位资源,对资源的增删改查映射为HTTP的四个方法,无状态传输,具有非常好的伸缩性。Apache Wink就是一个纯Java的REST框架。它完整的实现了JSR 311并扩展了局部功能,此外还提供了良好的扩展性,难能可贵的是还可以与流行的Java框架Spring无缝集成。目前该项目还在开发中。所谓框架无非就是定义好格式,提供一些工具和钩子,让开发人员可以专注于业务逻辑的开发。3 测试准备表格1测试根本元素测试条件描述主机环境B测试机:CPU:1.83GHz;内存:1GWeb服务框架应用环境客户端代码pu

14、blic void testgetVersion() throws java.lang.Exception String url = localhost:8081/boss/services/Calculate; / 客户端初时化时间 long startTime = System.currentTimeMillis(); / 客户端stub代码分别是axis1/axis2/xfire/cxf框架 wsdl2java生成CalculateCalculateHttpportStub stub = new CalculateCalculateHttpportStub(url); long endT

15、ime = System.currentTimeMillis();System.out.println(client init time is: + (endTime - startTime); / 连续调用10次 for (int i = 0; i 10; i+) long startTime1 = System.currentTimeMillis(); String ret = stub.getVersion().get_return(); long endTime1 = System.currentTimeMillis();System.out.println( + i + elapse

16、d time is: + (endTime1 - startTime1) + ms);System.out.println(stub.getVersion() is: + ret); 服务端代码public String getVersion() 注:接口无任何业务逻辑,只返回一个字符串:Hello;测试方法本机接口测试,客户端和服务端都在A测试机上进展;远程接口测试,A测试机作为客户端,B测试机作为服务器。本次测试是在局域网内完成。结果精度数字准确到小数点后两位名词解释服务器端:部署到服务器的程序。客户端:发起请求调用服务器上webservcie的程序。客户端初时化时间:发起接口调用时,初始

17、化客户端java对象所需时间。例如:CalculateCalculateHttpportStub stub = new CalculateCalculateHttpportStub(url); / 由框架 wsdl2java生成客户端stub表格2在端对端性能上,一个客户端驱动程序使用了一个胖客户端Web服务堆栈来发送和承受SOAP请求Webservice服务端Webservice客户端Webservice stackSOAP over HTTP4 性能测试4.1 测试方法本次假定在一样网络、主机环境条件下进展测试,因此性能的差异主要是由不同框架实现机制的所决定。 采用两种方式测试:本机测试、

18、远程测试。 服务器端分别采用:axis1、axis2、xfire、CXF,对于选定的服务器端,用不同框架对应的工具包wsdl生成客户端stub代码进展测试。 服务端接口内部没有复杂业务逻辑,客户端调用时,仅仅返回一个字符串。 每次运行,采用java循环方式调用10次服务端接口,并记录下从发起到返回结果的时间。4.2 测试结果限于篇幅,本文仅提供了:以CXF框架为服务端的详细测试结果,与其各个框架的综合后测试结果。表格3以CXF作为服务端测试详细结果本机测试结果单位:ms服务器端cxf客户端cxfaxis1客户端初始化第1组第2组第3组第4组第5组第1组第2组第3组第4组第5组254725942

19、563257825632569422422407406421连续10次调用接口测试第1组第2组第3组第4组第5组第1组第2组第3组第4组第5组12972812812822662342192192342192252000151501600163016160016151616040000000001551600001516150060151501600016070000016161601681500000001509000015161516016100161615000016010次平均值后9次平均值7777远程测试结果单位:ms服务器端cxf客户端cxfaxis1客户端初始化第1组第2组第3组第

20、4组第5组第1组第2组第3组第4组第5组270325472578256325312584406406422407422连续10次调用接口测试第1组第2组第3组第4组第5组第1组第2组第3组第4组第5组134428128128129721923423523468720016161616015161630160006216000416016150471616151650150015161515160600151603100015701600161616161508150000310161616901616150311500010000015311615161510次平均值50后9次平均值77表格4

21、不同框架本机和远程测试结果本机测试结果单位:ms服务器端axis2axis1xfirecxf客户端axis2axis1axis1axis2xfire+springaxis1cxfaxis1客户端初始化113813250256910次中的初次调用值102222510次平均值后9次平均值25远程测试结果单位:ms客户端初始化1040axis177202994258410次中的初次调用值6061010119010次平均值后9次平均值4.3 结果分析从数据可以看出,有下面几个特点: 客户端初次调用,初始化客户端stub对象时,大约在:600ms2500ms。由于需要建立网络连接,初始化java相关对象

22、,因此耗时较长。 客户端初始化stub后,接口初次调用,大约在:400ms1000ms。相比后续的接口调用时间最长。 在第一次调用完毕后,随后的调用中,性能都明显提升。大约在:7ms30ms。 本机测试与远程测试,性能上差距很微小,在高速的局域网内,性能差异几乎可以忽略。 在一样的服务端下,采用不同框架生成的stub代码调用时,时间上也存在一定的差异。实际应用中,接口的调用都是在网络的不同的机器之间进展,本文也重点关注远程调用测试结果,在测试结果比拟上,可以看出: 最优组合是最差组合性能的5倍多。 最优的组合为:cxf客户端+ cxf服务端,6ms左右。 最差的组合为:axis1客户端+ ax

23、is1服务端,32ms左右。 CXF作为服务端,对于不同的客户端调用时,性能最优。从以上的结果进展分析得出用Axis2与CXF作为服务器端效率是比两外两者Axis1与xfire要高,所以下面就对CXF与Axis2进展比照5 选择框架的方法1.选择能够对我们的开发过程提供更多、更好帮助的Web开发框架CXF与Axis2都是apache的开源框架,也是目前比拟流行的webservice框架,XX加个人观点2.开发框架的学习一定要简单,上手一定要快,没有什么比使用能得到更深的体会。那些动不动就需要半个月或者一个月学习周期的框架,实在是有些恐怖。cxf学习本钱比axis2低【Axis2允许自己作为独立

24、的应用来发布Web Service,并提供了大量的功能和一个很好的模型,这个模型可以通过它本身的架构modular architecture不断添加新的功能。有些开发人员认为这种方式对于他们的需求太过于繁琐。这些开发人员会更喜欢CXF。】【CXF更注重开发人员的工效ergonomics和嵌入能力embeddability。大多数配置都可以API来完成,替代了比拟繁琐的XML配置文件, Spring的集成性经常的被提与,CXF支持Spring2.0和CXFs API和Spring的配置文件可以非常好的对应。CXF强调代码优先的设计方式code-first design),使用了简单的API使得从

25、现有的应用开发服务变得方便。】XX观点3.一定要能得到很好的技术支持,在应用的过程中,或多或少都会出现这样或者那样的问题,如果不能很快很好的解决,会对整个项目开发带来影响。一定要考虑综合本钱,其实这是目前应用开源软件最大的问题,碰到问题除了死肯文档就是查阅源代码,或者是网上搜寻解决的方法,通常一个问题就会导致1-2天的开发停顿,严重的甚至需要一个星期或者更长,一个项目有上这么几次,项目整体的开发本钱嗖嗖的就上去了。所以个人感觉应该选择比拟流行的框架,起码碰到问题还能上网搜索4.开发框架结合其他技术的能力一定要强个人感觉和下同5.开发框架的扩展能力一定要强。在好的框架都有力所不与的地方,这就要求

26、能很容易的扩展开发框架的功能,以满足新的业务需要。同时要注意扩展的简单性,如果扩展框架的功能代价非常大,还不如不用呢。axis2与cxf 都支持很多优秀的框架上已提到,但axis2扩展性比cxf要好,axis2不仅支持java对c/C+提供支持个人观点【RESTEasy也能支持许多比拟优秀的框架】XX加个人观点6.开发框架最好能提供可视化的开发和配置,可视化开发对开发效率的提高,已经得到业界公认。暂时无法提供观点7.开发框架的设计结构一定要合理,应用程序会基于这个框架,框架设计的不合理会大大影响到整个应用的可扩展性。暂时无法提供观点8.开发框架一定要是运行稳定的,运行效率高的。框架的稳定性和运

27、行效率直接影响到整个系统的稳定性和效率。从上面的测试来看,cxf的效率要高于axis2,不知道在大并发量的时候系统的稳定性和安全性9.开发框架一定要能很好的结合目前公司的积累。在多年的开发中已有了很多积累,不能因为使用开发框架就不能再使用了,那未免有些得不偿失。暂时无法提供观点10.选择开发框架另外要注意的一点就是:任何开发框架都不可能是十全十美的,也不可能是适应所有的应用场景的,也就是说任何开发框架都有它适用的X围。所以选择的时候要注意判断应用的场景和开发框架的适用性。暂时无法提供观点6 完毕语Apache CXF是CodehausXFire的第二代产品,目前在不同框架中性能最优,应该是开发者不错的选择,这与它本身的架构设计不无关系。相比其他框架,CXF具有几个突出的特性:支持JAX-WS、Spring集成、Aegi数据绑定、支持RESTful services、支持WS-*、Apache协议、代码实现简洁。Apache Axis2是Apache Axis1的第二代产品,架构上也非常不错,关键特性:支持多语言C/C+、支持各种规X、可插拔模块化设计、支持热部署等。与CXF相比性能也非常优异。RES

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1