????? SOA(service-oriented Architecture,也叫面向服務(wù)的體系結(jié)構(gòu)或面向服務(wù)架構(gòu))是指為了解決在Internet環(huán)境下業(yè)務(wù)集成的需要,通過連接能完成特定任務(wù)的獨立功能實體實現(xiàn)的一種軟件系統(tǒng)架構(gòu)。SOA是一個組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
????? 傳統(tǒng)的Web(HTML/HTTP)技術(shù)有效的解決了人與信息系統(tǒng)的交互和溝通問題,極大的促進(jìn)了B2C模式的發(fā)展。WEB服務(wù)(XML/SOAP/WSDL)技術(shù)則是要有效的解決信息系統(tǒng)之間的交互和溝通問題,促進(jìn)B2B/EAI/CB2C的發(fā)展。SOA(面向服務(wù)的體系)則是采用面向服務(wù)的商業(yè)建模技術(shù)和WEB服務(wù)技術(shù),實現(xiàn)系統(tǒng)之間的松耦合,實現(xiàn)系統(tǒng)之間的整合與協(xié)同。WEB服務(wù)和SOA的本質(zhì)思路在于使得信息系統(tǒng)個體在能夠溝通的基礎(chǔ)上形成協(xié)同工作。
? 對于面向同步和異步應(yīng)用的,基于請求/響應(yīng)模式的分布式計算來說,SOA是一場革命。一個應(yīng)用程序的業(yè)務(wù)邏輯(business logic)或某些單獨的功能被模塊化并作為服務(wù)呈現(xiàn)給消費或者客戶端。這些服務(wù)的關(guān)鍵是他們的松耦合特性。例如,服務(wù)的接口和實現(xiàn)相獨立。應(yīng)用開發(fā)人員或者系統(tǒng)集成者可以通過組合一個或多個服務(wù)來構(gòu)建應(yīng)用,而無須理解服務(wù)的底層實現(xiàn)。舉例來說,一個服務(wù)可以用。NET或J2EE來實現(xiàn),而使用該服務(wù)的應(yīng)用程序可以在不同的平臺之上,使用的語言也可以不同。
一、SOA具有的特性
SOA服務(wù)具有平臺獨立的自我描述XML文檔。Web服務(wù)描述語言(WSDL, Web Services DesCRiption Language)是用于描述服務(wù)的標(biāo)準(zhǔn)語言。
SOA 服務(wù)用消息進(jìn)行通信,該消息通常使用XML Schema來定義(也叫做XSD, XML Schema Definition)。消費者和提供者或消費者和服務(wù)之間的通信多見于不知道提供者的環(huán)境中。服務(wù)間的通訊也可以看作企業(yè)內(nèi)部處理的關(guān)鍵商業(yè)文檔。
在一個企業(yè)內(nèi)部,SOA服務(wù)通過一個扮演目錄列表(DIrECtory liSTing)角色的登記處(Registry)來進(jìn)行維護(hù)。應(yīng)用程序在登記處(Registry)尋找并調(diào)用某項服務(wù)。統(tǒng)一描述,定義和集成(UDDI, UniverSAl Description, Definition, and Integration)是服務(wù)登記的標(biāo)準(zhǔn)。
每項SOA服務(wù)都有一個與之相關(guān)的服務(wù)品質(zhì)(QOS, quality of service)。QoS的一些關(guān)鍵元素有安全需求(例如認(rèn)證和授權(quán)),可靠通信(譯注:可靠消息是指,確保消息“僅且僅僅”發(fā)送一次,從而過濾重復(fù)信息。),以及誰能調(diào)用服務(wù)的策略。
二、SOA三大基本特征
????? 1 獨立的功能實體
????? 在Internet這樣松散的使用環(huán)境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進(jìn)行控制的結(jié)構(gòu)都會面臨嚴(yán)重的穩(wěn)定性問題。SOA非常強(qiáng)調(diào)架構(gòu)中提供服務(wù)的功能實體的完全獨立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當(dāng)這些宿主運行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問題的時候,在該宿主上運行的其它應(yīng)用服務(wù)就會受到影響。
?????
SOA架構(gòu)中非常強(qiáng)調(diào)實體自我管理和恢復(fù)能力。常見的用來進(jìn)行自我恢復(fù)的技術(shù),比如事務(wù)處理(Transaction),消息隊列(Message
Queue),冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。
????? 2 大數(shù)據(jù)量低頻率訪問
?????
對于.NET
Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計算模型而言,他們的服務(wù)提供都是通過函數(shù)調(diào)用的方式進(jìn)行的,一個功能的完成往往需要通過客
戶端和服務(wù)器來回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應(yīng)速度和穩(wěn)定性帶來的影響都可以忽略不計,但是在
Internet環(huán)境下這些因素往往是決定整個系統(tǒng)是否能正常工作的一個關(guān)鍵決定因素。因此SOA系統(tǒng)推薦采用大數(shù)據(jù)量的方式一次性進(jìn)行信息交換。
????? 3 基于文本的消息傳遞
????? 由于Internet中大量異構(gòu)系統(tǒng)的存在決定了SOA系統(tǒng)必須采用基于文本而非二進(jìn)制的消息傳遞方式。在COM、CORBA這些傳統(tǒng)的組件模型中,從服務(wù)器端傳往客戶端的是一個二進(jìn)制編碼的對象,在客戶端通過調(diào)用這個對象的方法來完成某些功能;但是在Internet環(huán)境下,不同語言,不同平臺對數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務(wù)之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數(shù)據(jù)類型的,因此服務(wù)間只傳遞文本,對數(shù)據(jù)的處理依賴于接收端的方式可以幫忙繞過兼容性這個的大泥坑。
????? 此外,對于一個服務(wù)來說,Internet與局域網(wǎng)最大的一個區(qū)別就是在Internet上的版本管理極其困難,傳統(tǒng)軟件采用的升級方式在這種松散的分布式環(huán)境中幾乎無法進(jìn)行。采用基于文本的消息傳遞方式,數(shù)據(jù)處理端可以只選擇性的處理自己理解的那部分?jǐn)?shù)據(jù),而忽略其它的數(shù)據(jù),從而得到的非常理想的兼容性。
三、面向服務(wù)架構(gòu)(SOA)的原則
?
?????
SOA的強(qiáng)大和靈活性將給企業(yè)帶來巨大的好處。如果某組織將其IT架構(gòu)抽象出來,將其功能以粗粒度的服務(wù)形式表示出來,每種服務(wù)都清晰地表示其業(yè)務(wù)價值,
那么,這些服務(wù)的顧客(可能在公司內(nèi)部,也可能是公司的某個業(yè)務(wù)伙伴)就可以得到這些服務(wù),而不必考慮其后臺實現(xiàn)的具體技術(shù)。更進(jìn)一步,如果顧客能夠發(fā)現(xiàn)
并綁定可用的服務(wù),那么在這些服務(wù)背后的IT系統(tǒng)能夠提供更大的靈活性。
但是,要得到種強(qiáng)大和靈活性,需要有一種實現(xiàn)架構(gòu)的新方法,這是一項艱巨的任務(wù)。企業(yè)架構(gòu)設(shè)計師必須要變成“面向服務(wù)的架構(gòu)設(shè)計師”,不僅要理解SOA,還要理解SOA的實踐。在架構(gòu)實踐和最后得到的架構(gòu)結(jié)果之間的區(qū)別非常微妙,也非常關(guān)鍵。本文將討論SOA的實踐,即:面向架構(gòu)的設(shè)計師在構(gòu)建SOA時必須要做的事情。
?
????? SOA的原則
?????
SOA是一種企業(yè)架構(gòu),因此,它是從企業(yè)的需求開始的。但是,SOA和其它企業(yè)架構(gòu)方法的不同之處在于SOA提供的業(yè)務(wù)敏捷性。業(yè)務(wù)敏捷性是指企業(yè)對變更
快速和有效地進(jìn)行響應(yīng)、并且利用變更來得到競爭優(yōu)勢的能力。對架構(gòu)設(shè)計師來說,創(chuàng)建一個業(yè)務(wù)敏捷的架構(gòu)意味著創(chuàng)建這樣一個IT架構(gòu),它可以滿足當(dāng)前還未知
的業(yè)務(wù)需求。
????? 要滿足這種業(yè)務(wù)敏捷性,SOA的實踐必須遵循以下原則:
????? * 業(yè)務(wù)驅(qū)動服務(wù),服務(wù)驅(qū)動技術(shù)
????? 從本質(zhì)上說,在抽象層次上,服務(wù)位于業(yè)務(wù)和技術(shù)中間。面向服務(wù)的架構(gòu)設(shè)計師一方面必須理解在業(yè)務(wù)需求和可以提供的服務(wù)之間的動態(tài)關(guān)系,另一方面,同樣要理解服務(wù)與提供這些服務(wù)的底層技術(shù)之間的關(guān)系。
????? * 業(yè)務(wù)敏捷是基本的業(yè)務(wù)需求
????? SOA考慮的是下一個抽象層次:提供響應(yīng)變化需求的能力是新的“元需求”,而不是處理一些業(yè)務(wù)上的固定不變的需求。從硬件系統(tǒng)而上的整個架構(gòu)都必須滿足業(yè)務(wù)敏捷的需求,因為,在SOA中任何的瓶頸都會影響到整個IT環(huán)境的靈活性。
????? * 一個成功的SOA總在變化之中
?????
SOA工作的場景,更象是一個活的生物體,而不是象傳統(tǒng)所說的“蓋一棟房子”。IT環(huán)境唯一不變的就是變化,因此面向服務(wù)架構(gòu)設(shè)計師的工作永遠(yuǎn)不會結(jié)束。
對于習(xí)慣于蓋房子的設(shè)計師來說,要轉(zhuǎn)向設(shè)計一個活的生物體要求嶄新的思維方式。如下文所寫的,SOA的基礎(chǔ)還是一些類似的架構(gòu)準(zhǔn)則。
????? SOA基礎(chǔ)
????? 在IT行業(yè)有兩個越來越普遍的發(fā)展方向,一個是架構(gòu)方面的,一個是方法學(xué)方面的,面向服務(wù)的架構(gòu)設(shè)計師可以從中有所收獲。第一個就是MDA(模型驅(qū)動架構(gòu)),由提出CORBA的OMG模型提出。MDA認(rèn)為架構(gòu)設(shè)計師首先要對待創(chuàng)建的系統(tǒng)有一個形式化的UML(也是由OMG提出)的模型。MDA首先給出一個平臺無關(guān)的模型來表示系統(tǒng)的功能需求和Use Cases,根據(jù)系統(tǒng)搭建的平臺,架構(gòu)設(shè)計師可以由這個平臺無關(guān)的模型得到平臺相關(guān)的模型,這些平臺相關(guān)模型足夠詳細(xì),以至于可以用來直接生成需要的代碼。
?????
MDA的核心就在于在設(shè)計階段系統(tǒng)就已經(jīng)完全描述,這樣,在創(chuàng)建系統(tǒng)的時候,幾乎就沒有錯誤解釋的可能,模型也就可以直接生成代碼。但MDA有一些局限
性:首先,MDA假設(shè)在創(chuàng)建模型之前,業(yè)務(wù)需求已經(jīng)全部描述,而這一點,在當(dāng)前典型的動態(tài)業(yè)務(wù)環(huán)境中幾乎是不可能的。第二,MDA沒有一個反饋機(jī)制。如果
開發(fā)人員對模型有需要改動的地方,并沒有提供給他們這么一個途徑。
????? SOA的另一個基礎(chǔ)是敏捷方法(AM),其中非常有名的方法是極限編程(XP)。象XP這樣的AM提供了在需求未知或者多變的環(huán)境中創(chuàng)建軟件系統(tǒng)的過程。XP要求在開發(fā)團(tuán)隊中
要有一個用戶代表,他幫助書寫測試來指導(dǎo)開發(fā)人員的日常工作。開發(fā)團(tuán)隊中的所有成員都參與到設(shè)計之中,并且設(shè)計要盡量小并且非形式化。AM的目標(biāo)是僅僅創(chuàng)
建用戶想要的,而不是在一些形式化模型上耗費工作量。AM的核心思想就在于其敏捷性-處理需求變更的敏捷性。AM的主要弱點是其規(guī)模上的限制,例如,XP
在一個小團(tuán)隊和中型項目中效果不錯,但是當(dāng)項目規(guī)模增大時,如果沒有一個一致的清晰的計劃,項目成員很難把握項目中的方方面面。
????? 從表面看來,MDA和AM似乎是相對立的-MDA假定需求是固定的,而AM恰恰相反。MDA的中心是形式化的模型,而AM恰恰要避開它們。但是,我們還是決定冒險把這些不同方法中的一些元素提取出來,放入到一個一致的架構(gòu)實踐中。
?????
在SOA中有三個抽象層次,按照SOA的第一條準(zhǔn)則:業(yè)務(wù)驅(qū)動服務(wù)、服務(wù)驅(qū)動技術(shù)。AM將業(yè)務(wù)模型直接和實踐連接起來,表現(xiàn)在平臺相關(guān)的模型之中。MDA
并沒有把業(yè)務(wù)模型和平臺無關(guān)模型分開來,而是把平臺無關(guān)模型做為起點。SOA必須連接這些模型,或者說抽象層次,得到單一的架構(gòu)方法。我們將從五個視圖的架構(gòu)實現(xiàn)方法來實現(xiàn)這個連接。
????? SOA的五視圖實現(xiàn)方法
????? 企業(yè)架構(gòu)設(shè)計師發(fā)現(xiàn)他們的職業(yè)非常有競爭力并且值得驕傲,因為他們要從很多方面來通盤考慮IT系統(tǒng)。Kruchten(RUP的開發(fā)負(fù)責(zé)人)將這些方面提取出來,在應(yīng)用到SOA時,我們稱為五視圖實現(xiàn)方法(five-view approach)。
????? 四個方框表示對一個架構(gòu)的不同審視方法,分別代表不同的涉眾(stakeholder)。弟五個視圖,use-cASe視圖涵蓋了其它視圖,在架構(gòu)中扮演的是一個特殊的角色。部署視圖將軟件映射到底層平臺和相關(guān)硬件上,是系統(tǒng)部署人員對架構(gòu)的視圖;實現(xiàn)視圖描述了軟件代碼的組織,是從開發(fā)人員角度出發(fā)的視圖;業(yè)務(wù)分析人員則利用過程視圖進(jìn)行工作,它描述的是軟件系統(tǒng)的運行時特性。最后,邏輯視圖表示的是用戶的功能需求。在SOA中,面向服務(wù)的架構(gòu)必須能夠以use-case視圖中的用例將用戶連接到服務(wù),將服務(wù)連接到底層的技術(shù)。
????? 為了表示面向?qū)ο?/a>的
架構(gòu)是如何工作在這些視圖之上,讓我們將他們置于SOA元模型的上下文之中。SOA中兩個領(lǐng)域存在重疊:由業(yè)務(wù)模型和服務(wù)模型表示的業(yè)務(wù)領(lǐng)域和由服務(wù)模型
及平臺相關(guān)模型表示的技術(shù)領(lǐng)域(兩個領(lǐng)域共享服務(wù)模型)。業(yè)務(wù)用戶通過邏輯視圖和過程視圖處理粗粒度的業(yè)務(wù)服務(wù),根據(jù)變化的業(yè)務(wù)需求,按照需要將它們安排
在過程之中。另一方面,技術(shù)專家的工作是創(chuàng)建并維護(hù)服務(wù)和地層技術(shù)之間的抽象層。表示這些服務(wù)的中間模型,起到的是軸心的作用,業(yè)務(wù)以它為中心進(jìn)行。
????? SOA元模型從MDA中繼承平臺無關(guān)模型和平臺相關(guān)模型,但是添加了AM和用戶交互以及敏捷的反饋這兩部分,后者通過橢圓之間的雙向箭頭來表現(xiàn)。類似地,元模型通過引入由中心的服務(wù)模型提供的中間層抽象解決了AM在伸縮性方面的問題。這樣,服務(wù)模型中的任何需求的變化,都會反映到用戶每天的業(yè)務(wù)處理中。同樣,由于底層技術(shù)是模型驅(qū)動的,技術(shù)專家也可以根據(jù)這些變化的需求迅速而有效地作出應(yīng)變。
????? SOA實踐和過去解決企業(yè)架構(gòu)傳統(tǒng)方式的不同之處就在于其對敏捷性的支持。如前所說,SOA的第三條原則就在于它總在變化之中。這種恒在的變化性環(huán)境是SOA實踐的基石。如圖所示,涉眾(stakeholders,譯者注:RUP中也有這個詞,表示軟件開發(fā)中涉及到的各種角色如:用戶、設(shè)計人員、開發(fā)人員乃至測試人員等等。)在一個必需的基礎(chǔ)上影響到整個架構(gòu)的變化。在當(dāng)技術(shù)專家在每天的日常工作中不斷對變化的業(yè)務(wù)需求作出響應(yīng)的這種情況下,設(shè)計階段和運行階段之間的界限變得模糊起來,很難清晰地分離這兩個階段。
????? 剩下的部分
????? 我們已經(jīng)為面向服務(wù)的架構(gòu)提供了一個高層次的框架,其中MDA和AM的元素幫助工具的使用者來創(chuàng)建和維護(hù)SOA。但是,SOA中還缺少一些內(nèi)容-那就是軟件開發(fā)商和專業(yè)的服務(wù)組織必需提供的。理想情況下,開發(fā)商必需提供面向服務(wù)的業(yè)務(wù)流程、工作流以
及服務(wù)的協(xié)調(diào)工具和服務(wù);另外,能夠以一種敏捷的、平臺無關(guān)的方式充分反映業(yè)務(wù)服務(wù)的建模工具也是必須的;技術(shù)專家必須配備可以從模型中自動生成代碼,并
在代碼變化時更新模型的工具,最后,開發(fā)商必須提供支持SOA的軟件,幫助面向服務(wù)的架構(gòu)設(shè)計師以一種可信并且可伸縮的方式創(chuàng)建位于服務(wù)和底層技術(shù)之間的
抽象層次。幸運的是,這方面的產(chǎn)品即將上市。
?????
另外,最重要的就是貫穿本文的自頂而下的SOA實現(xiàn)方法了。今天關(guān)于Web services的大部分思考都是自底而上的:“這是如何創(chuàng)建Web
services的方法,現(xiàn)在,我們來使用它們集成吧”,對Web
services技術(shù)的這種方法是偉大的第一步,因為它可以驚人地降低集成的開銷,這是現(xiàn)在的技術(shù)管理人員最樂意見到的了。但當(dāng)經(jīng)濟(jì)進(jìn)一步發(fā)展,IT走出
低谷,企業(yè)會尋求IT的幫助來提高組織戰(zhàn)略意義上的核心價值。使用面向服務(wù)的架構(gòu),IT可以提供給企業(yè)實現(xiàn)業(yè)務(wù)敏捷性的這樣一個框架。
四、為什么選擇面向服務(wù)架構(gòu)(SOA)?
不同種類的操作系統(tǒng),應(yīng)用軟件,系統(tǒng)軟件和應(yīng)用基礎(chǔ)結(jié)構(gòu)(application
infrastructure)相互交織,這便是IT企業(yè)的現(xiàn)狀。一些現(xiàn)存的應(yīng)用程序被用來處理當(dāng)前的業(yè)務(wù)流程(business
processes),因此從頭建立一個新的基礎(chǔ)環(huán)境是不可能的。企業(yè)應(yīng)該能對業(yè)務(wù)的變化做出快速的反應(yīng),利用對現(xiàn)有的應(yīng)用程序和應(yīng)用基礎(chǔ)結(jié)構(gòu)
(application
infrastructure)的投資來解決新的業(yè)務(wù)需求,為客戶,商業(yè)伙伴以及供應(yīng)商提供新的互動渠道,并呈現(xiàn)一個可以支持有機(jī)業(yè)務(wù)(orGAnic business)的構(gòu)架。SOA憑借其松耦合的特性,使得企業(yè)可以按照模塊化的方式來添加新服務(wù)或更新現(xiàn)有服務(wù),以解決新的業(yè)務(wù)需要,提供選擇從而可以通過不同的渠道提供服務(wù),并可以把企業(yè)現(xiàn)有的或已有的應(yīng)用作為服務(wù), 從而保護(hù)了現(xiàn)有的IT基礎(chǔ)建設(shè)投資。
如圖1的例子所示,一個使用SOA的企業(yè),可以使用一組現(xiàn)有的應(yīng)用來創(chuàng)建一個供應(yīng)鏈復(fù)合應(yīng)用(supply chain composite application),這些現(xiàn)有的應(yīng)用通過標(biāo)準(zhǔn)接口來提供功能。
Figure 1. Supply chain application. Click on thumbnail to view full-sized image.
服務(wù)架構(gòu)
為了實現(xiàn)SOA,企業(yè)需要一個服務(wù)架構(gòu),圖2顯示了一個例子:
Figure 2. A sample service architecture. Click on thumbnail to view full-sized image.
在圖2中, 服務(wù)消費者(service consumer)可以通過發(fā)送消息來調(diào)用服務(wù)。這些消息由一個服務(wù)總線(service
bus)轉(zhuǎn)換后發(fā)送給適當(dāng)?shù)姆?wù)實現(xiàn)。這種服務(wù)架構(gòu)可以提供一個業(yè)務(wù)規(guī)則引擎(business rules
engine),該引擎容許業(yè)務(wù)規(guī)則被合并在一個服務(wù)里或多個服務(wù)里。這種架構(gòu)也提供了一個服務(wù)管理基礎(chǔ)(service management
infrastructure),用來管理服務(wù),類似審核,列表(BIlling),日志等功能。此外,該架構(gòu)給企業(yè)提供了靈活的業(yè)務(wù)流程,更好地處理控制請求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影響其他服務(wù)的情況下更改某項服務(wù)。
五、面向服務(wù)架構(gòu)(SOA)基礎(chǔ)結(jié)構(gòu)
要運行,管理SOA應(yīng)用程序,企業(yè)需要SOA基礎(chǔ),這是SOA平臺的一個部分。SOA基礎(chǔ)必須支持所有的相關(guān)標(biāo)準(zhǔn),和需要的運行時容器。圖3所示的是一個典型的SOA基礎(chǔ)結(jié)構(gòu)。接下來的章節(jié)將逐一討論該結(jié)構(gòu)的每個部分。
Figure 3. A typical SOA infrastructure. Click on thumbnail to view full-sized image.
SOAP, WSDL, UDDI
WSDL,UDDI和SOAP是SOA基礎(chǔ)的基礎(chǔ)部件。WSDL用來描述服務(wù);UDDI用來注冊和查找服務(wù);而SOAP,作為傳輸層,用來在消費者和服
務(wù)提供者之間傳送消息。SOAP是Web服務(wù)的默認(rèn)機(jī)制,其他的技術(shù)為可以服務(wù)實現(xiàn)其他類型的綁定。一個消費者可以在UDDI注冊表(registry)
查找服務(wù),取得服務(wù)的WSDL描述,然后通過SOAP來調(diào)用服務(wù)。
WS-I Basic Profile
WS-I Basic Profile,由Web服務(wù)互用性組織(Web Services Interoperability Organization)提供,是SOA服務(wù)測試與互用性所需要的核心構(gòu)件。服務(wù)提供者可以使用Basic Profile測試程序來測試服務(wù)在不同平臺和技術(shù)上的互用性。
J2EE 和 .Net
盡管J2EE和。NET平臺是開發(fā)SOA應(yīng)用程序常用的平臺,但SOA不僅限于此。像J2EE這類平臺,不僅為開發(fā)者自然而然地參與到SOA中來提供了一個平臺,還通過他們內(nèi)在的特性,將可擴(kuò)展性,可靠性,可用性以及性能引入了SOA世界。新的規(guī)范,例如 JAXB(Java API
for XML Binding),用于將XML文檔定位到Java類;JAXR(Java API for XML
Registry)用來規(guī)范對UDDI注冊表(registry)的操作;XML-RPC(Java API for XML-based
Remote Procedure
Call)在J2EE1.4中用來調(diào)用遠(yuǎn)程服務(wù),這使得開發(fā)和部署可移植于標(biāo)準(zhǔn)J2EE容器的Web服務(wù)變得容易,與此同時,實現(xiàn)了跨平臺(如。NET)
的服務(wù)互用。
服務(wù)品質(zhì)
在企業(yè)中,關(guān)鍵任務(wù)系統(tǒng)(MISsion-critical
system,譯注:關(guān)鍵任務(wù)系統(tǒng)是指如果一個系統(tǒng)的可靠性對于一個組織是至關(guān)重要的,那么該系統(tǒng)就是該企業(yè)的關(guān)鍵任務(wù)系統(tǒng)。比如,電話系統(tǒng)對于一個電話
促銷企業(yè)來說就是關(guān)鍵任務(wù)系統(tǒng),而文字處理系統(tǒng)就不那么關(guān)鍵了。)用來解決高級需求,例如安全性,可靠性,事物。當(dāng)一個企業(yè)開始采用服務(wù)架構(gòu)作為工具來進(jìn)
行開發(fā)和部署應(yīng)用的時候,基本的Web服務(wù)規(guī)范,像WSDL,SOAP,以及UDDI就不能滿足這些高級需求。正如前面所提到的,這些需求也稱作服務(wù)品質(zhì)
(QoS,quality of services)。與QoS相關(guān)的眾多規(guī)范已經(jīng)由一些標(biāo)準(zhǔn)化組織(standaRDSBOdies)提出,像W3C(World WIDE Web Consortium)和OASIS(the Organization for the Advancement of Structured InfORMation Standards)。下面的部分將會討論一些QoS服務(wù)和相關(guān)標(biāo)準(zhǔn)。
安全
Web服務(wù)安全規(guī)范用來保證消息的安全性。該規(guī)范主要包括認(rèn)證交換,
消息完整性和消息保密。該規(guī)范吸引人的地方在于它借助現(xiàn)有的安全標(biāo)準(zhǔn),例如,SAML(as Security Assertion Markup
Language)來實現(xiàn)web服務(wù)消息的安全。OASIS正致力于Web服務(wù)安全規(guī)范的制定。
????? 可靠
在典型的SOA 環(huán)境中,服務(wù)消費者和服務(wù)提供者之間會有幾種不同的文檔在進(jìn)行交換。具有諸如“僅且僅僅傳送一次”(
once-and-only-once delivery),“最多傳送一次”( at-most-once
delivery),“重復(fù)消息過濾”(duplicate message elimination),“保證消息傳送”(guaranteed
message delivery)等特性消息的發(fā)送和確認(rèn),在關(guān)鍵任務(wù)系統(tǒng)(mission-critical
systems)中變得十分重要。WS-Reliability 和
WS-ReliableMessaging是兩個用來解決此類問題的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)現(xiàn)在都由OASIS負(fù)責(zé)。
策略
服務(wù)提供者有時候會要求服務(wù)消費者與某種策略通信。比如,服務(wù)提供商可能會要求消費者提供Kerberos安全標(biāo)示,才能取得某項服務(wù)。這些要求被定義
為策略斷言(policy
assertions)。一項策略可能會包含多個斷言。WS-Policy用來標(biāo)準(zhǔn)化服務(wù)消費者和服務(wù)提供者之間的策略通信。
控制
當(dāng)企業(yè)著手于服務(wù)架構(gòu)時,服務(wù)可以用來整合數(shù)據(jù)倉庫(silos
of
data),應(yīng)用程序,以及組件。整合應(yīng)用意味著例如異步通信,并行處理,數(shù)據(jù)轉(zhuǎn)換,以及校正等進(jìn)程請求必須被標(biāo)準(zhǔn)化。在SOA中,進(jìn)程是使用一組離散的
服務(wù)創(chuàng)建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution
Language)是用來控制這些服務(wù)的語言。WSBPEL目前也由OASIS負(fù)責(zé)。
管理
隨著企業(yè)服務(wù)的增長,所使用的服務(wù)和業(yè)務(wù)進(jìn)程的數(shù)量也隨之增加,一個用來讓系統(tǒng)管理員管理所有運行在多相環(huán)境下的服務(wù)的管理系統(tǒng)就顯得尤為重要。WSDM(Web Services for Distributed Management)規(guī)定了任何根據(jù)WSDM實現(xiàn)的服務(wù)都可以由一個WSDM適應(yīng)(WSDM-compliant)的管理方案來管理。
其它的qos特性,比如合作方之間的溝通和通訊,多個服務(wù)之間的事務(wù)處理,都在WS-COOrdination 和 WS-Transaction 標(biāo)準(zhǔn)中描述, 這些都是OASIS 的工作。
六、SOA 不是Web服務(wù)
在理解SOA和Web服務(wù)的關(guān)系上,經(jīng)常發(fā)生混淆。根據(jù)2003年4月的Gartner報道,Yefim V.
Natis就這個問題是這樣解釋的:“Web服務(wù)是技術(shù)規(guī)范,而SOA是設(shè)計原則。特別是Web服務(wù)中的WSDL,是一個SOA配套的接口定義標(biāo)準(zhǔn):這是
Web服務(wù)和SOA的根本聯(lián)系。”從本質(zhì)上來說,SOA是一種架構(gòu)模式,而Web服務(wù)是利用一組標(biāo)準(zhǔn)實現(xiàn)的服務(wù)。Web服務(wù)是實現(xiàn)SOA的方式之一。用
Web服務(wù)來實現(xiàn)SOA的好處是你可以實現(xiàn)一個中立平臺,來獲得服務(wù),而且隨著越來越多的軟件商支持越來越多的Web服務(wù)規(guī)范,你會取得更好的通用性。
七、面向服務(wù)架構(gòu)(SOA)的優(yōu)勢
SOA的概念并非什么新東西,SOA不同于現(xiàn)有的分布式技術(shù)之處在于大多數(shù)軟件商接受它并有可以實現(xiàn)SOA的平臺或應(yīng)用程序。SOA伴隨著無處不在的標(biāo)
準(zhǔn),為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來了更好的重用性。SOA能夠在最新的和現(xiàn)有的應(yīng)用之上創(chuàng)建應(yīng)用;SOA能夠使客戶或服務(wù)消費者免予服務(wù)實現(xiàn)的改變所帶來的
影響;SOA能夠升級單個服務(wù)或服務(wù)消費者而無需重寫整個應(yīng)用,也無需保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)。總而言之,SOA以借助現(xiàn)有的應(yīng)用來組合產(chǎn)生
新服務(wù)的敏捷方式,提供給企業(yè)更好的靈活性來構(gòu)建應(yīng)用程序和業(yè)務(wù)流程。
八、采用服務(wù)驅(qū)動型方法的企業(yè)體驗著以下業(yè)務(wù)和 IT 好處?
??????面向服務(wù)架構(gòu)的業(yè)務(wù)好處
????? 效率: 將業(yè)務(wù)流程從 " 煙囪 " 狀的、重復(fù)的流程向維護(hù)成本較低的高度利用、共享服務(wù)應(yīng)用轉(zhuǎn)變。
????? 響應(yīng): 迅速適應(yīng)和傳送關(guān)鍵業(yè)務(wù)服務(wù)來滿足市場需求,為客戶、雇員和合作伙伴更高水準(zhǔn)的服務(wù)。
????? 適應(yīng)性: 更高效地轉(zhuǎn)入轉(zhuǎn)出讓整個業(yè)務(wù)變得復(fù)雜性和難度更小,達(dá)到節(jié)約時間和資金的目的。
????? 面向服務(wù)架構(gòu)的 IT 好處
????? 復(fù)雜性降低: 基于標(biāo)準(zhǔn)的兼容性,與點到點的集成相比降低了復(fù)雜性。
????? 重用增加: 通過重用以前開發(fā)和部署的共享服務(wù),實現(xiàn)了更有效的應(yīng)用程序 / 項目開發(fā)和交付。
????? 遺留集成: 用作可重用服務(wù)的遺留應(yīng)用程序降低了維護(hù)和集成的成本。
????? 如今的服務(wù)驅(qū)動型企業(yè)都在體驗著開發(fā)的高效率,服務(wù)的高可靠性和服務(wù)的高質(zhì)量,以最大限度獲得業(yè)務(wù)機(jī)會所帶來的這些好處。
九、SOA在國際市場上反響強(qiáng)烈
????? 自2004年初業(yè)界推出SOA后,Bea、IBM、ORACLE、微軟等業(yè)界巨頭紛紛發(fā)布自己的SOA戰(zhàn)略,建議用戶在進(jìn)行企業(yè)IT建設(shè)時考慮SOA。
????? ZapThink調(diào)研公司在最近發(fā)表的一份報告中預(yù)測,到2006年,基于SOA架構(gòu)(面向服務(wù)的架構(gòu))的中間件產(chǎn)品將成為網(wǎng)絡(luò)化商業(yè)系統(tǒng)的主要設(shè)計思路,其中70%的商業(yè)企業(yè)公司將使用SOA架構(gòu)。
????? 按照Gartner的預(yù)測,到2008年,SOA將成為占有絕對優(yōu)勢的軟件工程實踐方法,它將結(jié)束傳統(tǒng)的整體軟件體系架構(gòu)長達(dá)40年的統(tǒng)治地位。屆時,將有60%的商業(yè)公司在進(jìn)行商業(yè)IT建設(shè)時會轉(zhuǎn)向SOA。
????? IDC預(yù)測到 2007年,包括軟件、服務(wù)和硬件在內(nèi)的SOA市場將達(dá)到210億美元,其中商業(yè)企業(yè)方面的市場將達(dá)到120億美元。
????? 綜上所述SOA已經(jīng)成為大勢所趨,有著廣闊的市場空間和巨大的發(fā)展?jié)摿Γ欢谏虡I(yè)企業(yè)中的應(yīng)用,將成為SOA未來發(fā)展的一大亮點。
????? SOA已經(jīng)引起國內(nèi)商業(yè)企業(yè)的重視
?????
國內(nèi)基于SOA架構(gòu)Web服務(wù)目前還是集中在一些企業(yè)內(nèi)部,而國內(nèi)一些有影響的行業(yè)用戶正在搭建其核心業(yè)務(wù)系統(tǒng),比如商業(yè)領(lǐng)域的流通行業(yè)和銷售行業(yè)的大集
中正在起步。因此當(dāng)商業(yè)企業(yè)需要更好地服務(wù)客戶,需要更好地與上、下游合作伙伴協(xié)同工作,并且自己內(nèi)部的核心業(yè)務(wù)之間也需要協(xié)同工作時,基于SOA架構(gòu)中
間件產(chǎn)品就會為這類新的業(yè)務(wù)應(yīng)用提供理想的底座,這種新的應(yīng)用被稱作面向服務(wù)的業(yè)務(wù)應(yīng)用。
????? 現(xiàn)在,很多商業(yè)企業(yè)都準(zhǔn)備在2006年內(nèi)開始規(guī)劃使用這些基于SOA架構(gòu)的應(yīng)用,可想而知,這些SOA架構(gòu)的中間件產(chǎn)品將在兩年內(nèi)迅速發(fā)展,并在五年內(nèi)在整個IT行業(yè)內(nèi)獲得廣泛應(yīng)用。
????? 商業(yè)企業(yè)信息化存在的問題
?????
商業(yè)企業(yè)信息系統(tǒng)多數(shù)處于封閉運行的狀態(tài),企業(yè)之間、企業(yè)與上游供應(yīng)商、下游消費者之間信息不對稱。商業(yè)企業(yè)之間無法形成協(xié)同效應(yīng)。信息系統(tǒng)即無法滿足消
費者的綜合需求也無法達(dá)到企業(yè)間的商務(wù)協(xié)同自動化和智能化的需求。信息化的經(jīng)濟(jì)效益難以有效發(fā)揮。同時信息化標(biāo)準(zhǔn)不健全,如電子交換接口標(biāo)準(zhǔn)、業(yè)務(wù)流程協(xié)
同標(biāo)準(zhǔn);流通中的票證、單據(jù)格式標(biāo)準(zhǔn);電子數(shù)據(jù)交換所必須的結(jié)構(gòu)化數(shù)據(jù)標(biāo)準(zhǔn)等。
????
采用傳統(tǒng)的系統(tǒng)架構(gòu)技術(shù)和傳統(tǒng)的EAI和B2Bi技術(shù)則存在系統(tǒng)封閉、廠商依賴性強(qiáng)、耦合度高、重用性差,擴(kuò)展性差、無法和上下游企業(yè)的系統(tǒng)建立統(tǒng)一的接
口等問題。而采用SOA
技術(shù)則可以有效解決上述問題,由于SOA基于HTTP/SOAP/WSDL等開放式技術(shù),對于特定廠商產(chǎn)品依賴性小;系統(tǒng)開放、互操作性強(qiáng),可以建立統(tǒng)一
的WEB服務(wù)用于和不同的上下游企業(yè)信息系統(tǒng)實現(xiàn)供應(yīng)鏈協(xié)同。由于SOA的松耦合特性、比較符合集團(tuán)和各下屬機(jī)構(gòu)的商業(yè)關(guān)系,業(yè)務(wù)流程整合和項目協(xié)調(diào)的阻
力會有效降低。
?????
SOA以服務(wù)為基本單元,更加貼近于企業(yè)的商業(yè)活動,業(yè)務(wù)梳理和建模的復(fù)雜度會有效降低,重用性也會有效提高。另外采用SOA,企業(yè)IT系統(tǒng)所提供的服務(wù)
會更容易擴(kuò)展、組合和變更,符合該集團(tuán)目前業(yè)務(wù)發(fā)展變化較快的特點,可以有效的降低該集團(tuán)IT系統(tǒng)的長期擁有總體成本。我們將該集團(tuán)公司作為一個試點,推
進(jìn)SOA技術(shù)的運用,來有效解決上述問題。
????? “協(xié)同商務(wù)”的新經(jīng)濟(jì)時代即將到來
?????
采用SOA技術(shù)最終將使得各個商業(yè)企業(yè)之間、各個關(guān)聯(lián)的經(jīng)濟(jì)實體之間實現(xiàn)高效實時的聯(lián)接,使得整個產(chǎn)業(yè)鏈實現(xiàn)自動化的協(xié)同商務(wù),將會有力的提高商業(yè)企業(yè)的
應(yīng)變能力,轉(zhuǎn)變現(xiàn)有的商業(yè)運作模式,轉(zhuǎn)變經(jīng)濟(jì)增長的方式。SOA技術(shù)將促進(jìn)信息系統(tǒng)在商業(yè)企業(yè)貿(mào)易活動中的全面滲入和發(fā)展,對于簡單的貿(mào)易活動,將會由信
息系統(tǒng)自動化實現(xiàn);對于復(fù)雜的貿(mào)易活動,信息系統(tǒng)將會為企業(yè)管理人員提供足夠的決策信息并可以高效的執(zhí)行決策。SOA技術(shù)的應(yīng)用將會全面提高商務(wù)的自動
化、智能化和實時化水平。
?????
采用SOA技術(shù)實現(xiàn)協(xié)同商務(wù)可以提高城市范圍內(nèi)商流、物流、資金流和信息流的運行效率,擴(kuò)大北京市商業(yè)企業(yè)整體規(guī)模效益,加強(qiáng)商業(yè)企業(yè)的整體對外競爭力,
拉動經(jīng)濟(jì)增長,降低企業(yè)運營成本,推動城市流通信息技術(shù)創(chuàng)新體系的建立,提高北京市流通現(xiàn)代化水平,促進(jìn)城市管理現(xiàn)代化和城市社會經(jīng)濟(jì)信息化的進(jìn)程。
????? 采用SOA技術(shù)可以將將物流企業(yè)、物業(yè)企業(yè)、商業(yè)企業(yè)、消費者整體整合在一起,對供應(yīng)鏈關(guān)聯(lián)企業(yè)、物流企業(yè)以及網(wǎng)上支付體系、安全認(rèn)證體系等環(huán)境建設(shè)具有明顯的帶動作用,有利于促進(jìn)支撐環(huán)境協(xié)同發(fā)展。
????? 促進(jìn)商業(yè)企業(yè)信息化標(biāo)準(zhǔn)的制定,完善政府職能
????? 采用SOA技術(shù)為信息系統(tǒng)的溝通提供了技術(shù)基礎(chǔ),而隨著SOA在商業(yè)企業(yè)的應(yīng)用,必將促進(jìn)統(tǒng)一的商業(yè)領(lǐng)域電子商務(wù)行業(yè)標(biāo)準(zhǔn)的發(fā)展和制定,對促進(jìn)國家商業(yè)企業(yè)信息標(biāo)準(zhǔn)體系的建立和完善具有重要支撐作用。
????? SOA技術(shù)為政府對商業(yè)經(jīng)濟(jì)的運行狀況提供了實時監(jiān)測和指導(dǎo)的技術(shù)可能性,將從根本上改變政府對社會經(jīng)濟(jì)的管理方式。
?????
基于SOA的協(xié)同商務(wù)帶來的最直接的好處就是由于貿(mào)易范圍的空前擴(kuò)大而產(chǎn)生的全球貿(mào)易活動的大幅度增加,因而提高了貿(mào)易環(huán)節(jié)中大多數(shù)角色的交易量,因此,
全球范圍的經(jīng)濟(jì)形勢將向一個良好的增長趨勢發(fā)展。它還可以擴(kuò)大地方商業(yè)企業(yè)整體規(guī)模效益,加強(qiáng)商業(yè)企業(yè)的業(yè)務(wù)整合和商業(yè)協(xié)同效應(yīng),提高商業(yè)企業(yè)的整體對外
競爭力,通過協(xié)同商務(wù)有效降低企業(yè)運營成本,推動城市流通信息技術(shù)創(chuàng)新體系的建立,提高地方的流通現(xiàn)代化水平,促進(jìn)城市管理現(xiàn)代化和城市社會經(jīng)濟(jì)信息化的
進(jìn)程。
?????
SOA在商業(yè)企業(yè)的應(yīng)用可以將物流企業(yè)、物業(yè)企業(yè)、商業(yè)企業(yè)、消費者整體整合在一起,對供應(yīng)鏈關(guān)聯(lián)企業(yè)、物流企業(yè)以及網(wǎng)上支付體系、安全認(rèn)證體系等環(huán)境建
設(shè)具有明顯的帶動作用,可推動信息化各環(huán)節(jié)的全面應(yīng)用與發(fā)展,有利于促進(jìn)產(chǎn)業(yè)鏈和支撐環(huán)境協(xié)同發(fā)展,從而也創(chuàng)造了更多的就業(yè)機(jī)會和社會財富。
?????
信息產(chǎn)業(yè)是知識經(jīng)濟(jì)的核心和主要的推動力,而企業(yè)信息化又是目前信息產(chǎn)業(yè)中最具前途的發(fā)展趨勢,因此說企業(yè)信息化的發(fā)展,必將直接或間接地推動知識經(jīng)濟(jì)的
浪潮。這種知識經(jīng)濟(jì)有著大量的無形成本和高附加值,在東南亞金融危機(jī)的同時,高科技給美國帶來的是"高增長速度、高就業(yè)率、低通貨膨脹率"。這也是我國在
宣傳知識經(jīng)濟(jì)的熱潮中應(yīng)注意的一個真正有價值的切入點。
????? SOA技術(shù)由于其前所未有的信息系統(tǒng)整合與自動協(xié)同能力,成為繼互聯(lián)網(wǎng)以來又一個革命性的技術(shù),將會把目前基于WEB/互聯(lián)網(wǎng)的知識經(jīng)濟(jì)推進(jìn)到一個前所未有的新階段。
十、SOA 企業(yè)考慮事項
?????
服務(wù)驅(qū)動型企業(yè)在對客戶、合作伙伴和雇員的高效化服務(wù)方面得到了優(yōu)化 --
并加速了業(yè)務(wù)服務(wù)響應(yīng)時間。然而,成為服務(wù)驅(qū)動型企業(yè),需要的不僅僅是產(chǎn)品的部署。對實現(xiàn)服務(wù)驅(qū)動型架構(gòu)感興趣的企業(yè)將希望能與一個有經(jīng)驗的 SOA
提供商合作,它提供的服務(wù)可以保護(hù)企業(yè)在業(yè)務(wù)和 IT 方面的投入,他們考慮到了以下幾個方面:?
????? 業(yè)務(wù)戰(zhàn)略: 組織需要明確驅(qū)動關(guān)鍵業(yè)務(wù)流程的業(yè)務(wù)戰(zhàn)略,它將用于成形 SOA 的框架。一旦識別出業(yè)務(wù)問題,就可以用一種一致的、可復(fù)用的方法對其進(jìn)行定義,并實現(xiàn)解決方案。在這個關(guān)鍵的基礎(chǔ)階段,業(yè)務(wù)通常需要與一個擁有開發(fā) SOA 業(yè)務(wù)戰(zhàn)略經(jīng)驗、并能共享橫向和縱向市場最佳實踐的提供商進(jìn)行合作。
????? 體系結(jié)構(gòu):
為了解決方案快速和動態(tài)的交付,企業(yè)必須開發(fā)一種允許裝配組件和服務(wù)的體系結(jié)構(gòu)框架。通過與有經(jīng)驗的 SOA
提供商合作,企業(yè)可以獲得相應(yīng)的參考案例,以快速搭建一個關(guān)注復(fù)用、避免 " 煙囪 " ( stovepipe )式應(yīng)用程序和 IT 資源 "
孤島 " 的體系結(jié)構(gòu)。此外,有經(jīng)驗的 SOA 提供商還可以幫助企業(yè)對項目的易管理性進(jìn)行設(shè)計。
????? 構(gòu)建模塊:
不管是對體系結(jié)構(gòu)還是對編程模型來說, SOA 都是是思考構(gòu)建軟件模型的一種優(yōu)秀方式。與 SOA 提供商進(jìn)行合作能讓組織能夠識別可在 SOA
實現(xiàn)中使用或重用的構(gòu)建模塊代碼、服務(wù)、應(yīng)用程序和組件。與有經(jīng)驗的 SOA 提供商進(jìn)行合作還有一個好處,企業(yè)可以獲得對構(gòu)造組件、企業(yè)域(
domains )、服務(wù)和規(guī)范數(shù)據(jù)模型的參考經(jīng)驗。
????? 項目和應(yīng)用程序: SOA
創(chuàng)造了一種在更強(qiáng)大、更靈活的編程模式中搭建應(yīng)用程序的新方法。與 SOA 提供商合作的企業(yè)可以更好地識別將被合并到 SOA
結(jié)構(gòu)體系中的現(xiàn)存的和正在使用的應(yīng)用程序。有經(jīng)驗的 SOA 提供商還將引導(dǎo)項目基礎(chǔ)架構(gòu)的搭建,并對正在進(jìn)行中的項目提供有效的管理。
成本和收益: 在一個 SOA 項目中,開發(fā)和維護(hù)成本將大大削減,。有經(jīng)驗的 SOA 提供商可以幫助企業(yè)構(gòu)造 SOA 基金模式,并構(gòu)建 " 行動案例 " ,包括評估基礎(chǔ)構(gòu)造成本和效益、實現(xiàn)項目的最佳投資回報( ROI )以及開發(fā)商務(wù)案例。
????? 組織和統(tǒng)轄: 組織需要為新的面向服務(wù)的 IT 組織識別角色和職責(zé),并優(yōu)化經(jīng)驗集便于以后使用。有經(jīng)驗的 SOA 提供商可以幫助企業(yè)實現(xiàn)這些目標(biāo),同時組織一個有效的設(shè)計 " 復(fù)用工廠 " ( Reuse Factory ),幫助定義統(tǒng)轄模式,并最終保證客戶滿意。