竹十一
          在匆忙與奔走中墮落

          <翻譯 from tss>
          Axis、Axis2和CXF:俯瞰WS風(fēng)景
          --bye Biorn Townsend

          從事open source 的 web services開發(fā)是令人興奮的。去年下半年發(fā)布了兩個下一代的web services框架,他們都在Apache軟件基金會下面。這兩個框架分別是,在2006年四月末發(fā)布1.0的Apache Axis2,目前處在1.3的候選發(fā)布版本階段(譯注:1.3已經(jīng)發(fā)布);Apache CXF,它在2007年7月初發(fā)布了2.0版本(以CXF命名的第一個發(fā)布版本)。

          這兩個框架都是從已有項(xiàng)目中進(jìn)化過來的。Axis2來自眾所周知的Axis 1.x 系列。CXF按照字面來說是XFire和Celtix兩個項(xiàng)目的后續(xù),這兩個項(xiàng)目融會了他們的代碼庫和開發(fā)團(tuán)隊(duì)就有了CXF。不論從哪個角度來看新舊項(xiàng)目之間都有顯著區(qū)別。Axis2完全從頭重寫了Axis,使用了能夠讓功能更容易擴(kuò)展的新模塊架構(gòu)。CXF從XFire和Celtix這兩個起源上也做了廣泛重構(gòu)。

          這引發(fā)了一些問題。已有使用Axis 1.x,XFire或者是Celtix的應(yīng)用程序是否要移植到這些項(xiàng)目的新版本上呢?如果一個開發(fā)者決定要移植他(她)的應(yīng)用到其中的一個新版本上,那他應(yīng)該用哪個呢?相反的,如果某人正在從頭開始開發(fā)新的web service又無需考慮移植,那他(她)又應(yīng)該用哪個呢?是否一個框架生來就優(yōu)于其他的呢?

          讓我們逐個處理這些問題。首先,已有應(yīng)用是否需要移植?回答這個問題很大程度上依賴于你的應(yīng)用到達(dá)了生命周期的哪個階段。對于一個非常穩(wěn)定成熟的項(xiàng)目,如果在可預(yù)計(jì)的未來很少或者根本不需要變化,那它可能就不需要移植,因?yàn)楫?dāng)前的框架很好的滿足了需求。如果應(yīng)用的性能或者功能受bug影響,那移植就值得做,特別是對使用Axis 1.x 的用戶來說,因?yàn)閲@Axis的大部分開發(fā)者社區(qū)都把資源轉(zhuǎn)向了Axis2。Axis 1.5 版本雖然正在進(jìn)行中,但可能要數(shù)月才能完成。

          對于需要移植的項(xiàng)目來說,最簡單的就是移植到當(dāng)前框架的下一個版本上。Axis2和CXF都為開發(fā)者提供了從之前版本到新版本的移植技巧指南,但他們都沒有為web service從一個框架移植到另一個框架提供工具或者指南。盡管如此,對這類移植來說,查看所有可用的選擇都是有價值的。在web service開發(fā)上Axis2和CXF走了不同的路子,對某些開發(fā)者來說,其中一條總比另一條需要付出更多。

          這給我們帶來了比較Axis2和CXF二者功過的好的角度。當(dāng)然有二者很多可比較的地方,web services框架都必然地要滿足所有相同需求,但因?yàn)檫@二者都非常年輕,都有某些領(lǐng)域比其他的做得更好。主要不同列在下面:

              * CXF支持WS-Addressing,WS-Policy,WS-RM,WS-Security 和 WS-I 基本規(guī)范。Axis2支持除WS-Policy之外的所有協(xié)議,WS-Policy也會在即將到來的版本支持。

              * CXF很容易和Spring集成,而Axis2不。

              * Axis2支持范圍更大的數(shù)據(jù)綁定,包括XMLBeans、JiBX、JaxMe和JaxBRI同時還有它自帶的數(shù)據(jù)綁定方式--ADB。注意對JaxME和JaxBRI的支持在Axis2 1.2中仍然處在實(shí)驗(yàn)階段。CXF目前僅支持JAXB和Aegis,對XMLBeans、JiBX和Castor的支持將會在CXF 1.2中實(shí)現(xiàn)。

              * Axsi2支持多種語言--在java版本之外還有C/C++的版本可用。

          然而在比較這些框架時,比較他們開發(fā)web services的方法與比較它們的特性同樣重要。從開發(fā)者的角度看,這些框架彼此之間完全不同。Axis2走的路子在很多方面都像是一個微型的應(yīng)用服務(wù)器。Axis2打包成WAR,這樣它就能發(fā)布到像Tomcat之類的servlet容器中,它被設(shè)計(jì)的使web services更容易管理和發(fā)布。Axis2的Web管理模塊允許Axis2在應(yīng)用運(yùn)行過程中動態(tài)配置--新的服務(wù)可以上傳、激活或者使其無效、他們的參數(shù)也可以改變。管理UI也允許模塊在一個或者更多的正在運(yùn)行的服務(wù)中生效。唯一不利的一面是,為達(dá)到這些目的使用UI所作的改變不能被持久化--servlet容器重啟之后就失效了。

          Axis2有利于web services的獨(dú)立,不依賴其他應(yīng)用;提供了廣泛多樣的功能;通過模塊化架構(gòu)為添加新功能(隨時間流逝,這總是可能的)提供了一個不錯的模型。某些開發(fā)者或許會發(fā)現(xiàn)為實(shí)現(xiàn)他們的需求用Axis2有些太麻煩太笨重。這些開發(fā)者可能更喜歡Apache CXF。

          CXF專注于開發(fā)者的高效和可嵌入性。大部分的配置通過API而不是繁瑣的XML文件來實(shí)現(xiàn),Spring的集成是個重點(diǎn),包括支持Spring 2.0,CXF的API和Spring的配置映襯的相當(dāng)緊密。CXF著重代碼優(yōu)先的設(shè)計(jì),簡單的API使從已有應(yīng)用中開發(fā)服務(wù)更容易(嵌入性也有利于這點(diǎn))。

          不論你選擇了哪個框架,你都將從活躍穩(wěn)定的開源社區(qū)中受益。每個框架都有公司背景:Axis2源自WSO2,CXF源自Iona。兩者都有活躍的開發(fā)者社區(qū)。Axis2已經(jīng)存在很久了,但是CXF進(jìn)步也很快。我的建議是:如果多語言支持是重要的,Axis2是很明顯的選擇。如果你在意與像Spring之類的項(xiàng)目緊密集成的Java實(shí)現(xiàn),CXF是更好的選擇,特別是對把web services嵌入其他程序的應(yīng)用來說。如果這些項(xiàng)目中的新特性對你不太重要,而你又相對來說比較滿意Axis1,那么可以考慮繼續(xù)使用Axis1并緊跟最新的可用版本,直到有業(yè)務(wù)上的原因需要移植。


          原文地址: http://www.theserverside.com/tt/articles/article.tss?l=AxisAxis2andCXF

          btw:
              翻完之后發(fā)現(xiàn)這篇問題題目雖然比較吸引眼球,可好像也沒說出些實(shí)質(zhì)性內(nèi)容來,有些地方甚至有些八卦。不過既然翻譯了就貼出來,說不定還能給大家?guī)硇┎栌囡埡蟮恼勝Y:)

          posted on 2007-09-14 01:32 竹十一 閱讀(4384) 評論(2)  編輯  收藏 所屬分類: SOA
          Comments
          • # re: Axis、Axis2和CXF:俯瞰WS風(fēng)景
            mimimama
            Posted @ 2007-09-14 08:19
            總的說還是有價值的。  回復(fù)  更多評論   
          • # re: Axis、Axis2和CXF:俯瞰WS風(fēng)景[未登錄]
            竹十一
            Posted @ 2008-09-22 22:32
            近一年的經(jīng)驗(yàn)告訴我,如果不是維護(hù)系統(tǒng),Axis1x基本可以拋棄了。
            從一點(diǎn)就可以得出它不支持更流行的dom/literal 方式。
              回復(fù)  更多評論   
           
          主站蜘蛛池模板: 南京市| 阿克苏市| 宝兴县| 武城县| 五台县| 洪洞县| 衢州市| 仙桃市| 张北县| 洞头县| 英吉沙县| 瑞昌市| 琼中| 夏津县| 五家渠市| 彭泽县| 海晏县| 龙井市| 佛学| 庆元县| 梁河县| 颍上县| 天峨县| 镇原县| 灵寿县| 莲花县| 新蔡县| 武穴市| 岳阳县| 十堰市| 蒙阴县| 万安县| 吉林省| 阿图什市| 清苑县| 扎囊县| 汝南县| 新闻| 陇川县| 大庆市| 山阳县|