SOA幾乎已經(jīng)成為企業(yè)應(yīng)用架構(gòu)的主流,從2006年6月22日計(jì)算機(jī)世界“中間件應(yīng)用年會”上可以看出,大部分主題演講都涉及到SOA的應(yīng)用和部署問題,IBM當(dāng)前不僅以服務(wù)商的角色介入SOA,而且在此次大會上還帶來了眾多的SOA的成功實(shí)施案例;BEA公司也定位于SOA平臺提供商,并且推出了一系列產(chǎn)品和方案;國內(nèi)軟件企業(yè),像中創(chuàng)、東方通科技以及金蝶、用友、科諾等公司也在不同程度地切入SOA工具或解決方案的開發(fā)。種種跡象表明,SOA已經(jīng)超越概念走向應(yīng)用,并逐漸形成一股不可阻擋的潮流。
二、Web Services開源熱火朝天
1.Web Services開源項(xiàng)目
作為SOA一種主要實(shí)行方式的Web Services,其開源項(xiàng)目正如火如荼。
Java6 發(fā)布,支持XML&WebService, JDK就直接支持Web Services了。這樣Sun強(qiáng)勢參與Web Services的競爭。這種現(xiàn)象很有趣,各大廠商在各自強(qiáng)項(xiàng)之間互相滲透,Sun被Apache Harmony項(xiàng)目所逼,被一些廠商要求兩年后,將JDK開源,但同時也給IBM、BEA、Oracle等廠商反戈一擊,在剛發(fā)布的JDK 6中捆綁Web Services。
Axis2和XFire是最火的兩個Web Services開源項(xiàng)目,但其他的項(xiàng)目也做得不錯。
XFire
Celtix
Mule
Apache Axis2
Apache CXF
XFire和Celtix合并,在Apache下形成的一個新的孵化項(xiàng)目。
Apache Ode
是一個WS-BPEL實(shí)現(xiàn)
Apache Rampart
是一個WS-Security實(shí)現(xiàn)
Apache Sandesha2
是一個WS-ReliableMessaging實(shí)現(xiàn)
Apache Tuscany
是一個SCA實(shí)現(xiàn)。
Apache ServiceMix
是一個JBI實(shí)現(xiàn)。
Eclipse的STP(SOA Tooling Project)子項(xiàng)目
此Eclipse項(xiàng)目旨在提供一個其他開發(fā)人員可以使用的SOA開發(fā)工具框架,以便使他們不必自己開發(fā)這些工具。
2.Web Services開源項(xiàng)目特點(diǎn):
1)各項(xiàng)目側(cè)重點(diǎn)有些不一樣,還互相引用,交流甚多,人員合作也較多。不像Sun JDK開源和Apache Harmony,Apahce Geronomy和JBOSS等幾乎重疊,正面沖突。
2)這些項(xiàng)目都支持Spring的Bean配置或擴(kuò)展Spring的接口,和Spring集成。可見Spring火爆程度。不同開源社區(qū)不斷融合,互相吸引人氣。
3)使用工具的變化
版本管理工具由cvs變?yōu)閟ubversion
build工具由ant變?yōu)閙aven
4)眾多開源社區(qū)中Apache的人氣最旺
有意思的是,很多開源項(xiàng)目在別的小社區(qū)發(fā)展到2.0, 3.0版本后還不遺余力地遷移到Apache, 如ServiceMix從Codehaus搬到Apache,Codehaus的XFire和objectweb的Celtix合并后,喬遷到Apache。它們甚至甘愿接受Apache社區(qū)的規(guī)定:需要一段時間的修煉才能從孵化器中畢業(yè)。
3.微軟Indigo
說了這么多JAVA陣營的Web Services項(xiàng)目,還得提一下巨人微軟的策略。
Indigo是微軟用于構(gòu)建面向服務(wù)應(yīng)用程序的代號,后被正式命名為Windows Communication Foundation。Indigo允許目前創(chuàng)建面向?qū)ο髴?yīng)用程序的開發(fā)人員采用 .NET Framework以相似的方式來創(chuàng)建面向服務(wù)的應(yīng)用程序。同時為了讓這些應(yīng)用程序能夠與運(yùn)行在 Windows 和其他平臺上的軟件有效地進(jìn)行交互,Indigo 還實(shí)現(xiàn)了SOAP和其他Web服務(wù)技術(shù),這樣開發(fā)人員就可以創(chuàng)建可靠、安全且能夠與運(yùn)行在任何系統(tǒng)上的軟件實(shí)現(xiàn)互操作的事務(wù)型服務(wù)。
為了實(shí)現(xiàn)基本通信以外的功能,Indigo 采用了一些更新的WS-* 規(guī)范。這些文檔定義了用于添加可靠消息傳輸、安全性、事務(wù)以及更多基于 SOAP 的 Web 服務(wù)的多供應(yīng)商方式。所有這些規(guī)范最初均是由 Microsoft、IBM 及其他供應(yīng)商共同制定的。隨著它們?nèi)諠u穩(wěn)定,所有權(quán)通常會轉(zhuǎn)移到一些標(biāo)準(zhǔn)機(jī)構(gòu),如結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織 (OASIS)。Indigo 第一版中支持的 Web 服務(wù)規(guī)范包括 WS-Addressing、WS-Policy、WS-MetadataExchange、WS-ReliableMessaging、WS-Security、WS-Trust、WS-SecureConversation、WS-Coordination、WS- AtomicTransaction 和 SOAP 消息傳輸優(yōu)化機(jī)制 (MTOM)。
Indigo已經(jīng)包含在Vista之中。
目前Web Services的實(shí)現(xiàn)分為兩大陣營,一是微軟,一是Java廠商。這兩大陣營實(shí)現(xiàn)Web Services規(guī)范的產(chǎn)品都在互相進(jìn)行互操作性測試。
三、這一年各開源項(xiàng)目廣泛實(shí)現(xiàn)的web services規(guī)范
括弧里的開源項(xiàng)目支持前面的規(guī)范及其新版本。
SOAP 1.2(Axis2 1.1)
WSDL 2.0(XFire 1.2.2)
JAX-WS 2.0(Celtix 1.0)
WS-Policy(Axis2 1.1)
MTOM(Axis2 1.1)
XOP(Axis2 1.1)
WS-RM(Celtix 1.0、Apache Sandesha2、Axis2 1.1)
WS-Addressing(Axis2 1.1、Celtix 1.0)
WS-Security(Apache Rampart、Axis2 1.1)
SAAJ 1.1(Axis2 1.1、Celtix 1.0)
JBI(ServiceMix 3.0.1,Celtix 1.0僅集成,XFire 1.2.2僅集成,Mule)
SCA(Tuscany)
WS-BPEL(Apache Ode、ServiceMix 3.0.1)
四、爭論與融合
1. SOAP和REST正走向融合
基于SOAP和WSDL的Web Services規(guī)范多而復(fù)雜,雖然它是標(biāo)準(zhǔn)的,但是用戶頭疼,學(xué)習(xí)曲線陡而長,應(yīng)用構(gòu)建時間長。簡單就是美,易用性是金。在java企業(yè)應(yīng)用開發(fā)領(lǐng)域, EJB的沒落,Spring框架的興起和流行印證了這一規(guī)律。同樣,在SOA領(lǐng)域這一規(guī)律也已起作用,興起了另一種簡單的實(shí)現(xiàn)——REST,雖然它不是標(biāo)準(zhǔn)的。
其實(shí)REST和SOAP各有所長。REST簡單、易用,與互聯(lián)網(wǎng)思想一脈相承,核心思想是資源共享、面向資源的Web Services。而SOAP是廣為接受的標(biāo)準(zhǔn),在互操作性方面,解決復(fù)雜的系統(tǒng)集成方面優(yōu)勢明顯,其核心思想是面向活動的Web Services。
以前,REST和SOAP的爭論異常激烈。如google選擇SOAP;而Amazon 85%的web services應(yīng)用采用REST,15%采用SOAP。
但慢慢地廠商變得越來越聰明,逐步擺脫理論上的爭論,看重實(shí)際的接受度。如微軟的Web Services項(xiàng)目Indigo去年底宣布支持REST;Apache Axis2同時支持SOAP協(xié)議棧和REST,而且二者可互相通訊。
同時,SOAP族的Web Services規(guī)范新版本開始支持REST的特性(http get/post),如WSDL 2.0和SOAP 1.2
真所謂分久必合,合久必分。SOAP和REST正走向融合。
2. JBI和SCA之爭
SUN陣營支持JBI,而BEA、IBM、SAP、SIEBEL支持SCA。隨著7月初SUN公司的加入SCA/SDO國際構(gòu)件標(biāo)準(zhǔn)組織,標(biāo)志著Sun將逐步放棄自己的JBI,預(yù)示著Java和JavaEE將在未來五年內(nèi)逐漸退出‘解決客戶關(guān)鍵問題的主流技術(shù)’的地位。
其實(shí)不少JBI和JCA專家組的成員更傾向于JBI,但是IBM等不喜歡SUN控制JAVA,不愿看到將來SUN控制SOA的商業(yè)應(yīng)用。其實(shí)JBI是好東西,被犧牲了。不過,SUN如果早點(diǎn)將JDK開源,避壟斷JAVA之嫌,就不會這么孤立。
3. JAX-WS2.0 替換JAX-RPC 1.1
JAX-WS2.0即Java API for XML Web Services (JAX-WS) 2.0,JAX-RPC 1.1即Java API for XML-Based RPC (JAX-RPC) 1.1。它們都是sun公司的使用 Java 技術(shù)開發(fā) Web 服務(wù)的規(guī)范,前者是后者的升級版本。
JAX-WS2.0的binding層用JAXB(JSR 222),xml解析層用StAX(JSR 173),完全基于標(biāo)準(zhǔn),性能得到大幅提升;支持Java 5的注釋(annotation),容易開發(fā)。
五、總結(jié)
1. SOA是未來企業(yè)的IT應(yīng)用模式
而在SOA創(chuàng)造的商業(yè)世界里,企業(yè)將有機(jī)會像玩積木(網(wǎng)絡(luò)服務(wù)構(gòu)件就是積木)游戲一樣創(chuàng)造嶄新的商業(yè)模式,從不同廠商購買網(wǎng)絡(luò)服務(wù),編排和組裝自己的應(yīng)用。IT的收費(fèi)方式不是整個產(chǎn)品,也不是按CPU、license收費(fèi),而是按網(wǎng)絡(luò)服務(wù)調(diào)用次數(shù)收費(fèi)。靈活、總體擁有成本將大大降低,將注意力集中于自身的商業(yè)邏輯。
同時,經(jīng)歷十幾年、二十幾年的IT建設(shè),企業(yè)擁有了各種各樣的系統(tǒng),c++、java、c、cobra寫的各種各樣的遺留系統(tǒng),保護(hù)企業(yè)以前的投資,構(gòu)建出新的應(yīng)用,這樣的需求越來越多、越來越強(qiáng)烈。而這正是SOA發(fā)揮作用的舞臺,SOA可提供跨平臺、跨語言的、可擴(kuò)展的、可靠和安全的網(wǎng)絡(luò)服務(wù)。
Gartner預(yù)測,到2008年,75%的新企業(yè)應(yīng)用將采納SOA。
2. ESB(企業(yè)服務(wù)總線)的淡出
ESB這一概念將會淡出,SOA治理、策略(policy)和SOA Network、SOA Repository正在興起。
3. SOA應(yīng)用趨勢
總結(jié)一句,SOA的應(yīng)用大潮將至,SOA中間件產(chǎn)品的競爭越來越激烈。IBM 11月1日宣布在北京和印度成立SOA全球解決方案中心。這標(biāo)志著SOA應(yīng)用競爭的升級。
Author: orangelizq
email: orangelizq@163.com
|
|
歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人