在講Web Service開發服務時,需要介紹一個目前開發Web Service的幾個框架,分別為Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,這是Java6發布所提供的對Web Service服務的一種實現。)
前面幾項都為開源項目,而其中又以axis2與cxf所最為常用,Axis與XFire已隨著技術不斷的更替慢慢落幕,而目前也只有axis2和cxf官方有更新,Axis與XFire都已不再更新。
以下就分別介紹下這幾個框架之間的區別,以便大家進行更好的選擇:
XFire是與Axis2 並列的新一代WebService平台。之所以並稱為新一代,因為它:
1、支援一系列Web Service的新標準--JSR181、WSDL2.0 、JAXB2、WS-Security等;
#2、使用Stax解釋XML,性能有了質的提升。 XFire採用Woodstox 作Stax實現;
##3、容易上手,可以方便快速地從pojo發布服務; 4、Spring的結合; #5、靈活的Binding機制,包括預設的Aegis,xmlbeans,jaxb2,castor。XFire與Axis1效能的比較
#1、XFire比Axis1.3快2-6倍 2、XFire的回應時間是Axis1 .3的1/2到1/5XFire與Axis2的比較
雖然XFire與Axis2都是新一代的WebService平台,但是Axis2的開發者太急於推出1.0版本,所以1.0還不是穩定的版本,它的開發者宣稱1.1版本即將推出,希望1.1版本會是穩定的版本。 在XFire捐獻給apache後有人認為Axis2將會滅亡。其實在很多人眼裡,Axis2並不是pojo形式,Dan Diephouse證明了XFire比Axis更有市場我也發現了有很多人開始從Axis轉向XFire,包括我也在說服身邊的人轉向利用XFire進行WebService的開發,很典型的是我可以在幾分鐘之內教會我的團隊實用XFire來發布一個他自己的Web服務。 本人傾向於XFire確實比Axis2簡單很多。AXIS VS CXF
在SOA領域,我們認為Web Service是SOA系統的建構單元(building block)。 對於服務開發人員來說,AXIS和CXF一定不會陌生。這兩個產品都是Apache孵化器下面的Web Service開源開發工具。 本文發佈時Axis的最新版本是1.4;CXF現在已經到了3.0版本。 這兩個架構 都是從現有的開源專案發展起來的Axis2是從Axis1.x系列發展而來。而CXF則是XFire和Celtix專案的結合產品。 Axis2是從底層全部重新實現,使用了新的擴展性更好模組架構。 CXF也重新的深化了XFire和Celtix這兩個開發工具。 比較這兩個框架的Web Service開發方法與比較它們的特性同樣重要。 從開發者的角度,兩個框架的特性相當的不同。 Axis2的開發方式類似一個小型的應用程式伺服器,Axis2的開發包要以WAR的形式部署到Servlet容器中,例如Tomcat,透過這些容器可以對工作中的Web Service進行良好的監控和管理。 Axis2的Web administrion模組可以讓我們動態的設定Axis2.一個新的服務可以上載,激活,使之失效,修改web服務的參數。 管理UI也可以管理一個或多個處於運作狀態的服務。這種介面化管理方式的一個弊端是所有在執行時修改的參數沒有辦法保存,因為在重新啟動之後,你所做的修改就會全部失效。 Axis2允許自己作為獨立的應用程式來發布Web Service,並提供了大量的功能和一個很好的模型,這個模型可以透過它本身的架構(modular architecture)不斷添加新的功能。 有些開發人員認為這種方式對於他們的需求太過於繁瑣,從而會更喜歡CXFCXF更注重開發人員的工效(ergonomics)和嵌入能力(embeddability)。 大多數都可以透過配置API來完成,取代了比較繁瑣的XML配置文件, Spring的集成性經常的被提及,CXF支持Spring2.0和CXF's API和Spring的配置文件可以非常好的對應。 CXF強調程式碼優先的設計方式(code-first design),使用了簡單的API使得從現有的應用程式開發服務變得方便。 不過你選擇Axis2還是CXF,你都可以從開源社群得到大量的幫助。 這兩個框架都有商業公司提供服務,WSO2提供AXIS2的支持,Iona提供CXF的支持。這兩公司都有很活躍的開發者社群。以下分別介紹一個這幾種Web Service框架的基本概念
#1、JWS是Java語言對WebService服務的一種實現,用來開發和發布服務。 而從服務本身的角度來看JWS服務是沒有語言界限的。但是Java語言為Java開發者提供便利發布和呼叫WebService服務的一種途徑。2、Axis2是Apache下的一個重量級WebService框架,準確地說它是一個Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不僅能製作和發布WebService,而且可以生成Java和其他語言版WebService客戶端和服務端程式碼。
這是它的優勢所在。但是,這也不可避免的導致了Axis2的複雜性,使用過的開發者都知道,它所依賴的包數量和大小都是很驚人的,打包部署發布都比較麻煩,不能很好的與現有應用整合為一體。
但如果你要開發Java以外別的語言客戶端,Axis2提供的豐富工具將是你不二的選擇。
3、XFire是一個高效能的WebService框架,在Java6之前,它的知名度甚至超過了Apache的Axis2,XFire的優點是開發方便,與現有的Web整合很好,可以融為一體一體,開發也很方便
但是對Java以外的語言,沒有提供相關的程式碼工具。 XFire後來被Apache收購了,因為它太優秀了,收購後,隨著Java6 JWS的興起,開源的WebService引擎已經不再被看好,漸漸的都敗落了。
4、CXF是Apache旗下一個重磅的SOA簡易框架,它實現了ESB(企業服務總線)。
CXF來自於XFire項目,經過改造後形成的,就像目前的Struts2來自WebWork一樣
可以看出XFire的命運會和WebWork的命運一樣,最終會淡出人們的視線。 CXF不僅是優秀的Web Services / SOAP / WSDL 引擎,也是一個不錯的ESB匯流排,為SOA的實作提供了一個選擇方案,當然他不是最好的,它僅僅實現了SOA架構的一部分。
註:對於Axis2與CXF之間的關係,一個是Axis2出現的時間較早,而CXF的追趕速度快。
如何抉擇:
1、如果應用程式需要多語言的支持,Axis2 應當是首選了;
2、如果應用程式是遵循Spring 哲學路線的話,Apache CXF 是更好的選擇,特別對嵌入式的Web Services 來說;
3、如果應用程式沒有新的特性需要的話,就仍是用原來項目所使用的框架,例如Axis1,XFire,Celtrix或BEA 等等廠商自己的Web Services 實現,就別勞民傷財了。
最後,我的建議是:如果你需要多語言的支持,你應該選擇AXIS2。
如果你需要把你的實作專注於JAVA並希望和Spring集成,CXF就是更好的選擇,特別是把你的Web Service嵌入其他的程式中。
如果你覺得這兩個框架的新特性對於你並沒有太大的用處,你會覺得Axis1也是不錯的選擇,你應該繼續使用它直到你有充分的理由去更換它。
感謝大家的閱讀,希望大家收益多多。
本文轉自:https://blog.csdn.net/apicescn/article/details/42965785
推薦教學:《java教學》
以上是帶你詳細了解幾種在JAVA開發中使用的Web Service框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!