面向服務的體系結(jié)構(gòu)(service-oriented architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務可以以一種統(tǒng)一和通用的方式進行交互。

這種具有中立的接口定義(沒有強制綁定到特定的實現(xiàn)上)的特征稱為服務之間的松耦合。松耦合系統(tǒng)的好處有兩點,一點是它的靈活性,另一點是,當組成整個應用程序的每個服務的內(nèi)部結(jié)構(gòu)和實現(xiàn)逐漸地發(fā)生改變時,它能夠繼續(xù)存在。而另一方面,緊耦合意味著應用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連的,因而當需要對部分或整個應用程序進行某種形式的更改時,它們就顯得非常脆弱。

對松耦合的系統(tǒng)的需要來源于業(yè)務應用程序需要根據(jù)業(yè)務的需要變得更加靈活,以適應不斷變化的環(huán)境,比如經(jīng)常改變的政策、業(yè)務級別、業(yè)務重點、合作伙伴關(guān)系、行業(yè)地位以及其他與業(yè)務有關(guān)的因素,這些因素甚至會影響業(yè)務的性質(zhì)。我們稱能夠靈活地適應環(huán)境變化的業(yè)務為按需(On demand)業(yè)務,在按需業(yè)務中,一旦需要,就可以對完成或執(zhí)行任務的方式進行必要的更改。

雖然面向服務的體系結(jié)構(gòu)不是一個新鮮事物,但它卻是更傳統(tǒng)的面向?qū)ο蟮哪P偷奶娲P停嫦驅(qū)ο蟮哪P褪蔷o耦合的,已經(jīng)存在二十多年了。雖然基于 SOA 的系統(tǒng)并不排除使用面向?qū)ο蟮脑O計來構(gòu)建單個服務,但是其整體設計卻是面向服務的。由于它考慮到了系統(tǒng)內(nèi)的對象,所以雖然 SOA 是基于對象的,但是作為一個整體,它卻不是面向?qū)ο蟮摹2煌幵谟诮涌诒旧怼OA 系統(tǒng)原型的一個典型例子是通用對象請求代理體系結(jié)構(gòu)(Common Object Request Broker Architecture,CORBA),它已經(jīng)出現(xiàn)很長時間了,其定義的概念與 SOA 相似。

然而,現(xiàn)在的 SOA 已經(jīng)有所不同了,因為它依賴于一些更新的進展,這些進展是以可擴展標記語言(eXtensible Markup Language,XML)為基礎(chǔ)的。通過使用基于 XML 的語言(稱為 Web 服務描述語言(Web Services Definition Language,WSDL))來描述接口,服務已經(jīng)轉(zhuǎn)到更動態(tài)且更靈活的接口系統(tǒng)中,非以前 CORBA 中的接口描述語言(Interface Definition Language,IDL)可比了。

Web 服務并不是實現(xiàn) SOA 的惟一方式。前面剛講的 CORBA 是另一種方式,這樣就有了面向消息的中間件(Message-Oriented Middleware)系統(tǒng),比如 IBM 的 MQseries。但是為了建立體系結(jié)構(gòu)模型,您所需要的并不只是服務描述。您需要定義整個應用程序如何在服務之間執(zhí)行其工作流。您尤其需要找到業(yè)務的操作和業(yè)務中所使用的軟件的操作之間的轉(zhuǎn)換點。因此,SOA 應該能夠?qū)I(yè)務的商業(yè)流程與它們的技術(shù)流程聯(lián)系起來,并且映射這兩者之間的關(guān)系。例如,給供應商付款的操作是商業(yè)流程,而更新您的零件數(shù)據(jù)庫,以包括進新供應的貨物卻是技術(shù)流程。因而,工作流還可以在 SOA 的設計中扮演重要的角色。

此外,動態(tài)業(yè)務的工作流不僅可以包括部門之間的操作,甚至還可以包括與不為您控制的外部合作伙伴進行的操作。因此,為了提高效率,您需要定義應該如何得知服務之間的關(guān)系的策略,這種策略常常采用服務級協(xié)定和操作策略的形式。

最后,所有這些都必須處于一個信任和可靠的環(huán)境之中,以同預期的一樣根據(jù)約定的條款來執(zhí)行流程。因此,安全、信任和可靠的消息傳遞應該在任何 SOA 中都起著重要的作用。

我可以用面向服務的體系結(jié)構(gòu)做什么?
對 SOA 的需要來源于需要使業(yè)務 IT 系統(tǒng)變得更加靈活,以適應業(yè)務中的改變。通過允許強定義的關(guān)系和依然靈活的特定實現(xiàn),IT 系統(tǒng)既可以利用現(xiàn)有系統(tǒng)的功能,又可以準備在以后做一些改變來滿足它們之間交互的需要。

下面舉一個具體的例子。一個服裝零售組織擁有 500 家國際連鎖店,它們常常需要更改設計來趕上時尚的潮流。這可能意味著不僅需要更改樣式和顏色,甚至還可能需要更換布料、制造商和可交付的產(chǎn)品。如果零售商和制造商之間的系統(tǒng)不兼容,那么從一個供應商到另一個供應商的更換可能就是一個非常復雜的軟件流程。通過利用 WSDL 接口在操作方面的靈活性,每個公司都可以將它們的現(xiàn)有系統(tǒng)保持現(xiàn)狀,而僅僅匹配 WSDL 接口并制訂新的服務級協(xié)定,這樣就不必完全重構(gòu)它們的軟件系統(tǒng)了。這是業(yè)務的水平改變,也就是說,它們改變的是合作伙伴,而所有的業(yè)務操作基本上都保持不變。這里,業(yè)務接口可以作少許改變,而內(nèi)部操作卻不需要改變,之所以這樣做,僅僅是為了能夠與外部合作伙伴一起工作。

另一種形式是內(nèi)部改變,在這種改變中,零售組織現(xiàn)在決定它還將把連鎖零售商店內(nèi)的一些地方出租給專賣流行衣服的小商店,這可以看作是采用店中店(store-in-store)的業(yè)務模型。這里,雖然公司的大多數(shù)業(yè)務操作都保持不變,但是它們現(xiàn)在需要新的內(nèi)部軟件來處理這樣的出租安排。盡管在內(nèi)部軟件系統(tǒng)可以承受全面的檢修,但是它們需要在這樣做的同時不會對與現(xiàn)有的供應商系統(tǒng)的交互產(chǎn)生大的影響。在這種情況下,SOA 模型保持原封不動,而內(nèi)部實現(xiàn)卻發(fā)生了變化。雖然可以將新的方面添加到 SOA 模型中來加入新的出租安排的職責,但是正常的零售管理系統(tǒng)繼續(xù)如往常一樣。

為了延續(xù)內(nèi)部改變的觀念,IT 經(jīng)理可能會發(fā)現(xiàn),軟件的新配置還可以以另外的一種方式加以使用,比如出租粘貼海報的地方以供廣告之用。這里,新的業(yè)務提議是通過在新的設計中重用靈活的 SOA 模型得出的。這是來自 SOA 模型的新成果,并且還是一個新的機會,而這樣的新機會在以前可能是不會有的。

垂直改變也是可能的,在這種改變中,零售商從銷售他們自己的服裝完全轉(zhuǎn)變到專門通過店中店模型出租地方。如果垂直改變完全從最底層開始的話,就會帶來 SOA 模型結(jié)構(gòu)的顯著改變,與之一起改變的還可能有新的系統(tǒng)、軟件、流程以及關(guān)系。在這種情況下,SOA 模型的好處是它從業(yè)務操作和流程的角度考慮問題而不是從應用程序和程序的角度考慮問題,這使得業(yè)務管理可以根據(jù)業(yè)務的操作清楚地確定什么需要添加、修改或刪除。然后可以將軟件系統(tǒng)構(gòu)造為適合業(yè)務處理的方式,而不是在許多現(xiàn)有的軟件平臺上常常看到的其他方式。

正如您可以看到的,在這里,改變和 SOA 系統(tǒng)適應改變的能力是最重要的部分。對于開發(fā)人員來說,這樣的改變無論是在他們工作的范圍之內(nèi)還是在他們工作的范圍之外都有可能發(fā)生,這取決于是否有改變需要知道接口是如何定義的以及它們相互之間如何進行交互。與開發(fā)人員不同的是,架構(gòu)師的作用就是引起對 SOA 模型大的改變。這種分工,就是讓開發(fā)人員集中精力于創(chuàng)建作為服務定義的功能單元,而讓架構(gòu)師和建模人員集中精力于如何將這些單元適當?shù)亟M織在一起,它已經(jīng)有十多年的歷史了,通常用統(tǒng)一建模語言(Universal Modeling Language,UML),并且描述成模型驅(qū)動的體系結(jié)構(gòu)(Model-Driven Architecture,MDA)。

 

 

 

 

SOA(service-oriented architecture,也叫面向服務的體系結(jié)構(gòu)面向服務架構(gòu))是指為了解決在Internet環(huán)境下業(yè)務集成的需要,通過連接能完成特定任務的獨立功能實體實現(xiàn)的一種軟件系統(tǒng)架構(gòu)。SOA是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務可以以一種統(tǒng)一和通用的方式進行交互。

      傳統(tǒng)的Web(HTML/HTTP)技術(shù)有效的解決了人與信息系統(tǒng)的交互和溝通問題,極大的促進了B2C模式的發(fā)展。WEB服務(XML/SOAP/WSDL)技術(shù)則是要有效的解決信息系統(tǒng)之間的交互和溝通問題,促進B2B/EAI/CB2C的發(fā)展。SOA(面向服務的體系)則是采用面向服務的商業(yè)建模技術(shù)和WEB服務技術(shù),實現(xiàn)系統(tǒng)之間的松耦合,實現(xiàn)系統(tǒng)之間的整合與協(xié)同。WEB服務和SOA的本質(zhì)思路在于使得信息系統(tǒng)個體在能夠溝通的基礎(chǔ)上形成協(xié)同工作。

   對于面向同步和異步應用的,基于請求/響應模式的分布式計算來說,SOA是一場革命。一個應用程序的業(yè)務邏輯(business logic)或某些單獨的功能被模塊化并作為服務呈現(xiàn)給消費者或客戶端。這些服務的關(guān)鍵是他們的松耦合特性。例如,服務的接口和實現(xiàn)相獨立。應用開發(fā)人員或者系統(tǒng)集成者可以通過組合一個或多個服務來構(gòu)建應用,而無須理解服務的底層實現(xiàn)。舉例來說,一個服務可以用。NET或J2EE來實現(xiàn),而使用該服務的應用程序可以在不同的平臺之上,使用的語言也可以不同。

一、SOA具有的特性

  SOA服務具有平臺獨立的自我描述XML文檔。Web服務描述語言(WSDL, Web Services Description Language)是用于描述服務的標準語言。

  SOA 服務用消息進行通信,該消息通常使用XML Schema來定義(也叫做XSD, XML Schema Definition)。消費者和提供者或消費者和服務之間的通信多見于不知道提供者的環(huán)境中。服務間的通訊也可以看作企業(yè)內(nèi)部處理的關(guān)鍵商業(yè)文檔。

  在一個企業(yè)內(nèi)部,SOA服務通過一個扮演目錄列表(directory listing)角色的登記處(Registry)來進行維護。應用程序在登記處(Registry)尋找并調(diào)用某項服務。統(tǒng)一描述,定義和集成(UDDI, Universal Description, Definition, and Integration)是服務登記的標準。

  每項SOA服務都有一個與之相關(guān)的服務品質(zhì)(QoS, quality of service)。QoS的一些關(guān)鍵元素有安全需求(例如認證和授權(quán)),可靠通信(譯注:可靠消息是指,確保消息“僅且僅僅”發(fā)送一次,從而過濾重復信息。),以及誰能調(diào)用服務的策略。

二、SOA三大基本特征

      1 獨立的功能實體

      在Internet這樣松散的使用環(huán)境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進行控制的結(jié)構(gòu)都會面臨嚴重的穩(wěn)定性問題。SOA非常強調(diào)架構(gòu)中提供服務的功能實體的完全獨立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當這些宿主運行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當宿主本身或者其它功能部分出現(xiàn)問題的時候,在該宿主上運行的其它應用服務就會受到影響。

      SOA架構(gòu)中非常強調(diào)實體自我管理和恢復能力。常見的用來進行自我恢復的技術(shù),比如事務處理(Transaction),消息隊列(Message Queue),冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。

      2 大數(shù)據(jù)量低頻率訪問

      對于.NET Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計算模型而言,他們的服務提供都是通過函數(shù)調(diào)用的方式進行的,一個功能的完成往往需要通過客戶端和服務器來回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應速度和穩(wěn)定性帶來的影響都可以忽略不計,但是在Internet環(huán)境下這些因素往往是決定整個系統(tǒng)是否能正常工作的一個關(guān)鍵決定因素。因此SOA系統(tǒng)推薦采用大數(shù)據(jù)量的方式一次性進行信息交換。

      3 基于文本的消息傳遞

      由于Internet中大量異構(gòu)系統(tǒng)的存在決定了SOA系統(tǒng)必須采用基于文本而非二進制的消息傳遞方式。在COM、CORBA這些傳統(tǒng)的組件模型中,從服務器端傳往客戶端的是一個二進制編碼的對象,在客戶端通過調(diào)用這個對象的方法來完成某些功能;但是在Internet環(huán)境下,不同語言,不同平臺對數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數(shù)據(jù)型的,因此服務間只傳遞文本,對數(shù)據(jù)的處理依賴于接收端的方式可以幫忙繞過兼容性這個的大泥坑。

      此外,對于一個服務來說,Internet與局域網(wǎng)最大的一個區(qū)別就是在Internet上的版本管理極其困難,傳統(tǒng)軟件采用的升級方式在這種松散的分布式環(huán)境中幾乎無法進行。采用基于文本的消息傳遞方式,數(shù)據(jù)處理端可以只選擇性的處理自己理解的那部分數(shù)據(jù),而忽略其它的數(shù)據(jù),從而得到的非常理想的兼容性。

三、面向服務架構(gòu)(SOA)的原則

      SOA的強大和靈活性將給企業(yè)帶來巨大的好處。如果某組織將其IT架構(gòu)抽象出來,將其功能以粗粒度的服務形式表示出來,每種服務都清晰地表示其業(yè)務價值,那么,這些服務的顧客(可能在公司內(nèi)部,也可能是公司的某個業(yè)務伙伴)就可以得到這些服務,而不必考慮其后臺實現(xiàn)的具體技術(shù)。更進一步,如果顧客能夠發(fā)現(xiàn)并綁定可用的服務,那么在這些服務背后的IT系統(tǒng)能夠提供更大的靈活性。
但是,要得到種強大和靈活性,需要有一種實現(xiàn)架構(gòu)的新方法,這是一項艱巨的任務。企業(yè)架構(gòu)設計師必須要變成“面向服務的架構(gòu)設計師”,不僅要理解SOA,還要理解SOA的實踐。在架構(gòu)實踐和最后得到的架構(gòu)結(jié)果之間的區(qū)別非常微妙,也非常關(guān)鍵。本文將討論SOA的實踐,即:面向架構(gòu)的設計師在構(gòu)建SOA時必須要做的事情。

 

      SOA的原則

      SOA是一種企業(yè)架構(gòu),因此,它是從企業(yè)的需求開始的。但是,SOA和其它企業(yè)架構(gòu)方法的不同之處在于SOA提供的業(yè)務敏捷性。業(yè)務敏捷性是指企業(yè)對變更快速和有效地進行響應、并且利用變更來得到競爭優(yōu)勢的能力。對架構(gòu)設計師來說,創(chuàng)建一個業(yè)務敏捷的架構(gòu)意味著創(chuàng)建這樣一個IT架構(gòu),它可以滿足當前還未知的業(yè)務需求。

      要滿足這種業(yè)務敏捷性,SOA的實踐必須遵循以下原則:

      * 業(yè)務驅(qū)動服務,服務驅(qū)動技術(shù)

      從本質(zhì)上說,在抽象層次上,服務位于業(yè)務和技術(shù)中間。面向服務的架構(gòu)設計師一方面必須理解在業(yè)務需求和可以提供的服務之間的動態(tài)關(guān)系,另一方面,同樣要理解服務與提供這些服務的底層技術(shù)之間的關(guān)系。

      * 業(yè)務敏捷是基本的業(yè)務需求

      SOA考慮的是下一個抽象層次:提供響應變化需求的能力是新的“元需求”,而不是處理一些業(yè)務上的固定不變的需求。從硬件系統(tǒng)而上的整個架構(gòu)都必須滿足業(yè)務敏捷的需求,因為,在SOA中任何的瓶頸都會影響到整個IT環(huán)境的靈活性。

      * 一個成功的SOA總在變化之中

      SOA工作的場景,更象是一個活的生物體,而不是象傳統(tǒng)所說的“蓋一棟房子”。IT環(huán)境唯一不變的就是變化,因此面向服務架構(gòu)設計師的工作永遠不會結(jié)束。對于習慣于蓋房子的設計師來說,要轉(zhuǎn)向設計一個活的生物體要求嶄新的思維方式。如下文所寫的,SOA的基礎(chǔ)還是一些類似的架構(gòu)準則。

      SOA基礎(chǔ)

      在IT行業(yè)有兩個越來越普遍的發(fā)展方向,一個是架構(gòu)方面的,一個是方法學方面的,面向服務的架構(gòu)設計師可以從中有所收獲。第一個就是MDA模型驅(qū)動架構(gòu)),由提出CORBA的OMG模型提出。MDA認為架構(gòu)設計師首先要對待創(chuàng)建的系統(tǒng)有一個形式化的UML(也是由OMG提出)的模型。MDA首先給出一個平臺無關(guān)的模型來表示系統(tǒng)的功能需求和use cases,根據(jù)系統(tǒng)搭建的平臺,架構(gòu)設計師可以由這個平臺無關(guān)的模型得到平臺相關(guān)的模型,這些平臺相關(guān)模型足夠詳細,以至于可以用來直接生成需要的代碼。

      MDA的核心就在于在設計階段系統(tǒng)就已經(jīng)完全描述,這樣,在創(chuàng)建系統(tǒng)的時候,幾乎就沒有錯誤解釋的可能,模型也就可以直接生成代碼。但MDA有一些局限性:首先,MDA假設在創(chuàng)建模型之前,業(yè)務需求已經(jīng)全部描述,而這一點,在當前典型的動態(tài)業(yè)務環(huán)境中幾乎是不可能的。第二,MDA沒有一個反饋機制。如果開發(fā)人員對模型有需要改動的地方,并沒有提供給他們這么一個途徑。

      SOA的另一個基礎(chǔ)是敏捷方法(AM),其中非常有名的方法是極限編程XP)。象XP這樣的AM提供了在需求未知或者多變的環(huán)境中創(chuàng)建軟件系統(tǒng)的過程。XP要求在開發(fā)團隊中要有一個用戶代表,他幫助書寫測試來指導開發(fā)人員的日常工作。開發(fā)團隊中的所有成員都參與到設計之中,并且設計要盡量小并且非形式化。AM的目標是僅僅創(chuàng)建用戶想要的,而不是在一些形式化模型上耗費工作量。AM的核心思想就在于其敏捷性-處理需求變更的敏捷性。AM的主要弱點是其規(guī)模上的限制,例如,XP在一個小團隊和中型項目中效果不錯,但是當項目規(guī)模增大時,如果沒有一個一致的清晰的計劃,項目成員很難把握項目中的方方面面。

      從表面看來,MDA和AM似乎是相對立的-MDA假定需求是固定的,而AM恰恰相反。MDA的中心是形式化的模型,而AM恰恰要避開它們。但是,我們還是決定冒險把這些不同方法中的一些元素提取出來,放入到一個一致的架構(gòu)實踐中。

      在SOA中有三個抽象層次,按照SOA的第一條準則:業(yè)務驅(qū)動服務、服務驅(qū)動技術(shù)。AM將業(yè)務模型直接和實踐連接起來,表現(xiàn)在平臺相關(guān)的模型之中。MDA并沒有把業(yè)務模型和平臺無關(guān)模型分開來,而是把平臺無關(guān)模型做為起點。SOA必須連接這些模型,或者說抽象層次,得到單一的架構(gòu)方法。我們將從五個視圖的架構(gòu)實現(xiàn)方法來實現(xiàn)這個連接。

      SOA的五視圖實現(xiàn)方法

      企業(yè)架構(gòu)設計師發(fā)現(xiàn)他們的職業(yè)非常有競爭力并且值得驕傲,因為他們要從很多方面來通盤考慮IT系統(tǒng)。Kruchten(RUP的開發(fā)負責人)將這些方面提取出來,在應用到SOA時,我們稱為五視圖實現(xiàn)方法(five-view approach)。

      四個方框表示對一個架構(gòu)的不同審視方法,分別代表不同的涉眾(stakeholder)。弟五個視圖,use-case視圖涵蓋了其它視圖,在架構(gòu)中扮演的是一個特殊的角色。部署視圖將軟件映射到底層平臺和相關(guān)硬件上,是系統(tǒng)部署人員對架構(gòu)的視圖;實現(xiàn)視圖描述了軟件代碼的組織,是從開發(fā)人員角度出發(fā)的視圖;業(yè)務分析人員則利用過程視圖進行工作,它描述的是軟件系統(tǒng)的運行時特性。最后,邏輯視圖表示的是用戶的功能需求。在SOA中,面向服務的架構(gòu)必須能夠以use-case視圖中的用例將用戶連接到服務,將服務連接到底層的技術(shù)。

      為了表示面向?qū)ο?/a>的架構(gòu)是如何工作在這些視圖之上,讓我們將他們置于SOA元模型的上下文之中。SOA中兩個領(lǐng)域存在重疊:由業(yè)務模型和服務模型表示的業(yè)務領(lǐng)域和由服務模型及平臺相關(guān)模型表示的技術(shù)領(lǐng)域(兩個領(lǐng)域共享服務模型)。業(yè)務用戶通過邏輯視圖和過程視圖處理粗粒度的業(yè)務服務,根據(jù)變化的業(yè)務需求,按照需要將它們安排在過程之中。另一方面,技術(shù)專家的工作是創(chuàng)建并維護服務和地層技術(shù)之間的抽象層。表示這些服務的中間模型,起到的是軸心的作用,業(yè)務以它為中心進行。

      SOA元模型從MDA中繼承平臺無關(guān)模型和平臺相關(guān)模型,但是添加了AM和用戶交互以及敏捷的反饋這兩部分,后者通過橢圓之間的雙向箭頭來表現(xiàn)。類似地,元模型通過引入由中心的服務模型提供的中間層抽象解決了AM在伸縮性方面的問題。這樣,服務模型中的任何需求的變化,都會反映到用戶每天的業(yè)務處理中。同樣,由于底層技術(shù)是模型驅(qū)動的,技術(shù)專家也可以根據(jù)這些變化的需求迅速而有效地作出應變。

      SOA實踐和過去解決企業(yè)架構(gòu)傳統(tǒng)方式的不同之處就在于其對敏捷性的支持。如前所說,SOA的第三條原則就在于它總在變化之中。這種恒在的變化性環(huán)境是SOA實踐的基石。如圖所示,涉眾(stakeholders,譯者注:RUP中也有這個詞,表示軟件開發(fā)中涉及到的各種角色如:用戶、設計人員、開發(fā)人員乃至測試人員等等。)在一個必需的基礎(chǔ)上影響到整個架構(gòu)的變化。在當技術(shù)專家在每天的日常工作中不斷對變化的業(yè)務需求作出響應的這種情況下,設計階段和運行階段之間的界限變得模糊起來,很難清晰地分離這兩個階段。

      剩下的部分

      我們已經(jīng)為面向服務的架構(gòu)提供了一個高層次的框架,其中MDA和AM的元素幫助工具的使用者來創(chuàng)建和維護SOA。但是,SOA中還缺少一些內(nèi)容-那就是軟件開發(fā)商和專業(yè)的服務組織必需提供的。理想情況下,開發(fā)商必需提供面向服務的業(yè)務流程、工作流以及服務的協(xié)調(diào)工具和服務;另外,能夠以一種敏捷的、平臺無關(guān)的方式充分反映業(yè)務服務的建模工具也是必須的;技術(shù)專家必須配備可以從模型中自動生成代碼,并在代碼變化時更新模型的工具,最后,開發(fā)商必須提供支持SOA的軟件,幫助面向服務的架構(gòu)設計師以一種可信并且可伸縮的方式創(chuàng)建位于服務和底層技術(shù)之間的抽象層次。幸運的是,這方面的產(chǎn)品即將上市。

      另外,最重要的就是貫穿本文的自頂而下的SOA實現(xiàn)方法了。今天關(guān)于Web services的大部分思考都是自底而上的:“這是如何創(chuàng)建Web services的方法,現(xiàn)在,我們來使用它們集成吧”,對Web services技術(shù)的這種方法是偉大的第一步,因為它可以驚人地降低集成的開銷,這是現(xiàn)在的技術(shù)管理人員最樂意見到的了。但當經(jīng)濟進一步發(fā)展,IT走出低谷,企業(yè)會尋求IT的幫助來提高組織戰(zhàn)略意義上的核心價值。使用面向服務的架構(gòu),IT可以提供給企業(yè)實現(xiàn)業(yè)務敏捷性的這樣一個框架。

四、為什么選擇面向服務架構(gòu)(SOA)?

  不同種類的操作系統(tǒng),應用軟件,系統(tǒng)軟件和應用基礎(chǔ)結(jié)構(gòu)(application infrastructure)相互交織,這便是IT企業(yè)的現(xiàn)狀。一些現(xiàn)存的應用程序被用來處理當前的業(yè)務流程(business processes),因此從頭建立一個新的基礎(chǔ)環(huán)境是不可能的。企業(yè)應該能對業(yè)務的變化做出快速的反應,利用對現(xiàn)有的應用程序和應用基礎(chǔ)結(jié)構(gòu)(application infrastructure)的投資來解決新的業(yè)務需求,為客戶,商業(yè)伙伴以及供應商提供新的互動渠道,并呈現(xiàn)一個可以支持有機業(yè)務(organic business)的構(gòu)架。SOA憑借其松耦合的特性,使得企業(yè)可以按照模塊化的方式來添加新服務或更新現(xiàn)有服務,以解決新的業(yè)務需要,提供選擇從而可以通過不同的渠道提供服務,并可以把企業(yè)現(xiàn)有的或已有的應用作為服務, 從而保護了現(xiàn)有的IT基礎(chǔ)建設投資。

  如圖1的例子所示,一個使用SOA的企業(yè),可以使用一組現(xiàn)有的應用來創(chuàng)建一個供應鏈復合應用(supply chain composite application),這些現(xiàn)有的應用通過標準接口來提供功能。

  Figure 1. Supply chain application. Click on thumbnail to view full-sized image.

  服務架構(gòu)

  為了實現(xiàn)SOA,企業(yè)需要一個服務架構(gòu),圖2顯示了一個例子:

  Figure 2. A sample service architecture. Click on thumbnail to view full-sized image.

  在圖2中, 服務消費者(service consumer)可以通過發(fā)送消息來調(diào)用服務。這些消息由一個服務總線(service bus)轉(zhuǎn)換后發(fā)送給適當?shù)姆諏崿F(xiàn)。這種服務架構(gòu)可以提供一個業(yè)務規(guī)則引擎(business rules engine),該引擎容許業(yè)務規(guī)則被合并在一個服務里或多個服務里。這種架構(gòu)也提供了一個服務管理基礎(chǔ)(service management infrastructure),用來管理服務,類似審核,列表(billing),日志等功能。此外,該架構(gòu)給企業(yè)提供了靈活的業(yè)務流程,更好地處理控制請求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影響其他服務的情況下更改某項服務。

五、面向服務架構(gòu)(SOA)基礎(chǔ)結(jié)構(gòu)

  要運行,管理SOA應用程序,企業(yè)需要SOA基礎(chǔ),這是SOA平臺的一個部分。SOA基礎(chǔ)必須支持所有的相關(guā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用來描述服務;UDDI用來注冊和查找服務;而SOAP,作為傳輸層,用來在消費者和服務提供者之間傳送消息。SOAP是Web服務的默認機制,其他的技術(shù)為可以服務實現(xiàn)其他類型的綁定。一個消費者可以在UDDI注冊表(registry)查找服務,取得服務的WSDL描述,然后通過SOAP來調(diào)用服務。

  WS-I Basic Profile

  WS-I Basic Profile,由Web服務互用性組織(Web Services Interoperability Organization)提供,是SOA服務測試與互用性所需要的核心構(gòu)件。服務提供者可以使用Basic Profile測試程序來測試服務在不同平臺和技術(shù)上的互用性。

  J2EE 和 .Net

  盡管J2EE和。NET平臺是開發(fā)SOA應用程序常用的平臺,但SOA不僅限于此。像J2EE這類平臺,不僅為開發(fā)者自然而然地參與到SOA中來提供了一個平臺,還通過他們內(nèi)在的特性,將可擴展性,可靠性,可用性以及性能引入了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)用遠程服務,這使得開發(fā)和部署可移植于標準J2EE容器的Web服務變得容易,與此同時,實現(xiàn)了跨平臺(如。NET)的服務互用。

  服務品質(zhì)

  在企業(yè)中,關(guān)鍵任務系統(tǒng)(mission-critical system,譯注:關(guān)鍵任務系統(tǒng)是指如果一個系統(tǒng)的可靠性對于一個組織是至關(guān)重要的,那么該系統(tǒng)就是該企業(yè)的關(guān)鍵任務系統(tǒng)。比如,電話系統(tǒng)對于一個電話促銷企業(yè)來說就是關(guān)鍵任務系統(tǒng),而文字處理系統(tǒng)就不那么關(guān)鍵了。)用來解決高級需求,例如安全性,可靠性,事物。當一個企業(yè)開始采用服務架構(gòu)作為工具來進行開發(fā)和部署應用的時候,基本的Web服務規(guī)范,像WSDL,SOAP,以及UDDI就不能滿足這些高級需求。正如前面所提到的,這些需求也稱作服務品質(zhì)(QoS,quality of services)。與QoS相關(guān)的眾多規(guī)范已經(jīng)由一些標準化組織(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。下面的部分將會討論一些QoS服務和相關(guān)標準。

  安全

  Web服務安全規(guī)范用來保證消息的安全性。該規(guī)范主要包括認證交換, 消息完整性和消息保密。該規(guī)范吸引人的地方在于它借助現(xiàn)有的安全標準,例如,SAML(as Security Assertion Markup Language)來實現(xiàn)web服務消息的安全。OASIS正致力于Web服務安全規(guī)范的制定。

      可靠

  在典型的SOA 環(huán)境中,服務消費者和服務提供者之間會有幾種不同的文檔在進行交換。具有諸如“僅且僅僅傳送一次”( once-and-only-once delivery),“最多傳送一次”( at-most-once delivery),“重復消息過濾”(duplicate message elimination),“保證消息傳送”(guaranteed message delivery)等特性消息的發(fā)送和確認,在關(guān)鍵任務系統(tǒng)(mission-critical systems)中變得十分重要。WS-Reliability 和 WS-ReliableMessaging是兩個用來解決此類問題的標準。這些標準現(xiàn)在都由OASIS負責。

  策略

  服務提供者有時候會要求服務消費者與某種策略通信。比如,服務提供商可能會要求消費者提供Kerberos安全標示,才能取得某項服務。這些要求被定義為策略斷言(policy assertions)。一項策略可能會包含多個斷言。WS-Policy用來標準化服務消費者和服務提供者之間的策略通信。

  控制

  當企業(yè)著手于服務架構(gòu)時,服務可以用來整合數(shù)據(jù)倉庫(silos of data),應用程序,以及組件。整合應用意味著例如異步通信,并行處理,數(shù)據(jù)轉(zhuǎn)換,以及校正等進程請求必須被標準化。在SOA中,進程是使用一組離散的服務創(chuàng)建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用來控制這些服務的語言。WSBPEL目前也由OASIS負責。

  管理

  隨著企業(yè)服務的增長,所使用的服務和業(yè)務進程的數(shù)量也隨之增加,一個用來讓系統(tǒng)管理員管理所有運行在多相環(huán)境下的服務的管理系統(tǒng)就顯得尤為重要。WSDM(Web Services for Distributed Management)規(guī)定了任何根據(jù)WSDM實現(xiàn)的服務都可以由一個WSDM適應(WSDM-compliant)的管理方案來管理。

  其它的qos特性,比如合作方之間的溝通和通訊,多個服務之間的事務處理,都在WS-Coordination 和 WS-Transaction 標準中描述, 這些都是OASIS 的工作。

六、SOA 不是Web服務

  在理解SOA和Web服務的關(guān)系上,經(jīng)常發(fā)生混淆。根據(jù)2003年4月的Gartner報道,Yefim V. Natis就這個問題是這樣解釋的:“Web服務是技術(shù)規(guī)范,而SOA是設計原則。特別是Web服務中的WSDL,是一個SOA配套的接口定義標準:這是Web服務和SOA的根本聯(lián)系。”從本質(zhì)上來說,SOA是一種架構(gòu)模式,而Web服務是利用一組標準實現(xiàn)的服務。Web服務是實現(xiàn)SOA的方式之一。用Web服務來實現(xiàn)SOA的好處是你可以實現(xiàn)一個中立平臺,來獲得服務,而且隨著越來越多的軟件商支持越來越多的Web服務規(guī)范,你會取得更好的通用性。

七、面向服務架構(gòu)(SOA)的優(yōu)勢

  SOA的概念并非什么新東西,SOA不同于現(xiàn)有的分布式技術(shù)之處在于大多數(shù)軟件商接受它并有可以實現(xiàn)SOA的平臺或應用程序。SOA伴隨著無處不在的標準,為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來了更好的重用性。SOA能夠在最新的和現(xiàn)有的應用之上創(chuàng)建應用;SOA能夠使客戶或服務消費者免予服務實現(xiàn)的改變所帶來的影響;SOA能夠升級單個服務或服務消費者而無需重寫整個應用,也無需保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)。總而言之,SOA以借助現(xiàn)有的應用來組合產(chǎn)生新服務的敏捷方式,提供給企業(yè)更好的靈活性來構(gòu)建應用程序和業(yè)務流程。

八、采用服務驅(qū)動型方法的企業(yè)體驗著以下業(yè)務和 IT 好處 

      面向服務架構(gòu)的業(yè)務好處

      效率: 將業(yè)務流程從 " 煙囪 " 狀的、重復的流程向維護成本較低的高度利用、共享服務應用轉(zhuǎn)變。
      響應: 迅速適應和傳送關(guān)鍵業(yè)務服務來滿足市場需求,為客戶、雇員和合作伙伴更高水準的服務。
      適應性: 更高效地轉(zhuǎn)入轉(zhuǎn)出讓整個業(yè)務變得復雜性和難度更小,達到節(jié)約時間和資金的目的。

      面向服務架構(gòu)的 IT 好處

      復雜性降低: 基于標準的兼容性,與點到點的集成相比降低了復雜性。
      重用增加: 通過重用以前開發(fā)和部署的共享服務,實現(xiàn)了更有效的應用程序 / 項目開發(fā)和交付。
      遺留集成: 用作可重用服務的遺留應用程序降低了維護和集成的成本。
      如今的服務驅(qū)動型企業(yè)都在體驗著開發(fā)的高效率,服務的高可靠性和服務的高質(zhì)量,以最大限度獲得業(yè)務機會所帶來的這些好處。

九、SOA在國際市場上反響強烈

      自2004年初業(yè)界推出SOA后,Bea、IBM、Oracle、微軟等業(yè)界巨頭紛紛發(fā)布自己的SOA戰(zhàn)略,建議用戶在進行企業(yè)IT建設時考慮SOA。

      ZapThink調(diào)研公司在最近發(fā)表的一份報告中預測,到2006年,基于SOA架構(gòu)(面向服務的架構(gòu))的中間件產(chǎn)品將成為網(wǎng)絡化商業(yè)系統(tǒng)的主要設計思路,其中70%的商業(yè)企業(yè)公司將使用SOA架構(gòu)。

      按照Gartner的預測,到2008年,SOA將成為占有絕對優(yōu)勢的軟件工程實踐方法,它將結(jié)束傳統(tǒng)的整體軟件體系架構(gòu)長達40年的統(tǒng)治地位。屆時,將有60%的商業(yè)公司在進行商業(yè)IT建設時會轉(zhuǎn)向SOA。

      IDC預測到 2007年,包括軟件、服務和硬件在內(nèi)的SOA市場將達到210億美元,其中商業(yè)企業(yè)方面的市場將達到120億美元。

      綜上所述SOA已經(jīng)成為大勢所趨,有著廣闊的市場空間和巨大的發(fā)展?jié)摿Γ欢谏虡I(yè)企業(yè)中的應用,將成為SOA未來發(fā)展的一大亮點。

      SOA已經(jīng)引起國內(nèi)商業(yè)企業(yè)的重視

      國內(nèi)基于SOA架構(gòu)Web服務目前還是集中在一些企業(yè)內(nèi)部,而國內(nèi)一些有影響的行業(yè)用戶正在搭建其核心業(yè)務系統(tǒng),比如商業(yè)領(lǐng)域的流通行業(yè)和銷售行業(yè)的大集中正在起步。因此當商業(yè)企業(yè)需要更好地服務客戶,需要更好地與上、下游合作伙伴協(xié)同工作,并且自己內(nèi)部的核心業(yè)務之間也需要協(xié)同工作時,基于SOA架構(gòu)中間件產(chǎn)品就會為這類新的業(yè)務應用提供理想的底座,這種新的應用被稱作面向服務的業(yè)務應用。

      現(xiàn)在,很多商業(yè)企業(yè)都準備在2006年內(nèi)開始規(guī)劃使用這些基于SOA架構(gòu)的應用,可想而知,這些SOA架構(gòu)的中間件產(chǎn)品將在兩年內(nèi)迅速發(fā)展,并在五年內(nèi)在整個IT行業(yè)內(nèi)獲得廣泛應用。

      商業(yè)企業(yè)信息化存在的問題

      商業(yè)企業(yè)信息系統(tǒng)多數(shù)處于封閉運行的狀態(tài),企業(yè)之間、企業(yè)與上游供應商、下游消費者之間信息不對稱。商業(yè)企業(yè)之間無法形成協(xié)同效應。信息系統(tǒng)即無法滿足消費者的綜合需求也無法達到企業(yè)間的商務協(xié)同自動化和智能化的需求。信息化的經(jīng)濟效益難以有效發(fā)揮。同時信息化標準不健全,如電子交換接口標準、業(yè)務流程協(xié)同標準;流通中的票證、單據(jù)格式標準;電子數(shù)據(jù)交換所必須的結(jié)構(gòu)化數(shù)據(jù)標準等。

     采用傳統(tǒng)的系統(tǒng)架構(gòu)技術(shù)和傳統(tǒng)的EAI和B2Bi技術(shù)則存在系統(tǒng)封閉、廠商依賴性強、耦合度高、重用性差,擴展性差、無法和上下游企業(yè)的系統(tǒng)建立統(tǒng)一的接口等問題。而采用SOA 技術(shù)則可以有效解決上述問題,由于SOA基于HTTP/SOAP/WSDL等開放式技術(shù),對于特定廠商產(chǎn)品依賴性小;系統(tǒng)開放、互操作性強,可以建立統(tǒng)一的WEB服務用于和不同的上下游企業(yè)信息系統(tǒng)實現(xiàn)供應鏈協(xié)同。由于SOA的松耦合特性、比較符合集團和各下屬機構(gòu)的商業(yè)關(guān)系,業(yè)務流程整合和項目協(xié)調(diào)的阻力會有效降低。

      SOA以服務為基本單元,更加貼近于企業(yè)的商業(yè)活動,業(yè)務梳理和建模的復雜度會有效降低,重用性也會有效提高。另外采用SOA,企業(yè)IT系統(tǒng)所提供的服務會更容易擴展、組合和變更,符合該集團目前業(yè)務發(fā)展變化較快的特點,可以有效的降低該集團IT系統(tǒng)的長期擁有總體成本。我們將該集團公司作為一個試點,推進SOA技術(shù)的運用,來有效解決上述問題。

      “協(xié)同商務”的新經(jīng)濟時代即將到來

      采用SOA技術(shù)最終將使得各個商業(yè)企業(yè)之間、各個關(guān)聯(lián)的經(jīng)濟實體之間實現(xiàn)高效實時的聯(lián)接,使得整個產(chǎn)業(yè)鏈實現(xiàn)自動化的協(xié)同商務,將會有力的提高商業(yè)企業(yè)的應變能力,轉(zhuǎn)變現(xiàn)有的商業(yè)運作模式,轉(zhuǎn)變經(jīng)濟增長的方式。SOA技術(shù)將促進信息系統(tǒng)在商業(yè)企業(yè)貿(mào)易活動中的全面滲入和發(fā)展,對于簡單的貿(mào)易活動,將會由信息系統(tǒng)自動化實現(xiàn);對于復雜的貿(mào)易活動,信息系統(tǒng)將會為企業(yè)管理人員提供足夠的決策信息并可以高效的執(zhí)行決策。SOA技術(shù)的應用將會全面提高商務的自動化、智能化和實時化水平。

      采用SOA技術(shù)實現(xiàn)協(xié)同商務可以提高城市范圍內(nèi)商流、物流、資金流和信息流的運行效率,擴大北京市商業(yè)企業(yè)整體規(guī)模效益,加強商業(yè)企業(yè)的整體對外競爭力,拉動經(jīng)濟增長,降低企業(yè)運營成本,推動城市流通信息技術(shù)創(chuàng)新體系的建立,提高北京市流通現(xiàn)代化水平,促進城市管理現(xiàn)代化和城市社會經(jīng)濟信息化的進程。

      采用SOA技術(shù)可以將將物流企業(yè)、物業(yè)企業(yè)、商業(yè)企業(yè)、消費者整體整合在一起,對供應鏈關(guān)聯(lián)企業(yè)、物流企業(yè)以及網(wǎng)上支付體系、安全認證體系等環(huán)境建設具有明顯的帶動作用,有利于促進支撐環(huán)境協(xié)同發(fā)展。

      促進商業(yè)企業(yè)信息化標準的制定,完善政府職能

      采用SOA技術(shù)為信息系統(tǒng)的溝通提供了技術(shù)基礎(chǔ),而隨著SOA在商業(yè)企業(yè)的應用,必將促進統(tǒng)一的商業(yè)領(lǐng)域電子商務行業(yè)標準的發(fā)展和制定,對促進國家商業(yè)企業(yè)信息標準體系的建立和完善具有重要支撐作用。

      SOA技術(shù)為政府對商業(yè)經(jīng)濟的運行狀況提供了實時監(jiān)測和指導的技術(shù)可能性,將從根本上改變政府對社會經(jīng)濟的管理方式。

      基于SOA的協(xié)同商務帶來的最直接的好處就是由于貿(mào)易范圍的空前擴大而產(chǎn)生的全球貿(mào)易活動的大幅度增加,因而提高了貿(mào)易環(huán)節(jié)中大多數(shù)角色的交易量,因此,全球范圍的經(jīng)濟形勢將向一個良好的增長趨勢發(fā)展。它還可以擴大地方商業(yè)企業(yè)整體規(guī)模效益,加強商業(yè)企業(yè)的業(yè)務整合和商業(yè)協(xié)同效應,提高商業(yè)企業(yè)的整體對外競爭力,通過協(xié)同商務有效降低企業(yè)運營成本,推動城市流通信息技術(shù)創(chuàng)新體系的建立,提高地方的流通現(xiàn)代化水平,促進城市管理現(xiàn)代化和城市社會經(jīng)濟信息化的進程。

      SOA在商業(yè)企業(yè)的應用可以將物流企業(yè)、物業(yè)企業(yè)、商業(yè)企業(yè)、消費者整體整合在一起,對供應鏈關(guān)聯(lián)企業(yè)、物流企業(yè)以及網(wǎng)上支付體系、安全認證體系等環(huán)境建設具有明顯的帶動作用,可推動信息化各環(huán)節(jié)的全面應用與發(fā)展,有利于促進產(chǎn)業(yè)鏈和支撐環(huán)境協(xié)同發(fā)展,從而也創(chuàng)造了更多的就業(yè)機會和社會財富。

      信息產(chǎn)業(yè)是知識經(jīng)濟的核心和主要的推動力,而企業(yè)信息化又是目前信息產(chǎn)業(yè)中最具前途的發(fā)展趨勢,因此說企業(yè)信息化的發(fā)展,必將直接或間接地推動知識經(jīng)濟的浪潮。這種知識經(jīng)濟有著大量的無形成本和高附加值,在東南亞金融危機的同時,高科技給美國帶來的是"高增長速度、高就業(yè)率、低通貨膨脹率"。這也是我國在宣傳知識經(jīng)濟的熱潮中應注意的一個真正有價值的切入點。

      SOA技術(shù)由于其前所未有的信息系統(tǒng)整合與自動協(xié)同能力,成為繼互聯(lián)網(wǎng)以來又一個革命性的技術(shù),將會把目前基于WEB/互聯(lián)網(wǎng)的知識經(jīng)濟推進到一個前所未有的新階段。


十、SOA 企業(yè)考慮事項

      服務驅(qū)動型企業(yè)在對客戶、合作伙伴和雇員的高效化服務方面得到了優(yōu)化 -- 并加速了業(yè)務服務響應時間。然而,成為服務驅(qū)動型企業(yè),需要的不僅僅是產(chǎn)品的部署。對實現(xiàn)服務驅(qū)動型架構(gòu)感興趣的企業(yè)將希望能與一個有經(jīng)驗的 SOA 提供商合作,它提供的服務可以保護企業(yè)在業(yè)務和 IT 方面的投入,他們考慮到了以下幾個方面: 


      業(yè)務戰(zhàn)略: 組織需要明確驅(qū)動關(guān)鍵業(yè)務流程的業(yè)務戰(zhàn)略,它將用于成形 SOA 的框架。一旦識別出業(yè)務問題,就可以用一種一致的、可復用的方法對其進行定義,并實現(xiàn)解決方案。在這個關(guān)鍵的基礎(chǔ)階段,業(yè)務通常需要與一個擁有開發(fā) SOA 業(yè)務戰(zhàn)略經(jīng)驗、并能共享橫向和縱向市場最佳實踐的提供商進行合作。
      體系結(jié)構(gòu): 為了解決方案快速和動態(tài)的交付,企業(yè)必須開發(fā)一種允許裝配組件和服務的體系結(jié)構(gòu)框架。通過與有經(jīng)驗的 SOA 提供商合作,企業(yè)可以獲得相應的參考案例,以快速搭建一個關(guān)注復用、避免 " 煙囪 " ( stovepipe )式應用程序和 IT 資源 " 孤島 " 的體系結(jié)構(gòu)。此外,有經(jīng)驗的 SOA 提供商還可以幫助企業(yè)對項目的易管理性進行設計。

      構(gòu)建模塊: 不管是對體系結(jié)構(gòu)還是對編程模型來說, SOA 都是是思考構(gòu)建軟件模型的一種優(yōu)秀方式。與 SOA 提供商進行合作能讓組織能夠識別可在 SOA 實現(xiàn)中使用或重用的構(gòu)建模塊代碼、服務、應用程序和組件。與有經(jīng)驗的 SOA 提供商進行合作還有一個好處,企業(yè)可以獲得對構(gòu)造組件、企業(yè)域( domains )、服務和規(guī)范數(shù)據(jù)模型的參考經(jīng)驗。

      項目和應用程序: SOA 創(chuàng)造了一種在更強大、更靈活的編程模式中搭建應用程序的新方法。與 SOA 提供商合作的企業(yè)可以更好地識別將被合并到 SOA 結(jié)構(gòu)體系中的現(xiàn)存的和正在使用的應用程序。有經(jīng)驗的 SOA 提供商還將引導項目基礎(chǔ)架構(gòu)的搭建,并對正在進行中的項目提供有效的管理。
成本和收益: 在一個 SOA 項目中,開發(fā)和維護成本將大大削減,。有經(jīng)驗的 SOA 提供商可以幫助企業(yè)構(gòu)造 SOA 基金模式,并構(gòu)建 " 行動案例 " ,包括評估基礎(chǔ)構(gòu)造成本和效益、實現(xiàn)項目的最佳投資回報( ROI )以及開發(fā)商務案例。

      組織和統(tǒng)轄: 組織需要為新的面向服務的 IT 組織識別角色和職責,并優(yōu)化經(jīng)驗集便于以后使用。有經(jīng)驗的 SOA 提供商可以幫助企業(yè)實現(xiàn)這些目標,同時組織一個有效的設計 " 復用工廠 " ( Reuse Factory ),幫助定義統(tǒng)轄模式,并最終保證客戶滿意。