CXF和Axis的比较【转】
在SOA領(lǐng)域,我們認(rèn)為Web Service是SOA體系的構(gòu)建單元(building block)。對(duì)于服務(wù)開發(fā)人員來(lái)說,AXIS和CXF一定都不會(huì)陌生。這兩個(gè)產(chǎn)品都是Apache孵化器下面的Web Service開源開發(fā)工具。 Axis2的最新版本是1.3.CXF現(xiàn)在已經(jīng)到了2.0版本。
這兩個(gè)框架 都是從已有的開源項(xiàng)目發(fā)展起來(lái)的。Axis2是從Axis1.x系列發(fā)展而來(lái)。CXF則是XFire和Celtix項(xiàng)目的結(jié)合產(chǎn)品。Axis2是從底層全部重新實(shí)現(xiàn),使用了新的擴(kuò)展性更好模塊架構(gòu)。 CXF也重新的深化了XFire和Celtix這兩個(gè)開發(fā)工具。
新產(chǎn)品的退出導(dǎo)致了幾個(gè)問題。是不是現(xiàn)有的使用Axis 1.x,XFire和Celix的應(yīng)用需要遷移的新的版本上。如果一個(gè)開發(fā)人員確定要遷移它的應(yīng)用到新的框架上,那么他應(yīng)該選擇哪一個(gè)呢?相反的,如果一個(gè)開發(fā)者決定從頭開發(fā)一個(gè)新的Web Service,他應(yīng)該使用哪個(gè)呢? 這兩個(gè)框架哪一個(gè)更好一些呢?
對(duì)于系統(tǒng)遷移來(lái)說,也許遷移到新的框架并不難。Axis和CXF都提供了遷移的指導(dǎo)。能夠給開發(fā)者一些遷移的技巧和經(jīng)驗(yàn)。但是對(duì)于這樣遷移,這兩個(gè)開源項(xiàng)目都沒有提供遷移的工具。對(duì)于這樣的遷移工作,盡管很值得去尋找所有的可行方案。Axis2和CXF都有各自不同的WebService開發(fā)方法,每個(gè)方法都有相當(dāng)數(shù)量擁護(hù)者。
通過一個(gè)比較矩陣來(lái)比較Axis2和CXF變得有現(xiàn)實(shí)的意義。這兩個(gè)項(xiàng)目都開發(fā)不夠成熟,但是最主要的區(qū)別在以下幾個(gè)方面:
1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承諾在下面的版本支持。
2. CXF可以很好支持Spring。Axis2不能
3. AXIS2支持更廣泛的數(shù)據(jù)并對(duì),如XMLBeans,JiBX,JaxMe和JaxBRI和它自定義的數(shù)據(jù)綁定ADB。注意JaxME和JaxBRI都還是試驗(yàn)性的。CXF只支持JAXB和Aegis。在CXF2.1
4. Axis2支持多語(yǔ)言-除了Java,他還支持C/C++版本。
比較這兩個(gè)框架的Web Service開發(fā)方法與比較它們的特性同樣重要。 從開發(fā)者的角度,兩個(gè)框架的特性相當(dāng)?shù)牟煌?Axis2的開發(fā)方式類似一個(gè)小型的應(yīng)用服務(wù)器,Axis2的開發(fā)包要以WAR的形式部署到Servlet容器中,比如Tomcat,通過這些容器可以對(duì)工作中的Web Service進(jìn)行很好的監(jiān)控和管理。Axis2 的Web administrion模塊可以讓我們動(dòng)態(tài)的配置Axis2.一個(gè)新的服務(wù)可以上載,激活,使之失效,修改web服務(wù)的參數(shù)。管理UI也可以管理一個(gè)或者多個(gè)處于運(yùn)行狀態(tài)的服務(wù)。這種界面化管理方式的一個(gè)弊端是所有在運(yùn)行時(shí)修改的參數(shù)沒有辦法保存,因?yàn)樵谥貑?dòng)之后,你所做的修改就會(huì)全部失效。
Axis2允許自己作為獨(dú)立的應(yīng)用來(lái)發(fā)布Web Service,并提供了大量的功能和一個(gè)很好的模型,這個(gè)模型可以通過它本身的架構(gòu)(modular architecture)不斷添加新的功能。有些開發(fā)人員認(rèn)為這種方式對(duì)于他們的需求太過于繁瑣。這些開發(fā)人員會(huì)更喜歡CXF。
CXF更注重開發(fā)人員的工效(ergonomics)和嵌入能力(embeddability)。大多數(shù)配置都可以API來(lái)完成,替代了比較繁瑣的XML配置文件, Spring的集成性經(jīng)常的被提及,CXF支持Spring2.0和CXF's API和Spring的配置文件可以非常好的對(duì)應(yīng)。CXF強(qiáng)調(diào)代碼優(yōu)先的設(shè)計(jì)方式(code-first design),使用了簡(jiǎn)單的API使得從現(xiàn)有的應(yīng)用開發(fā)服務(wù)變得方便。
不過你選擇Axis2還是CXF,你都可以從開源社區(qū)得到大量的幫助。這兩個(gè)框架都有商業(yè)公司提供服務(wù),WSO2提供AXIS2的支持,Iona提供CXF的支持。這兩公司都有很活躍的開發(fā)者社區(qū)。 Axis2出現(xiàn)的時(shí)間較早,CXF的追趕速度快。我的建議是:如果你需要多語(yǔ)言的支持,你應(yīng)該選擇AXIS2。如果你需要把你的實(shí)現(xiàn)側(cè)重JAVA并希望和Spring集成,CXF就是更好的選擇,特別是把你的Web Service嵌入其他的程序中。如果你覺得這兩個(gè)框架的新特性對(duì)于你并沒有太大的用處,你會(huì)覺得Axis1也是不錯(cuò)的選擇,你應(yīng)該繼續(xù)使用它知道你有充分的理由去更換它。
====================================================
1、JWS是Java語(yǔ)言對(duì)WebService服務(wù)的一種實(shí)現(xiàn),用來(lái)開發(fā)和發(fā)布服務(wù)。而從服務(wù)本身的角度來(lái)看JWS服務(wù)是沒有語(yǔ)言界限的。但是Java語(yǔ)言為Java開發(fā)者提供便捷發(fā)布和調(diào)用WebService服務(wù)的一種途徑。
2、Axis2是Apache下的一個(gè)重量級(jí)WebService框架,準(zhǔn)確說它是一個(gè)Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和發(fā)布WebService,而且可以生成Java和其他語(yǔ)言版WebService客戶端和服務(wù)端代碼。這是它的優(yōu)勢(shì)所在。但是,這也不可避免的導(dǎo)致了Axis2的復(fù)雜性,使用過的開發(fā)者都知道,它所依賴的包數(shù)量和大小都是很驚人的,打包部署發(fā)布都比較麻煩,不能很好的與現(xiàn)有應(yīng)用整合為一體。但是如果你要開發(fā)Java之外別的語(yǔ)言客戶端,Axis2提供的豐富工具將是你不二的選擇。
3、XFire是一個(gè)高性能的WebService框架,在Java6之前,它的知名度甚至超過了Apache的Axis2,XFire的優(yōu)點(diǎn)是開發(fā)方便,與現(xiàn)有的Web整合很好,可以融為一體,并且開發(fā)也很方便。但是對(duì)Java之外的語(yǔ)言,沒有提供相關(guān)的代碼工具。XFire后來(lái)被 Apache收購(gòu)了,原因是它太優(yōu)秀了,收購(gòu)后,隨著Java6 JWS的興起,開源的WebService引擎已經(jīng)不再被看好,漸漸的都敗落了。
4、CXF是Apache旗下一個(gè)重磅的SOA簡(jiǎn)易框架,它實(shí)現(xiàn)了ESB(企業(yè)服務(wù)總線)。CXF來(lái)自于XFire項(xiàng)目,經(jīng)過改造后形成的,就像目前的Struts2來(lái)自WebWork一樣。可以看出XFire的命運(yùn)會(huì)和WebWork的命運(yùn)一樣,最終會(huì)淡出人們的視線。CXF不但是一個(gè)優(yōu)秀的 Web Services / SOAP / WSDL 引擎,也是一個(gè)不錯(cuò)的ESB總線,為SOA的實(shí)施提供了一種選擇方案,當(dāng)然他不是最好的,它僅僅實(shí)現(xiàn)了SOA架構(gòu)的一部分。
總結(jié)
以上是生活随笔為你收集整理的CXF和Axis的比较【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Epic 喜加一《坎巴拉太空计划》没中文
- 下一篇: Websphere 学习(二)