webService學習記錄(2)
http://blog.csdn.net/ck4438707/article/details/53610124
http://blog.csdn.net/apicescn/article/details/42965785/
目前開發Web Service的幾個框架:
Axis,axis2,Xfire,CXF以及JWS(JAX-WS)
前面幾項都為開源專案
以axis2與cxf所最為常用,官方有更新
Axis與XFire已隨著技術不斷的更替慢慢落幕,都已不再更新。
XFire與Axis1效能的比較
1、XFire比Axis1.3快2-6倍
2、XFire的響應時間是Axis1.3的1/2到1/5
XFire比Axis更有市場,
Axis2是從Axis1.x系列發展而來。Axis2是從底層全部重新實現,使用了新的擴充套件性更好模組架構。
CXF則是XFire和Celtix專案的結合產品。CXF也重新的深化了XFire和Celtix這兩個開發工具。
Axis2的開發方式類似一個小型的應用伺服器,Axis2的開發包要以WAR的形式部署到Servlet容器中,比如Tomcat,通過這些容器可以對工作中的Web Service進行很好的監控和管理。Axis2允許自己作為獨立的應用來發布Web
Service,並提供了大量的功能和一個很好的模型,有些開發人員認為這種方式對於他們的需求太過於繁瑣,從而會更喜歡CXF。
CXF更注重開發人員的工效(ergonomics)和嵌入能力(embeddability)。大多數都可以通過配置API來完成,替代了比較繁瑣的XML配置檔案, CXF支援Spring2.0和CXF's API和Spring的配置檔案可以非常好的對應。CXF強調程式碼優先的設計方式(code-first design),使用了簡單的API使得從現有的應用開發服務變得方便。
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也是不錯的選擇,你應該繼續使用它直到你有充分的理由去更換它。