詳細講述SOA的發展歷史與標準規範

  1. soa發展回顧

soa的概念最初由gartner公司提出,由於當時的技術水平和市場環境尚不具備真正實施soa的條件,因此當時soa並未引起人們的廣泛關注,soa在當時沉寂了一段時間。伴隨著網際網路的浪潮,越來越多的企業將業務轉移到網際網路領域,帶動了電子商務的蓬勃發展。為了能夠將公司的業務打包成獨立的、具有很強伸縮性的基於網際網路的服務,人們提出了web服務的概念,這可以說是soa的發端。

web服務開始流行以後,網際網路迅速出現了大量的基於不同平台和語言開發的web服務組件。為了能夠有效地對這些為數眾多的組件進行管理,人們迫切需要找到一種新的面向服務的分散式web計算架構。該架構要能夠使這些由不同組織開發的web服務能夠相互學習和互動,保障安全以及兼顧復用性和可管理性。由此,人們重新找回面向服務的架構(service-oriented architecture,soa),並賦予其時代的特徵。需求推動技術進步,正是這種強烈的市場需求,使得soa再次成為人們關注的焦點。回顧soa發展歷程,我們把其大致分為了三個階段。下面將分別介紹每個階段的重要標準和規範。

1.1 孕育階段

這一階段以xml技術為標誌,時間大致從上世紀九十年代末到本世紀初。雖然這段時期很少提到soa,但xml的出現無疑為soa的興起奠定了穩固的基石。

可擴展標記語言(extensibl markup language,xml)系w3c所創建,源自流行的標準通用標記語言(standard generalised markup language,sgml),它在上世紀60年代後期就已存在。這種廣泛使用的元語言,允許組織定義文檔的元數據,實現企業內部和企業之間的電子數據交換。由於sgml比較複雜,實施成本很高,因此很長時間裡只用於大公司之間,限制了它的推廣和普及。

通過xml,開發人員擺脫了html語言的限制,可以將任何文檔轉換成xml格式,然後跨越網際網路協定傳輸。藉助xml轉換語言(extensible stylesheet language transformation,xslt),接受方可以很容易地解析和抽取xml的數據。這使得企業既能夠將數據能夠以一種統一的格式描述和交換,同時又不必負擔sgml那樣高的成本。事實上,xml實施成本幾乎和html一樣。

xml是soa的基石。xml規定了服務之間以及服務內部數據交換的格式和結構。xsd schemas 保障了訊息數據的完整性和有效性,而xslt使得不同的數據表達能溝通過schema映射而互相通信。

1.2 發軔之初

2000年以後,人們普遍認識到基於公共——專有網際網路之上的電子商務具有極大的發展潛力,因此需要創建一套全新的基於網際網路的開放通信框架,以滿足企業對電子商務中各分立系統之間通信的要求。於是,人們提出了web服務的概念,希望通過將企業對外服務封裝為基於統一標準的web服務,實現異構系統之間的簡單互動。這一時期,出現了三個著名的web服務標準和規範:

? 簡單對象訪問協定(simple object access protocal,soap)
? web服務描述語言(web services description language,wsdl)
? 通用服務發現和集成協定(universal discovery description and integration,uudi)

這三個標準可謂web服務三劍客,極大地推動了web服務的普及和發展。短短几年之間,網際網路上出現了大量的web服務,越來越多的網站和公司將其對外服務或業務接口封裝成web服務,有力地推動了電子商務和網際網路的發展。web服務也是網際網路web 2.0時代的一項重要特徵。

1.3 成長階段

從2005年開始,soa推廣和普及工作開始加速。不僅專家學者,幾乎所有關心軟體
行業發展的人士都開始把目光投向soa。一時間,soa頻頻出現在各種技術媒體、新產品發布會和技術交流會上。

各大廠商也逐漸放棄成見,通過建立廠商間的協作組織共同努力制定中立的soa標準。這一努力最重要的成果體現在3個重量級規範上:sca/sdo/ws-policy。sca和sdo構成了soa編程模型的基礎,而ws-policy建立了soa組件之間安全互動的規範。這三個規範的發布,標誌著soa進入了實施階段。

從整體架構角度看,人們已經把關注點從簡單的web服務拓展到面向服務體系架構的各個方面,包括安全、業務流程和事務處理等。 
2. 標準與規範

2.1 標準與規範的區別

大多數人習慣上把“標準”與“規範”這兩個術語交替使用,這樣做基本沒有問題。但嚴格地講,二者還是有一定差異的。規範是標準的建議文檔。這就意味著,標準一般是由業界公認的標準化組織制定和發布。而規範要靈活的多,多為廠商或非標準化組織發布。事實上,很多規範並不是標準,比如sdo和sca,而是由某些廠商或廠商聯盟制定發布。但是憑藉這些廠商強大的市場地位,這些規範往往會成為事實上的標準。

我們大體上可以把soa標準分為xml標準集、web服務標準集和soa參考模型,下面我將分別介紹,為敘述方便,不再嚴格區分標準和規範,統一稱作標準。

2.2 xml標準集

2001年10月,w3c發布了xml信息集(xml information set,xml infoset)。
infoset是一個抽象的數據模型,它兼容基於文本的xml 1.0,也是所有最新xml規範(xml schema、xml query和xslt 2.0)的基礎。由於web服務架構是以xml infoset為基礎,而不是以某一特定的表現形式為基礎,使得該架構及其核心協定組件可與各種編碼技術兼容。

除了基於純文本的infoset編碼技術以外,web服務架構還需要支持另外一種編碼技術——即允許不透明的二進制數據與傳統的基於文本的標記交織在一起。由於xml infoset僅支持基於文本的xml,w3c於2005年初發布了xml二進制最佳化封裝協定(xml-binary optimized packaging,xop)。xop格式使用mime將原始二進制數據引入到xml 1.0文檔中,而不採用base64編碼。通過其配套規範——soap 訊息(transmission optimization method,mtom)實現將二進制xop格式綁定到soap。xop和mtom是將原始二進制數據與基於文本的xml混合在一起的首選方法,它們取代了目前普遍遭到反對的soap with attachments(swa)和ws-attachments/dime。

2.3 web服務標準集

經過幾年的努力,web服務標準集已經初具規模,內容涵蓋傳輸層、訊息機制、編程模型、服務發現和描述、可靠性、事務處理、安全和管理等方面。儘管其中部分內容還處於規範級別,但由於受到廣泛的關注和支持,成為正式標準只是時間上的問題。

  2.4 soa參考模型

soa參考模型由結構化信息標準促進組織制定和發布。事實上,它並不是一個標準,而是soa架構的一個抽象框架,統一了soa相關術語用法並且定義了這些術語的涵義,同時還明確定義了soa各組件之間的關係。soa架構師或系統設計人員可以根據這個模型指導自己的soa實踐,下圖說明了soa參考模型與soa實踐之間的關係。

  從上圖可以看出,參考模型位於抽象級別的頂部,也就是說參考模型提供了soa實現的抽象基礎。每個soa架構設計者都要考慮參考架構、模式、模型以及由參考架構派生出的概念架構,審慎思考實際環境(需求、動機和目標等)對實現架構的影響,同時利用已有的標準和協定,這樣就形成了一個比較完整的soa設計方法論。總而言之,soa參考模型使得我們能夠系統地考慮soa架構的實現,並給出最基本的概念和設計模式。

3. 標準化組織對標準的貢獻

3.1結構化信息標準促進組織(organization for the advancement of structured information standards,oasis)

oasis是一個非贏利的國際協會,致力於電子商務相關標準的制定和推廣,也是目前制定web服務標準最多的一個組織。除了制定通用的電子商務、web服務和安全標準之外,oasis還制定了很多針對行業的電子標準。oasis理事會成員幾乎全部來自微軟、ibm、bea system、oracle、sun、sap ag、諾基亞等業界大公司。

oasis為soa專門成立了六個技術委員會(technical committees),分別負責制定電子商務、web service開發和部署、服務質量以及面向服務架構等方面的標準。

3.2 開放soa合作組織(open soa collaboration,osoa)

osoa是一個非正式的廠商聯盟,使得各廠商能夠共同開發一個語言中立的編程模型。該編程模型幫助企業軟體開發人員能夠最大限度的發揮soa架構的特性和優勢。目前加入osoa的廠商包括ibm、bea、sap、oracle等。儘管osoa不是一個標準化組織,但由於有ibm、bea等業界廠商的支持,它制定的規範很可能會成為事實上的標準。因此,我們可以把它看作一個準標準化組織。osoa成立了兩個項目組,分別負責制定sca和sdo規範。

3.3全球資訊網聯盟(world wide web consortium,w3c)

w3c成立於1994年,主要負責制定web相關標準和規範,比如html、css等。w3c專門成立了web服務專區,下轄六個工作組,負責制定web服務相關的標準。w3c對web服務的發展可謂功不可沒,像非常著名的soap和wsdl皆出自於w3c。

3.4 web服務互操作組織(web services interoperability organization,ws-i)

ws-i是一個開放的廠商聯盟,鼓勵任何對web服務有興趣的廠商加盟並貢獻自己的力量。 它主要致力於提升web服務基於平台、作業系統和程式語言中立的互操作能力,其成員幾乎覆蓋了所有重量級廠商,如ibm、微軟、sun、oracle和bea等。

3.5 網際網路工程任務組(internet engineering task force,ietf)

the ietf(網際網路工程工作小組)是定義標準網際網路操作協定(像tcp/ip)的團體,ietf接受國際網際網路協會internet架構委員會(internet architecture board,iab)的監督管理。ietf的成員分別來自於網際網路協會的個人或者組織成員。

4.廠商之間的博弈

誰控制了標準,誰就控制了遊戲規則,就能夠在未來的軟體行業立於不敗之地。因此,幾乎當前所有的主要工具供應商和平台提供商都參與了soa標準的制定,包括微軟、ibm、bea、oracle、sun、sap ag、諾基亞、iona、xcalia、zend 、sonic software。

表面上,標準化組織都聲稱自己獨立於任何廠商,強調其獨立性和自主性。但如果觀察這些組織理事會的成員構成,就會發現大部分成員都來自上面提到的業界寡頭,來自歐美已開發國家,可以說是“大國俱樂部”和“大廠俱樂部”。

在參與制定標準的同時,各大廠還開始併購優秀的行業soa解決方案提供商,積累針對特定行業標準的實施經驗,以期獲取競爭優勢。2006年8月,ibm宣布成功收購了一家專門提供面向行業的 soa軟體與服務的私有企業——webify解決方案公司。webify公司專注於提供幫助企業加速開發和部署套用的軟體產品,以及數以百計的針對特定行業的基於標準的預置加速器、工具和框架,用於解決特定行業的業務問題,如幫助醫療保健行業符合《健康保險便攜性及責任性法案》(hipaa)的要求、幫助保險行業滿足《國際保險業數據標準》(acord)等。此次收購將進一步增強ibm在soa領域的領導地位。 webify在語義方面的專業技術與ibm在開放標準開發利用豐富經驗的結合,能夠更好地解決特定垂直行業的常見業務問題。

5.標準的發展趨勢

2007年將有三個重量級的標準問世,它們目前都屬於規範級別。它們就是sca、sdo、ws-policy。sca和sdo構成了soa組件開發的核心,而ws-policy則成為soa組件間安全通訊的標準,其作用類似於安全套接層在瀏覽器與伺服器通訊中的重用。事實上,ws-policy的基本原理與ssl是一致的。

今後標準開發將具有一個共同的特點,就是標準與soa架構的協調性。也就是說,無論是已有的標準還是正在開發的標準,都必須符合soa架構的要求,同時要考慮單個標準與其它soa標準之間的協調一致。

2007年將會有許多soa的規範升級為標準。sca和sdo計畫於2007年由oasis審核通過,而ws-policy也將於2007年8月正式成為w3c標準。

基於市場的強勁需求,各標準化組織將繼續加大在制定soa相關標準上的投入力度,標準的制定和發布周期將大大縮短。比如對ws-policy,w3c制定了精密的時間表。目前ws-policy的發布時間表是這樣安排的,2007年3月發布候選推薦版本(candidate recommendation drafts),2007年7月發布提議推薦版本(proposed recommendation drafts),2007年8月發布w3c推薦版本(w3c recommendations)。w3c歷來以嚴謹和審慎著稱,發布一個標準平均需要3至5年的時間。但就ws-policy而言,從2006年4月 ibm和微軟公司將ws-policy規範提交給w3c算起,按照目前的時間表,整個標準發布周期僅為16個月。