日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

几种流行Webservice框架性能对照

發(fā)布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几种流行Webservice框架性能对照 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?轉(zhuǎn)自【http://blog.csdn.net/thunder4393/article/details/5787121】,寫的非常好,以收藏。

?

?1????? 摘要

開發(fā)webservice應(yīng)用程序中離不開框架的支持,當(dāng)open-open站點列舉的就有30多種,這對于開發(fā)人員怎樣選擇帶來一定的疑惑。性能Webservice的關(guān)鍵要素,不同的框架性能上存在較大差異,而當(dāng)前在官方站點、網(wǎng)絡(luò)資料中能夠方便的找到各自框架的介紹,可是非常少有針對不同框架性能測試數(shù)據(jù)。本文選擇了比較流行幾個框架:Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等,採用java作為測試用例,通過本機和遠程兩種進行測試方式,對這幾種框架進行了性能測試,并對測試結(jié)果分析和性能比較,最后并對性能優(yōu)異的框架進行了推薦。

關(guān)鍵詞:Axis1、Axis2、XFire、CXF、Spring、SOAP、StAX、WSDL

2????? 框架介紹

2.1?????Apache Axis1

Axis本質(zhì)上就是一個SOAP引擎(Apache Axis is an implementation of the SOAP),提供創(chuàng)建server端、client和網(wǎng)關(guān)SOAP操作的基本框架。但Axis并不全然是一個SOAP引擎,它還包含:

l? 是一個獨立的SOAPserver。

l? 是一個嵌入Servlet引擎(比如Tomcat)的server。

l? 支持WSDL。

l? 提供轉(zhuǎn)化WSDL為Java類的工具。

l? 提供樣例程序。

l? 提供TCP/IP數(shù)據(jù)包監(jiān)視工具。

2.2?????Apache Axis2

Apache Axis2相比Apache Axis1更加有效、更加模塊化、更加面向xml,支持easy插件模塊擴展新功能和特性,比如安全和可靠。Apache Axis2是基于Apache AXIOM,它是一個高性能、pull-based XML對象模型。Apache Axis2的關(guān)鍵特性:

l? 解析xml更快。採用自己的對象模型和StAX (Streaming API for XML)。

l? 更低的內(nèi)存占用。

l? 支持熱部署。新服務(wù)增加到系統(tǒng),無需重新啟動服務(wù)。

l? 支持異步 webservice、

l? MEP支持,靈活支持在WSDL 2.0定義的Message Exchange Patterns (MEPs)

l? 更加靈活。引擎給開發(fā)者提供了充足的自由度可擴展客戶頭信息處理、系統(tǒng)管理、

l? 更加穩(wěn)定性。

l? 傳輸框架不依賴于詳細協(xié)議。為集成和傳輸協(xié)議(SMTP, FTP, message-oriented middleware, etc)有一個簡單和抽象,引擎核心是全然獨立于詳細的傳輸協(xié)議。

l? 支持WSDL。支持WSDL1.1、WSDL2.0。

l? 方便集成其它組件(Add-ons)。幾個web services已經(jīng)被集成,包含:WSS4J for security (Apache Rampart), Sandesha for reliable messaging,Kandula which is an encapsulation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.

l? 良好的擴展性。

2.3?????Codehaus XFire

XFire核心是一個輕量的基于STAX消息處理模型,用來與SOAP消息交互,它支持不同類型的綁定機制、容器和傳輸協(xié)議。

支持webservice標(biāo)準(zhǔn)- SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.

l? 高性能SOAP STACK

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配置服務(wù)

l? 支持多中傳輸協(xié)議- HTTP, JMS, XMPP, In-JVM, etc.

l? 可嵌入的和直觀的API

l? 支持Spring, Pico, Plexus, and Loom

l? 支持JBI

l? client和服務(wù)端stub代碼生成

l? 支持JAX-WS early access

2.4????? Apache CXF

Apache CXF是一個開源服務(wù)框架。CXF可用前端編程APIs開發(fā)服務(wù),比方:JAX-WS and JAX-RS,主要特性包含:

l? 支持Web services標(biāo)準(zhǔn)。包含:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation 和WS-SecurityPolicy.

l? 支持不同類型前端開發(fā)模型。CXF實現(xiàn)了JAX-WS APIs,支持JAX-RS開發(fā)。

l? easy使用。CXF設(shè)計的簡潔和直觀,具有簡潔APIs迅速的構(gòu)建基于代碼的服務(wù),Maven插件使得工具集成更加easy、JAX-WS API支持、Spring 2.x XML使得配置更加easy。

l? 支持二進制和遺留協(xié)議。CXF被設(shè)計為可插拔的架構(gòu),在不同的傳輸協(xié)議結(jié)合下,不僅支持XML,也支持非XML類型綁定,比如:JSON和CORBA。

3????? 測試準(zhǔn)備

表格 1測試基本元素

測試條件

描寫敘述

主機環(huán)境

A測試機:CPU:1.60GHz;內(nèi)存:1.37G

B測試機:CPU:1.83GHz;內(nèi)存:1G

Web服務(wù)
框架

axis1 1.3

axis2 1.2

xfire 1.2.6

應(yīng)用環(huán)境

jdk 1.4、spring 2.x

client代碼

public void testgetVersion() throws java.lang.Exception {
? String url = "http://localhost:8081/boss/services/Calculate";
? // client初時化時間
? long startTime = System.currentTimeMillis();
? // clientstub代碼各自是axis1/axis2/xfire/cxf框架 wsdl2java生成
? CalculateCalculateHttpportStub stub = new CalculateCalculateHttpportStub(url);
? long endTime = System.currentTimeMillis();
? System.out.println("client init time is: " + (endTime - startTime));
?
? // 連續(xù)調(diào)用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 + "] elapsed time is: " + (endTime1 - startTime1) + " ms");
?? System.out.println("stub.getVersion() is: " + ret);
? }
?}

服務(wù)端代碼

public String getVersion()
注:接口無不論什么業(yè)務(wù)邏輯,僅僅返回一個字符串:"Hello";

測試方法

本機接口測試,client和服務(wù)端都在A測試機上進行;

遠程接口測試,A測試機作為client,B測試機作為server。本次測試是在局域網(wǎng)內(nèi)完畢。

結(jié)果精度

數(shù)字精確到小數(shù)點后兩位

名詞解釋

server端:部署到server的程序。

client:發(fā)起請求調(diào)用server上webservcie的程序。

client初時化時間:發(fā)起接口調(diào)用時,初始化clientjava對象所需時間。
比如:CalculateCalculateHttpportStub stub = new CalculateCalculateHttpportStub(url); // 由框架 wsdl2java生成clientstub

?

?

表格 2在端對端性能上,一個client驅(qū)動程序使用了一個胖clientWeb服務(wù)堆棧來發(fā)送和接受SOAP請求

Webservice服務(wù)端

Webserviceclient

Webservice stack

SOAP over HTTP

4????? 性能測試

4.1????? 測試方法

本次假定在同樣網(wǎng)絡(luò)、主機環(huán)境條件下進行測試,因此性能的區(qū)別主要是由不同框架實現(xiàn)機制的所決定。

l? 採用兩種方式測試:本機測試、遠程測試。

l? server端分別採用:axis1、axis2、xfire、CXF,對于選定的server端,用不同框架相應(yīng)的工具包wsdl生成clientstub代碼進行測試。

l? 服務(wù)端接口內(nèi)部沒有復(fù)雜業(yè)務(wù)邏輯,client調(diào)用時,只返回一個字符串。

l? 每次執(zhí)行,採用java循環(huán)方式調(diào)用10次服務(wù)端接口,并記錄下從發(fā)起到返回結(jié)果的時間。

4.2?????測試結(jié)果

限于篇幅,本文僅提供了:以CXF框架為服務(wù)端的具體測試結(jié)果,及其各個框架的綜合后測試結(jié)果。

?

表格 3以CXF作為服務(wù)端測試具體結(jié)果

本機測試結(jié)果(單位: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

連續(xù)10次調(diào)用接口測試

第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

遠程測試結(jié)果(單位: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

連續(xù)10次調(diào)用接口測試

第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

?

?

表格 4不同框架本機和遠程測試結(jié)果

本機測試結(jié)果(單位: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次中的初次調(diào)用值

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

遠程測試結(jié)果(單位:ms)

client初始化

672.8

1040

axis1

772

0

2994

2584

421.6

10次中的初次調(diào)用值

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????? 結(jié)果分析

從數(shù)據(jù)能夠看出,有以下幾個特點:

l? client初次調(diào)用,初始化clientstub對象時,大約在:600ms~2500ms。因為須要建立網(wǎng)絡(luò)連接,初始化java相關(guān)對象,因此耗時較長。

l? client初始化stub后,接口初次調(diào)用,大約在:400ms~1000ms。相比興許的接口調(diào)用時間最長。

l? 在第一次調(diào)用完成后,隨后的調(diào)用中,性能都明顯提升。大約在:7ms~30ms。

l? 本機測試與遠程測試,性能上差距非常微小,在快速的局域網(wǎng)內(nèi),性能區(qū)別差點兒能夠忽略。

l? 在同樣的服務(wù)端下,採用不同框架生成的stub代碼調(diào)用時,時間上也存在一定的差異。

?

實際應(yīng)用中,接口的調(diào)用都是在網(wǎng)絡(luò)的不同的機器之間進行,本文也重點關(guān)注遠程調(diào)用測試結(jié)果,在測試結(jié)果比較上,能夠看出:

l? 最優(yōu)組合是最差組合性能的5倍多。

n? 最優(yōu)的組合為:cxfclient+ cxf服務(wù)端,6ms左右。

n? 最差的組合為:axis1client+ axis1服務(wù)端,32ms左右。

l? CXF作為服務(wù)端,對于不同的client調(diào)用時,性能最佳。

5????? 結(jié)束語

本文對幾種流行webservice框架的性能的實際測試,對開發(fā)人員選擇框架時提供了一個關(guān)于性能方面參考。Apache CXF是Codehaus XFire 的第二代產(chǎn)品,眼下在不同框架中性能最佳,應(yīng)該是開發(fā)人員不錯的選擇,這與它本身的架構(gòu)設(shè)計不無關(guān)系。相比其它框架,CXF具有幾個突出的特性:支持JAX-WS、Spring集成、Aegi數(shù)據(jù)綁定、支持RESTful services、支持WS-*、Apache協(xié)議、代碼實現(xiàn)簡潔。Apache Axis2是Apache Axis1的第二代產(chǎn)品,架構(gòu)上也很不錯,關(guān)鍵特性:支持各種規(guī)范、可插拔模塊化設(shè)計、支持熱部署等。與CXF相比性能也很優(yōu)異。

在服務(wù)端框架確定的場景下,最好是採用該框架生成client代碼,這樣配合性能可達到更佳。在實際的項目中,開發(fā)人員在選擇詳細那個框架時,仍還需綜合評估框架的開發(fā)組織、產(chǎn)品路線圖、文檔化程度、應(yīng)用廣泛度、與優(yōu)異框架的集成度、靈活和擴展性等因素。

?

總結(jié)

以上是生活随笔為你收集整理的几种流行Webservice框架性能对照的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。