Axis,CXF,Xfire之間的比較

XFire VS Axis

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/5

 

 XFire與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開源開發工具。 Axis2的最新版本是1.3.CXF現在已經到了2.0版本。

     這兩個框架都是從已有的開源項目發展起來的。Axis2是從Axis1.x系列發展而來。CXF則是XFire和Celtix項目的結合產品。Axis2是從底層全部重新實現,使用了新的擴展性更好模塊架構。 CXF也重新的深化了XFire和Celtix這兩個開發工具。

     新產品的退出導致了幾個問題。是不是現有的使用Axis 1.x,XFire和Celix的應用需要遷移的新的版本上。如果一個開發人員確定要遷移它的應用到新的框架上,那麼他應該選擇哪一個呢?相反的,如果一個開發者決定從頭開發一個新的Web Service,他應該使用哪個呢? 這兩個框架哪一個更好一些呢?

     對於系統遷移來說,也許遷移到新的框架並不難。Axis和CXF都提供了遷移的指導。能夠給開發者一些遷移的技巧和經驗。但是對於這樣遷移,這兩個開源項目都沒有提供遷移的工具。對於這樣的遷移工作,儘管很值得去尋找所有的可行方案。Axis2和CXF都有各自不同的WebService開發方法,每個方法都有相當數量擁護者。

通過一個比較矩陣來比較Axis2和CXF變得有現實的意義。這兩個項目都開發不夠成熟,但是最主要的區別在以下幾個方面:

1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承諾在下面的版本支持。

2. CXF可以很好支持Spring。Axis2不能

3. AXIS2支持更廣泛的數據並對,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定義的數據綁定ADB。注意JaxME和JaxBRI都還是試驗性的。CXF只支持JAXB和Aegis。在CXF2.1

4. Axis2支持多語言-除了Java,他還支持C/C++版本。

 

比較這兩個框架的Web Service開發方法與比較它們的特性同樣重要。

     從開發者的角度,兩個框架的特性相當的不同。 Axis2的開發方式類似一個小型的應用服務器,Axis2的開發包要以WAR的形式部署到Servlet容器中,比如Tomcat,通過這些容器可以對工作中的Web Service進行很好的監控和管理。Axis2 的Web administrion模塊可以讓我們動態的配置Axis2.一個新的服務可以上載,激活,使之失效,修改web服務的參數。管理UI也可以管理一個或者多個處於運行狀態的服務。這種界面化管理方式的一個弊端是所有在運行時修改的參數沒有辦法保存,因爲在重啓動之後,你所做的修改就會全部失效。 Axis2允許自己作爲獨立的應用來發布Web Service,並提供了大量的功能和一個很好的模型,這個模型可以通過它本身的架構(modular architecture)不斷添加新的功能。

     有些開發人員認爲這種方式對於他們的需求太過於繁瑣。這些開發人員會更喜歡CXF。 CXF更注重開發人員的工效(ergonomics)和嵌入能力(embeddability)。大多數配置都可以API來完成,替代了比較繁瑣的XML配置文件,Spring的集成性經常的被提及,CXF支持Spring2.0和CXF's API和Spring的配置文件可以非常好的對應。CXF強調代碼優先的設計方式(code-first design),使用了簡單的API使得從現有的應用開發服務變得方便。 不過你選擇Axis2還是CXF,你都可以從開源社區得到大量的幫助。這兩個框架都有商業公司提供服務,WSO2提供AXIS2的支持,Iona提供CXF的支持。這兩公司都有很活躍的開發者社區。 Axis2出現的時間較早,CXF的追趕速度快。

 

建議:

     如果你需要多語言的支持,你應該選擇AXIS2。

     如果你需要把你的實現側重JAVA並希望和Spring集成,CXF就是更好的選擇,特別是把你的Web Service嵌入其他的程序中。

     如果你覺得這兩個框架的新特性對於你並沒有太大的用處,你會覺得Axis1也是不錯的選擇,你應該繼續使用它知道你有充分的理由去更換它。 

 

如何抉擇:

     1、如果應用程序需要多語言的支持,Axis2 應當是首選了;

     2、如果應用程序是遵循 Spring 哲學路線的話,Apache CXF 是一種更好的選擇,特別對嵌入式的 WebServices 來說;

     3、如果應用程序沒有新的特性需要的話,就仍是用原來項目所用的框架,比如 Axis1,XFire,Celtrix或 BEA 等等廠家自己的 Web Services 實現,就別勞民傷財了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章