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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

几种流行Webservice控制框架

發布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几种流行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

Axis本質上就是一個SOAP引擎(Apache Axis is an implementation of the SOAP),提供創建server端、client和網關SOAP操作的基本框架。

但Axis并不全然是一個SOAP引擎,它還包含:

l? 是一個獨立的SOAPserver。

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

l? 支持WSDL。

l? 提供轉化WSDL為Java類的工具。

l? 提供樣例程序。

l? 提供TCP/IP數據包監視工具。

2.2?????Apache Axis2

Apache Axis2相比Apache Axis1更加有效、更加模塊化、更加面向xml。支持easy插件模塊擴展新功能和特性,比如安全和可靠。

Apache Axis2是基于Apache AXIOM,它是一個高性能、pull-based XML對象模型。Apache Axis2的關鍵特性:

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

l? 更低的內存占用。

l? 支持熱部署。

新服務增加到系統。無需重新啟動服務。

l? 支持異步 webservice、

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

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

l? 更加穩定性。

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

l? 支持WSDL。

支持WSDL1.1、WSDL2.0。

l? 方便集成其它組件(Add-ons)。

幾個web services已經被集成,包含: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消息交互,它支持不同類型的綁定機制、容器和傳輸協議。

支持webservice標準- 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配置服務

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

l? 可嵌入的和直觀的API

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

l? 支持JBI

l? client和服務端stub代碼生成

l? 支持JAX-WS early access

2.4????? Apache CXF

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

l? 支持Web services標準。

包含:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation 和WS-SecurityPolicy.

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????? 測試準備

表格 1測試基本元素

測試條件

描寫敘述

主機環境

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 {
? 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));
?
? // 連續調用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);
? }
?}

服務端代碼

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

測試方法

本機接口測試。client和服務端都在A測試機上進行;

遠程接口測試,A測試機作為client,B測試機作為server。本次測試是在局域網內完畢。

結果精度

數字精確到小數點后兩位

名詞解釋

server端:部署到server的程序。

client:發起請求調用server上webservcie的程序。

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

?

?

表格 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框架為服務端的具體測試結果,及其各個框架的綜合后測試結果。

?

表格 3以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

?

?

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

本機測試結果(單位: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代碼調用時,時間上也存在一定的差異。

?

實際應用中。接口的調用都是在網絡的不同的機器之間進行,本文也重點關注遠程調用測試結果,在測試結果比較上,能夠看出:

l? 最優組合是最差組合性能的5倍多。

n? 最優的組合為:cxfclient+ cxf服務端。6ms左右。

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

l? CXF作為服務端,對于不同的client調用時,性能最佳。

5????? 結束語

本文對幾種流行webservice框架的性能的實際測試,對開發人員選擇框架時提供了一個關于性能方面參考。Apache CXF是Codehaus XFire 的第二代產品。眼下在不同框架中性能最佳,應該是開發人員不錯的選擇,這與它本身的架構設計不無關系。相比其它框架。CXF具有幾個突出的特性:支持JAX-WS、Spring集成、Aegi數據綁定、支持RESTful services、支持WS-*、Apache協議、代碼實現簡潔。

Apache Axis2是Apache Axis1的第二代產品。架構上也很不錯,關鍵特性:支持各種規范、可插拔模塊化設計、支持熱部署等。與CXF相比性能也很優異。

在確定的框架場景服務端,最好是使用框架來生成client代碼,這種合作可以實現更好的性能。在實際項目,當開發商選擇詳細的框架,然而,我們需要制定一個全面的組織評估框架、產品路線圖、文件的程度、應用范圍廣、和優秀的集成框架、靈活性和可擴展性等因素的影響。

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。