几种流行Webservice框架性能对照
转自【http://blog.csdn.net/thunder4393/article/details/5787121】,写的非常好,以收藏。
1 摘要
开发webservice应用程序中离不开框架的支持,当open-open站点列举的就有30多种,这对于开发人员怎样选择带来一定的疑惑。性能Webservice的关键要素,不同的框架性能上存在较大差异,而当前在官方站点、网络资料中能够方便的找到各自框架的介绍,可是非常少有针对不同框架性能測试数据。本文选择了比較流行几个框架:Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等,採用java作为測试用例,通过本机和远程两种进行測试方式,对这几种框架进行了性能測试,并对測试结果分析和性能比較,最后并对性能优异的框架进行了推荐。
关键词:Axis1、Axis2、XFire、CXF、Spring、SOAP、StAX、WSDL
2 框架介绍
2.1 Apache Axis1
l 是一个嵌入Servlet引擎(比如Tomcat)的server。
2.2 Apache Axis2
l 解析xml更快。採用自己的对象模型和StAX (Streaming API for XML)。
l MEP支持,灵活支持在WSDL 2.0定义的Message Exchange Patterns (MEPs)
l 更加灵活。引擎给开发者提供了充足的自由度可扩展客户头信息处理、系统管理、
l 传输框架不依赖于详细协议。为集成和传输协议(SMTP, FTP, message-oriented middleware, etc)有一个简单和抽象,引擎核心是全然独立于详细的传输协议。
2.3 Codehaus XFire
XFire核心是一个轻量的基于STAX消息处理模型,用来与SOAP消息交互,它支持不同类型的绑定机制、容器和传输协议。
支持webservice标准- SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.
l 可插拔绑定POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support
l 通过Java1.5 和1.4(Commons attributes JSR 181 syntax)使用JSR 181 API配置服务
l 支持多中传输协议- HTTP, JMS, XMPP, In-JVM, etc.
l 支持Spring, Pico, Plexus, and Loom
2.4 Apache CXF
Apache CXF是一个开源服务框架。CXF可用前端编程APIs开发服务,比方:JAX-WS and JAX-RS,主要特性包含:
l 支持不同类型前端开发模型。CXF实现了JAX-WS APIs,支持JAX-RS开发。
l easy使用。CXF设计的简洁和直观,具有简洁APIs迅速的构建基于代码的服务,Maven插件使得工具集成更加easy、JAX-WS API支持、Spring 2.x XML使得配置更加easy。
l 支持二进制和遗留协议。CXF被设计为可插拔的架构,在不同的传输协议结合下,不仅支持XML,也支持非XML类型绑定,比如:JSON和CORBA。
3 測试准备
測试条件 |
描写叙述 |
主机环境 |
A測试机:CPU:1.60GHz;内存:1.37G |
B測试机:CPU:1.83GHz;内存:1G |
|
Web服务 |
axis1 1.3 |
axis2 1.2 |
|
xfire 1.2.6 |
|
应用环境 |
jdk 1.4、spring 2.x |
client代码 |
public void testgetVersion() throws java.lang.Exception { System.out.println("[" + i + "] elapsed time is: " + (endTime1 - startTime1) + " ms"); |
服务端代码 |
public String getVersion() |
測试方法 |
本机接口測试,client和服务端都在A測试机上进行; |
远程接口測试,A測试机作为client,B測试机作为server。本次測试是在局域网内完毕。 |
|
结果精度 |
数字精确到小数点后两位 |
名词解释 |
server端:部署到server的程序。 |
client:发起请求调用server上webservcie的程序。 |
|
client初时化时间:发起接口调用时,初始化clientjava对象所需时间。 |
表格 2在端对端性能上,一个client驱动程序使用了一个胖clientWeb服务堆栈来发送和接受SOAP请求 |
Webservice服务端 |
Webserviceclient Webservice stack |
SOAP over HTTP |
4 性能測试
4.1 測试方法
本次假定在同样网络、主机环境条件下进行測试,因此性能的区别主要是由不同框架实现机制的所决定。
l 採用两种方式測试:本机測试、远程測试。
l server端分别採用:axis1、axis2、xfire、CXF,对于选定的server端,用不同框架相应的工具包wsdl生成clientstub代码进行測试。
l 服务端接口内部没有复杂业务逻辑,client调用时,只返回一个字符串。
l 每次执行,採用java循环方式调用10次服务端接口,并记录下从发起到返回结果的时间。
4.2 測试结果
限于篇幅,本文仅提供了:以CXF框架为服务端的具体測试结果,及其各个框架的综合后測试结果。
本机測试结果(单位:ms) |
||||||||||||
server端 |
cxf |
|||||||||||
client |
cxf |
axis1 |
||||||||||
client初始化 |
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
|
2547 |
2594 |
2563 |
2578 |
2563 |
2569 |
422 |
422 |
407 |
406 |
421 |
415.6 |
连续10次调用接口測试 |
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
1 |
297 |
281 |
281 |
282 |
266 |
281.4 |
234 |
219 |
219 |
234 |
219 |
225 |
2 |
0 |
0 |
0 |
15 |
15 |
|
0 |
16 |
0 |
0 |
16 |
|
3 |
0 |
16 |
16 |
0 |
0 |
|
16 |
15 |
16 |
16 |
0 |
|
4 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
15 |
|
5 |
16 |
0 |
0 |
0 |
0 |
|
15 |
16 |
15 |
0 |
0 |
|
6 |
0 |
15 |
15 |
0 |
16 |
|
0 |
0 |
0 |
16 |
0 |
|
7 |
0 |
0 |
0 |
0 |
0 |
|
16 |
16 |
16 |
0 |
16 |
|
8 |
15 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
15 |
0 |
|
9 |
0 |
0 |
0 |
0 |
15 |
|
16 |
15 |
16 |
0 |
16 |
|
10 |
0 |
16 |
16 |
15 |
0 |
|
0 |
0 |
0 |
16 |
0 |
|
10次平均值 |
32.8 |
32.8 |
32.8 |
31.2 |
31.2 |
32.16 |
29.7 |
29.7 |
28.2 |
29.7 |
28.2 |
29.61 |
后9次平均值 |
3.444 |
5.222 |
5.222 |
3.333 |
5.111 |
4.467 |
7 |
8.667 |
7 |
7 |
7 |
7.333 |
远程測试结果(单位:ms) |
||||||||||||
server端 |
cxf |
|||||||||||
client |
cxf |
axis1 |
||||||||||
client初始化 |
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
|
2703 |
2547 |
2578 |
2563 |
2531 |
2584 |
406 |
406 |
422 |
407 |
422 |
412.6 |
连续10次调用接口測试 |
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
|
1 |
344 |
281 |
281 |
281 |
297 |
296.8 |
219 |
234 |
235 |
234 |
687 |
321.8 |
2 |
0 |
0 |
16 |
16 |
16 |
|
16 |
0 |
15 |
16 |
16 |
|
3 |
0 |
16 |
0 |
0 |
0 |
|
62 |
16 |
0 |
0 |
0 |
|
4 |
16 |
0 |
16 |
15 |
0 |
|
47 |
16 |
16 |
15 |
16 |
|
5 |
0 |
15 |
0 |
0 |
15 |
|
16 |
15 |
15 |
16 |
0 |
|
6 |
0 |
0 |
15 |
16 |
0 |
|
31 |
0 |
0 |
0 |
15 |
|
7 |
0 |
16 |
0 |
0 |
16 |
|
16 |
16 |
16 |
15 |
0 |
|
8 |
15 |
0 |
0 |
0 |
0 |
|
31 |
0 |
16 |
16 |
16 |
|
9 |
0 |
16 |
16 |
15 |
0 |
|
31 |
15 |
0 |
0 |
0 |
|
10 |
0 |
0 |
0 |
0 |
15 |
|
31 |
16 |
15 |
16 |
15 |
|
10次平均值 |
37.5 |
34.4 |
34.4 |
34.3 |
35.9 |
35.3 |
50 |
32.8 |
32.8 |
32.8 |
76.5 |
43.37 |
后9次平均值 |
3.444 |
7 |
7 |
6.889 |
6.889 |
6.244 |
31.22 |
10.44 |
10.33 |
10.44 |
8.667 |
14.22 |
本机測试结果(单位:ms) |
||||||||
server端 |
axis2 |
axis1 |
xfire |
cxf |
||||
client |
axis2 |
axis1 |
axis1 |
axis2 |
xfire+spring |
axis1 |
cxf |
axis1 |
client初始化 |
656.4 |
1138 |
1325 |
762.2 |
0 |
1340.6 |
2569 |
451.6 |
10次中的初次调用值 |
546.4 |
568.8 |
484.2 |
434.8 |
1022 |
987.4 |
281.4 |
225 |
10次平均值 |
62.48 |
66.7 |
73.44 |
57.22 |
119.2 |
120.9 |
32.16 |
29.61 |
后9次平均值 |
8.71 |
11.84 |
27.8 |
15.27 |
18.84 |
25 |
4.467 |
7.333 |
远程測试结果(单位:ms) |
||||||||
client初始化 |
672.8 |
1040 |
axis1 |
772 |
0 |
2994 |
2584 |
421.6 |
10次中的初次调用值 |
645.8 |
606 |
684.4 |
427.8 |
1010 |
1190 |
296.8 |
321.8 |
10次平均值 |
71.58 |
70.36 |
97.82 |
60.28 |
117.2 |
139.1 |
35.3 |
43.37 |
后9次平均值 |
7.78 |
10.58 |
32.64 |
19.44 |
18.04 |
27.13 |
6.244 |
14.22 |
4.3 结果分析
l client初次调用,初始化clientstub对象时,大约在:600ms~2500ms。因为须要建立网络连接,初始化java相关对象,因此耗时较长。
l client初始化stub后,接口初次调用,大约在:400ms~1000ms。相比兴许的接口调用时间最长。
l 在第一次调用完成后,随后的调用中,性能都明显提升。大约在:7ms~30ms。
l 本机測试与远程測试,性能上差距非常微小,在快速的局域网内,性能区别差点儿能够忽略。
l 在同样的服务端下,採用不同框架生成的stub代码调用时,时间上也存在一定的差异。
实际应用中,接口的调用都是在网络的不同的机器之间进行,本文也重点关注远程调用測试结果,在測试结果比較上,能够看出:
n 最优的组合为:cxfclient+ cxf服务端,6ms左右。
n 最差的组合为:axis1client+ axis1服务端,32ms左右。
l CXF作为服务端,对于不同的client调用时,性能最佳。
5 结束语
几种流行Webservice框架性能对照相关推荐
- 几种流行Webservice框架性能对比
1 摘要 开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有30多种,这对于开发者如何选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性 ...
- 几种流行Webservice控制框架
转会[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1 摘要 开发webservice应用程序中 ...
- 三种流行开源框架介绍
沈晓庆:初探Web服务中的面向接口编程一 引入 面向接口 / 对象 / 过程的区别 面向过程编程 面向对象编程 面向接口编程 Web服务中的面向接口编程 服务提供者和服务容器的理论基础 服务提供者的接 ...
- Java2017面试宝典--XML部分、 流行的框架与新技术、软件工程与设计模式、 j2ee部分、EBJ部分、 webservice部分...
1.xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文 ...
- (三)四种流行的RPC框架(Dubbo/Motan/Thrift/Grpc)
目录 ● Dubbo ● Motan ● Thrift ● Grpc 上述四种流行RPC框架的对比 ● Dubbo 本来阿里2014年就不在维护Dubbo了,直到2017年9月份又恢复了维护,可能一来 ...
- Java笔试题之《流行的框架与新技术》
流行的框架与新技术 1.谈谈你对Struts的理解. 答: 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionSe ...
- B9.流行的框架与新技术
1.谈谈你对Struts的理解. 答: 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是Action ...
- python8个程序语言_所有程序员必知--2019年最流行的8种编程语言和框架
上图是您应该在2019年根据各种,统计和事实寻找的8种最佳编程语言和框架的列表. 在技术不断进步的当代世界中,计算机无处不在.为计算机编写程序是当前IT市场上最关键的工作配置文件之一. 您是否想过 ...
- RPC框架性能基本比较测试
from: http://www.useopen.net/blog/2015/rpc-performance.html RPC框架性能基本比较测试 gRPC是Google最近公布的开源软件,基于最新的 ...
最新文章
- 实现迷你解析器把字符串解析成NestInteger类 Mini Parser
- 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java
- 【离散数学】树的基本概念和结论
- IIS部署VUE刷新404问题如何解决?
- Spring Bean的循环依赖解决方案
- 【恋上数据结构】回溯、剪枝(八皇后、n皇后)、LeetCode51.N皇后、LeetCode52.N皇后 II
- mysql 的命令行操作
- 【事件驱动】【数码管识别】 封装成DLL的函数的梳理
- BUUCTF-[HDCTF2019]Maze
- 计算机的物理地址怎么写,电脑物理地址怎么查
- 矩阵分解在推荐系统中的应用及实践
- Java的foreach中,变量加final的作用(for(final XXX xxx : xxxs))
- 骑士周游(dfs+greedy)
- python模拟seo快排vps点击代码实操
- 2020Android面经,历时一个半月,斩获3个大厂offer
- 兰州主城区将实时监控 年内享受市民一卡通
- Win10 EFI启动文件被删的修复办法
- 神舟Z7-SL7S3笔记本电脑(蓝天P650RG/RE准系统) 通过Win10x64系统下(非纯DOS环境)刷BIOS解决CPU的uncore功耗大于10W的方法
- 敏捷悖论之:站会的三种状态
- 使用OpenCV检测和追踪车辆