摘要:企業及政府部門信息系統中由于資源異構及需求快速變化而引起的問題越來越突出,促使企業采用面向服務的IT架構,或稱為SOA (Service-Oriented Architecture)。面向服務的體系結構(SOA)已成為信息技術領域的研究熱點,該文闡明了面向服務體系結構的概念及其應用。
關鍵詞:SOA;SOAD;企業邏輯;敏捷性;虛擬企業
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)36-2571-02
Service-Oriented Architecture In Enterprise Information System Applications
LI Ji-feng, LI Hai-jian, HUANG Gao-lei
(School of Electrical Science and Information Technology, Guizhou University, Guiyang 550003, China)
Abstract: In enterprise information systems and e-government systems, the problems caused by the changes of heterogeneous distributed resources and requirements are becoming more and more serious. To make an application accommodate to these changes rapidly,This article presents a service-oriented software architecture, named as SOA.The architecture of SOA –based applications has drawn significant attention recently. This article presents SOA concepts and applications in enterprise.
Key words: SOA; SOAD; enterprise logic; agility; virtual enterprise
1 引言
隨著信息技術在各個應用領域的普及和信息化建設的深入,企業及政府部門信息系統中資源異構及需求變化而引起的問題越來越突出。企業存在大量的遺留系統,由于這些系統當時的開發商、建設目標、面向的用戶和應用范圍都不盡相同,致使系統使用方式各異,所處理的數據、采用的流程及輸出結果也都沒有統一的標準。隨著業務的變化和技術的發展,企業不得不花費大量的資金用于IT架構的更新、升級和維護。同時,企業希望能最大限度地利用原有遺留系統中依然運行良好的模塊。目前,激烈的市場競爭迫切需要實現企業內部、外部各種數據、應用資源的協同共享,在IT技術的支持下,在一定的時間內結成動態聯盟。如何讓應用能夠適應這些異構、動態的資源,已經成為企業信息系統中一個亟待解決的問題。用戶的業務也在不斷發展變化,用戶需要一種開發方法,該方法能夠支持根據業務需要快速構建應用,實現從業務需求到軟件應用的便捷過渡,以適應動態變化的新需求。同時,用戶業務的變化也向現有信息系統提出了適應性要求,要求它們能夠隨需求動態變更,即時演化。
1996年,Gartner Group明確地第一次提出SOA(Service-Oriented Architecture,面向服務架構)的理念。那時SOA只是一個遠景目標,當時的技術水平不足以支持SOA思想的具體實現。然而,隨著面向對象、XML、Web服務和分布式對象等技術的不斷發展,今天,面向服務的體系結構(SOA)已成為信息技術領域的研究熱點以及大型軟件系統與軟件產品線的關鍵技術。
SOA是以服務為基礎的松耦合的分布式應用系統的結構。基于SOA的應用可被視為一組相互交互的服務,這種基于服務的形式功能描述為系統的靈活性、可擴展性和開放性提供了基礎,有效地支持了異構資源服務化、動態升級和演化。SOA滿足企業下述關鍵而迫切的需求:
1) 保護企業對信息技術的投資(Protect existing assets);
2) 協同企業內部及外部的資源組成虛擬企業(Virtual Enterprise);
3) 提高企業組織和業務的敏捷性(ImproveAgility)。
2 面向服務體系結構的組成
2.1 SOA實現平臺的基本組件
SOA提供了一種構建分布式系統,將應用程序功能作為服務提供給其他終端用戶或服務的方法。SOA實現平臺的組件一般可分為兩類:一類是面向系統功能,另一類是面向系統功能的質量。圖1按分類方式給出了SOA實現平臺的組件。
2.1.1 SOA的功能性組件
1)傳輸(Transport):用于將來自服務請求者的服務請求傳送給服務提供者,并且將來自服務提供者的響應傳送給服務請求者。

圖1 SOA 實現平臺的基本組件
2) 服務通信協議(Service Communication Protocol):定義服務通信的機制。通過這種機制,服務提供者和服務請求者可以就將要請求的內容和將要返回的內容進行溝通。
3) 服務描述(Service Description):定義服務描述的語言和描述的模式,用于描述服務是什么、應該如何調用服務以及成功地調用服務需要什么數據。
4) 服務(Service):描述實際可供使用的服務。
5) 業務流程(Business Process):一組服務的集合,為滿足業務需求按照特定的順序和規則調用服務,業務流程可以看作是粗粒度的服務。
6) 注冊中心(ServiceRegistry):服務和數據描述的存儲庫,服務提供者可以通過服務注冊中心發布他們的服務,而服務請求者可以通過服務注冊中心發現或者找到可用的服務。服務注冊中心還可以給需要集中存儲的服務提供其他的功能。
2.1.2 SOA的質量保障組件
1) 策略(Policy):一組條件和規則,在這些條件和規則之下,服務提供者對服務請求者提供有價值的服務。策略既有功能性方面,也有與服務質量有關的方面。
2) 安全(Security):保障SOA應用的安全性,比如: 身份識別、數字簽名、消息的加密和解密、訪問授權、信任聯盟管理等。
3) 事務處理(Transaction):保障SOA應用的狀態一致性。例如:如果要使用一組服務來完成一項業務功能,則所有的服務必須都完成,或者沒有一個完成。
4) 管理(Management):實現服務運行時的監控和管理。
2.2 面向服務體系結構中的協作

圖2 面向服務體系結構中的協作
圖2展示了面向服務體系結構中的協作。這些協作遵循“查找、綁定和調用”范例。其中,服務請求者查詢服務注冊中心來查找與其標準匹配的服務,如果服務存在,注冊中心就給請求者提供接口契約和服務的端點地址。
2.2.1 面向服務體系結構中的角色包括:
1) 服務請求者(Service Consumer)
服務請求者是一個應用程序、一個軟件模塊或需要服務的另一個服務。它發起對注冊中心的服務查詢間接獲得服務描述,然后遵從服務描述的接口和地址約定實現和服務提供者所提供服務的交互。
2) 服務提供者(Service Provider)
服務提供者是一個可通過網絡尋址的實體,它接受和執行來自請求者的請求。它把包括服務接口、服務訪問地址等信息的服務描述以及服務的其它一些相關的信息(如服務提供者信息,服務質量特征)發布到服務注冊中心。
3) 服務注冊中心(Service Registry)
服務注冊中心是服務發現的支持者。它包含一個可用的存儲庫,并幫助服務請求者發現和定位合適的服務,提供服務間接尋址功能。
面向服務體系結構中的每個實體都扮演著服務提供者、請求者和注冊中心這三種角色中的某一種(或多種)。
2.2.2 面向服務體系結構中的操作包括:
1) 發布(Publish):發布服務描述,使服務請求者可以發現和調用它。
2) 發現(Find):服務請求者定位服務,方法是查詢服務注冊中心,找到滿足標準的服務。
3) 綁定和調用(Bind and invoke):在檢索完服務描述之后,服務請求者繼續根據服務描述的信息來調用服務。
2.2.3 面向服務體系結構中的構件包括:
1) 服務(Service):可以通過已發布接口使用服務,并且允許服務請求者調用服務。
2) 服務描述(Service description):指定服務請求者與服務提供者交互的方式。服務描述可以指定一組前提條件、后置條件和服務質量(QoS)級別。
3 面向服務體系結構的應用及優點
3.1 面向服務應用的分析與設計
面向服務的分析與設計SOAD(service oriented analysis and design)是專為面向服務的體系結構范型設計的軟件建模和開發方法。它建立在早期包括面向對象分析與設計以及業務過程管理在內的開發過程基礎之上的。在面向服務的分析與設計領域,Zimmermann總結了SOAD的一些通用指導原則,這些原則可以作為SOAD的設計基線;Arsanjani給出了一種面向服務應用的體系參考模型(SOA application model)及相關的系統體系結構文檔(system architecture document,SAD)的模板。作為一個新興領域,對SOAD的認識和研究才剛開始,現在簡單介紹SOAD過程架構:
1) 服務識別(identification):服務識別的目的是定義系統功能,并把系統功能合理的組成服務。
2) 服務編目和聚集(service categorization and aggregation):把服務進行分類編目有利于服務的使用,通過服務聚集可以把細粒度的服務組合成更大粒度的服務。
3) 服務和構件規范(specification):包括子系統分析、構件規范和服務規范活動。
4) 服務實現(service realization):包含的主要活動是服務到構件的分配和服務實現決策。
3.2 面向服務體系結構在企業信息系統構建中的應用
從IT的視角來看,企業邏輯(enterprise logic)可分解為兩個對等部分:業務邏輯(business logic)和應用邏輯( application logic)。業務邏輯是源自企業業務領域業務需求的文檔化實現,一般被構造到表達這些需求的流程中,還包括任何關聯的約束、依賴及外部影響。應用邏輯是組織成不同技術方案的業務邏輯自動化實現,根據組織的IT基礎實施、安全約束、技術能力及廠商依賴范圍購買或定制的系統,表達了系統的業務流程工作流。企業中的內部改組、公司合并、業務增長等業務邏輯的變化會影響其自動化的應用技術,而應用技術基礎的變化同樣會影響使用其技術實現自動化的業務邏輯。企業的這兩部分之間存在的依賴越多,變化導致的破壞和代價就越大,企業組織的適應性、敏捷性越差。(下轉第2577頁)
(上接第2572頁)
SOA通過引進服務,建立了一個夾在傳統的業務與應用層之間的高級抽象形態(服務接口層)。服務通過抽象封裝物理的應用邏輯和業務流程中的業務邏輯,將企業模塊化,形成位于公共連通層內的孤立邏輯單元。通過標準的服務抽象層,獲得企業的業務與應用技術領域的松散耦合關系。從而允許每個領域獨立地發展,企業組織更能適應業務和技術的變化。SOA服務接口層包含三個抽象層:應用服務層(application service)、業務服務層(business service)、編排服務層(orchestration service)。應用服務層建立了用來表示特定技術功能的底層基礎,其目的是要在新的或遺留應用環境之內提供處理數據相關的可復用功能。業務服務層是SOA的靈魂,它通過業務服務模型實現業務邏輯,以便以純粹的形式表示業務邏輯。編輯服務層包含一個或多個流程服務,依照業務規則和邏輯來組合服務,促進敏捷性和復用性。
3.3 面向服務體系結構應用的優點
從SOA的投資者和使用者——企業的角度考慮,SOA可以為他們帶來的實際益處如下:
1) 有效的保護企業投資,提升現有的IT資源的作用,促進IT資源復用
SOA的標準統一的接口、松耦合本質給SOA的應用帶來了復用性和靈活性,也使得軟件的開發是迭代進行的,不需要徹底重建系統,將開發力量集中利用現有的技術和組件來創建服務上。對企業的已有應用系統來說,無論其支撐平臺是J2EE、.NET或者是其他遺留系統,應用系統中的功能都可以被封裝為服務并被有效復用。有了這種機制,企業可以持續地把現存的IT資源轉化為可復用的服務,然后企業在構造應用時就可以通過服務的組合來實現。
2) 提高企業的敏捷性
敏捷性是現代企業的內在的品質。SOA通過對業務邏輯和應用邏輯的抽象,在松散耦合的、可組合的、可互操作的和可復用的服務的標準環境中,可以建立更具適應力的自動化環境。依據業務規則和邏輯,協調和組織多個服務來快速構造新的業務,適應市場的變化。從而提高企業的應變能力。
3) 支持企業內部及外部的資源協同組成動態虛擬組織
伴隨經濟的全球化,現代企業需要能夠迅速地響應市場需求,在原有實體企業的業務和職能基礎上,通過系統間的互操作,支持更廣泛范圍內的資源共享和協同工作。傳統的緊密耦合的企業間合作已經很難滿足上述需求,需要新的技術支持。SOA是一種用于構建分布式系統的方法,其組織形式是開放和松散耦合的,它可以整合資源、技術和人力優勢,由多家跨地區甚至跨國的企業組成新的企業生產組織形式,通過不同企業之間的協同工作,實現企業的業務目標。
4 總結
面向服務體系結構能夠改變企業IT架構的僵化現狀并滿足現代企業在業務敏捷性、遺留系統復用以及動態虛擬組織等方面的需求。由于其觀念、實現的技術和標準等原因,開發出完全的面向服務體系結構的軟件要有很長一段路走。但是相信面向服務體系結構最終將對企業和IT的發展起到革命性的作用。
參考文獻:
[1] Thomas Erl.Service-Oriented Architecture[M].Pearson Education,2005
[2] Arsanjani A.Service-Oriented modeling and architecture: How to identify, specify, and realize services for your SOA[M].Whitepaper from IBM,2004.
[3] Patterns:Service Oriented Architecture and Web Services[M].ibm.com/redbooks,April 2004.
[4] 喻堅,韓燕波.面向服務的計算:原理和應用[M].北京:清華大學出版社,2006.