丁敏英 羅立紅
摘要:SOA是一種對未來軟件架構設計有著巨大影響的技術。文章就什么是SOA;SOA的特點;SOA用于解決哪些問題;SOA相關的技術以及SOA與Web service的區別等問題提出自己的理解。總結出SOA的特性。
關鍵詞:SOA系統架構;分層模型;Web服務
中圖分類號:TP311文獻標識碼:A
文章編號:1674-1145(2009)09-0147-02
一、SOA產生的背景
現代企業面臨的環境越來越復雜,一個企業往往具有多個業務系統,而且這些系統往往是異構的,而且可能需要與客戶、合作伙伴的業務系統交互。因此在這樣的復雜環境中構件新的企業應用是非常困難的。這就要求今天的企業解決方案具有廣泛的兼容能力,可以支持不同的系統平臺、數據格式和多種連接,要求在Internet環境下,實現系統是松散藕荷的、跨平臺的、與語言、接口無關的,而且要求提供對Web應用程序的可靠訪問等等。各種系統間的互操作性就顯得必要,要求系統能夠無縫地進行通信和共享數據,從而在Internet環境下,消除巨大的信息孤島,實現信息共享、進行數據交換,達到信息的一致性。SOA就是為了適應這種復雜多變的應用環境,用一種不同于以往的方式來快速、簡便地開發企業應用系統,為企業在激烈的市場競爭中搶得先機。
二、什么是面向服務的體系結構(SOA)
面向服務的體系結構(serviee-oriented architecture。SOA)是指為了解決在Internet環境下業務集成的需要,通過連接能夠完成特定任務的獨立功能實體的一種系統架構。是一個組件模型,它將應用系統的不同功能實體(稱為服務)通過定義良好的接口和契約聯系起來,從而使得開發人員能夠調用服務的功能來快速便捷地構造企業所需業務系統。服務的接口是采用中立的方式進行定義的,獨立于實現服務的硬件平臺、操作系統、網絡環境和編程語言等。使得構建在這樣的系統架構中的各種服務可以以一種統一和通用的方式進行交互。這種具有中立的接口定義(沒有強制綁定到特定的實現上)的特征稱為服務之間的松耦合。

從SOA的定義中,我們看到兩點:(1)軟件系統架構:SOA不是一種語言,也不是一種具體的技術,更不是一種產品,而是一種軟件系統架構,它嘗試給出在特定環境下推薦采用的一種架構,從這個角度上來說,它其實更像一種架構模式(Pat-tern),是一種理念架構,是人們面向應用服務的解決方案框架;(2)服務(service):服務是整個SOA實現的核心。SOA架構的基本元素是服務,服務是一種邏輯實體,由一個或多個已發布接口定義的契約,是外部可見的功能。SOA指定一組實體(服務提供者、服務消費者、服務注冊中心、服務條款、服務代理和服務契約),這些實體詳細說明了如何提供和消費服務。遵循SOA觀點的系統必須要有服務,這些服務是可互操作的、獨立的、模塊化的、位置明確的、松耦合的并且可以通過網絡查找其地址。
服務是SOA的核心,具有如下一些特點:
1.服務的重用(Reuse)。服務的可重用性顯著地降低了企業應用系統開發的成本。為了實現可重用性,服務只工作在特定處理過程的上下文(context)中,獨立于底層實現和客戶需求的變更。
2.服務的互操作(internperability)。互操作并不是一個新概念。在CORBA、DCOM、Web service中就已經采用互操作技術了。在SOA中,通過服務之間既定的通信協議進行互操作。主要有同步和異步兩種通信機制。SOA提供服務的互操作特性更利于其在多個場合被重用。
3.服務是自治的(Autonomous)功能實體。服務是由組件組成的組合模塊,是自包含和模塊化的。SOA非常強調架構中提供服務的功能實體的完全獨立自主的能力。SOA架構中非常強調功能實體自我管理和恢復能力。常見的用來進行自我恢復的技術,比如事務處理(Transaction),消息隊列(Message Queue),冗余部署(Redundant Deploymen)和集群系統(Clus-ter)在SOA中都起到至關重要的作用。
4.服務之間的松耦合(Loosly Coupled)在基于SOA架構的系統中,具體應用系統的功能是由一些松耦合并且具有中立接口定義的服務組合構建起來的。松耦合系統的好處有兩點,一點是它的靈活性;另一點是,當組成整個應用程序的每個服務的內部結構和實現逐漸地發生改變時,它能夠繼續存在。比如:服務提供者可以將以前基于遺留代碼(例如,COBOD的實現完全用基于Java語言的新代碼取代,同時又不對服務請求者造成任何影響。
5.服務是位置透明的(Location Transparency)服務是針對業務需求設計的。需要反應需求的變化,要想真正實現業務與服務的分離,就必須使得服務的設計和部署對用戶來說是完全透明的。也就是說,用戶完全不必知道響應自己需求的服務的位置,甚至不必知道具體是哪個服務參與了響應。
三、SOA架構的分層模型
整個SOA架構的分層模型如圖1所示。
在SOA系統中不同的功能模塊可以被分為7層:
第1層就是企業已經存在的系統資源,例如企業ERP或者CRM系統等。
第2層就是組件層,在這一層中我們用不同的組件把底層系統的功能封裝起來。
第3層就是sOA系統中最重要的服務層,在這層中我們要用底層功能組件來構建我們所需要的不同功能的服務。
第4層就是商業流程層,在這一層中我們利用已經封裝好的各種服務來構建商業系統中的商業流程。
第5層表示層,我們利用表示層來向用戶提供用戶接口服務。
第6層企業服務總線(ESB)上面5層都需要有一個集成的環境來支持它們的運行,企業服務總線(ESB)就提供了這樣的功能。
第7層主要為整個SOA系統提供一些輔助的功能,例如服務質量管理,安全管理這一類的輔助功能。
四、SOA技術克服的傳統分布式系統開發體系結構中的一些問題
SOA最主要的應用場合在于解決在Internet環境下不同商業應用之間的業務集成問題。Internet應用環境有以下特點:(1)大量異構系統并存,比如在Internet環境中,計算機硬件體系結構的差異,操作系統的不同,編程語言的不同,數據庫不同,應用服務器不同,使用的規范不同等等;(2)大量、頻繁的數據傳輸速度緩慢并且不穩定;(3)版本升級無法完成,根本就無法知道互聯網上有哪些機器直接或者間接地使用某個服務。
1.大量異構系統并存。在Internet這樣松散的使用環境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進行控制的結構都會面臨嚴重的穩定性問題。所以SOA非常強調架構
中提供服務的功能實體的完全獨立自主的能力。
2.大數據量低頻率訪問。對于NET、EJB或者XML-RPC這些傳統的分布式計算模型而言,他們的服務提供都是通過函數調用的方式進行的,一個功能的完成往往需要通過客戶端和服務器來回很多次函數調用才能完成。在Intranet的環境下,這些調用給系統的響應速度和穩定性帶來的影響都可以忽略不計,但是在Internet環境下這些因素往往是決定整個系統是否能正常工作的一個關鍵決定因素。因此SOA系統推薦采用大數據量的方式一次性進行信息交換。
3.基于文本的消息傳遞。由于Internet中大量異構系統的存在決定了SOA系統必須采用基于文本而非二進制的消息傳遞方式。在COM/DCOM、CORBA這些傳統的組件模型中,從服務器端傳往客戶端的是一個二進制編碼的對象,在客戶端通過調用這個對象的方法來完成某些功能;但是在Internet環境下,不同語言,不同平臺對數據、甚至是一些基本數據類型定義不同,給不同的服務之間傳遞對象帶來很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數據類型的,因此服務間只傳遞文本,對數據的處理依賴于接收端的方式可以幫忙繞過兼容性這個大泥坑。
五、面向服務架構(SOA)的優勢
SOA不同于現有的分布式技術之處在于大多數軟件商接受它并有可以實現SOA的平臺或應用程序。SOA伴隨著無處不在的標準,為企業的現有資產或投資帶來了更好的重用性。SOA能夠在最新的和現有的應用之上創建應用;SOA能夠使客戶或服務消費者免予服務實現的改變所帶來的影響;SOA能夠升級單個服務或服務消費者而無須重寫整個應用,也無須保留已經不再適用于新需求的現有系統。總而言之,SOA以借助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程。其優勢主要體現在如下幾個方面:(1)利用現有的資產;(2)更易于集成和管理復雜性;(3)更快地整合現實;(4)減少成本和增加重用。
SOA業務流程是由一系列業務服務組成的,可以更輕松地創建、修改和管理它來滿足不同時期的需要。
六、結語
隨著分布式應用系統復雜性的持續增長以及企業業務不斷變化以適應激烈的市場競爭,企業的各種新業務的快速推出,新老應用系統的集成,系統可用性,可靠性和可伸縮性等等,這些成為各公司企業面臨的主要問題,SOA成為解決這些問題的最好解決方案。
參考文獻
[1]Yvonne Balzer.改進您的SOA專案規劃.IBM,2004-08-01.
[2]OASIS探尋標準SOA參考架構.2007.
[3]實現SOA的相關技術.2005-09-15.
作者簡介:丁敏英,湖南商務職業技術學院教師;羅立紅。湖南商務職業技術學院教師。