摘 要:面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元--服務(service),通過服務間定義良好的接口和契約(contract)聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標準的方式進行通信。本文闡述了SOA的相關支撐技術,并給出了SOA在電子商務應用集成中的實現。
關鍵詞: 面向服務的架構 ;電子商務;組件模型
中圖分類號:TP393 文獻標志碼:A 文章編號:1671-7953(2009)02-0087-03
不同種類的操作系統,應用軟件,系統軟件和應用基礎結構(application infrastructure)相互交織,這便是IT 企業的現狀。一些現存的應用程序被用來處理當前的業務流程(business processes),因此從頭建立一個新的基礎環境是不可能的。企業應該能對業務的變化做出快速的反應,利用對現有的應用程序和應用基礎結構(application infrastructure)的投資來解決新的業務需求,為客戶,商業伙伴以及供應商提供新的互動渠道,并呈現一個可以支持有機業務(organic business)的構架。SOA憑借其松耦合的特性,使得企業可以按照模塊化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇從而可以通過不同的渠道提供服務,并可以把企業現有的或已有的應用作為服務,從而保護了現有的IT基礎建設投資。
1 SOA結構分析
為了實現SOA,企業需要一個服務架構,如圖1 所示:
在圖1中,服務消費者(service consumer)可以通過發送消息來調用服務。這些消息由一個服務總線(service bus)轉換后發送給適當的服務實現。這種服務架構可以提供一個業務規則引擎(business rules engine),該引擎容許業務規則被合并在一個服務里或多個服務里。這種架構也提供了一個服務管理基礎(service management infrastructure),用來管理服務,類似審核,列表(billing),日志等功能。此外,該架構給企業提供了靈活的業務流程,更好地處理控制請求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影響其他服務的情況下更改某項服務。
2 SOA支撐技術
SOA(Service-Oriented Architecture,面向服務的架構)在計算環境中設計、開發、部署和管理離散邏輯單元(服務)的模型,它將應用程序的不同功能單元(稱為服務)通過定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。下文對SOA的關鍵技術作一個簡單介紹。
2.1 XML
XML 1.0(可擴展標記語言,Extensible Markup Language)標準是一個基于文本的 World
WideWeb 組織(W3C)規范的標記語言。與 HTML 使用標簽來描述外觀和數據不同,XML 嚴格地定義了可移植的結構化數據。它可以作為定義數據描述語言的語言,如標記語法或詞匯、交換格式和通信協議。
2.2 SOAP
簡單對象訪問協議(SimpleObject Access Protocol)是一個基于 XML 的,用于在分布式環境下交換信息的輕量級協議。SOAP 在請求者和提供者對象之間定義了一個通信協議,這樣,在面向對象編程流行的環境中,該請求對象可以在提供的對象上執行遠程方法調用。因為 SOAP 是平臺無關和廠商無關的標準,因此盡管 SOA 并不必須使用 SOAP,但在帶有單獨 IT 基礎架構的合作伙伴之間的松耦合互操作中,SOAP 仍然是支持服務調用的最好方法。
SOAP 的優點在于它完全和廠商無關,相對于平臺、操作系統、目標模型和編程語言可以獨立實現。另外,傳輸和語言綁定以及數據編碼的參數選擇都是由實現決定的。
2.3 WSDL
Web 服務描述語言 WSDL(web Services DescriptionLanguage)是一個提供描述服務 IDL 標準方法的 XML 詞匯。Web 服務描述語言(WSDL)規范定義了一個 XML詞匯表,該詞匯表依照請求和響應消息,在服務請求者和服務提供者之間定義了一種契約。我們能夠將 Web服務定義為軟件,這個軟件通過描述 SOAP 消息接口的 WSDL 文檔來提供可重用的應用程序功能,并使用標準的傳輸協議來進行傳遞。
WSDL 描述包含必要的細節,以便服務請求者能夠使用特定服務:
1)請求消息格式
2)響應消息格式
3)向何處發送消息。
WSDL 是基于 XML 的,因此 WSDL 文檔是計算機可讀的(Machine-readable)。這樣開發環境使用 WSDL 將集成服務的流程自動處理到請求者應用程序。
2.4 UDDI
統一描述、發現和集成(Universal Description,Discoveryand Integration)規范提供了一組公用的 SOAPAPI,使得服務代理得以實現。UDDI 為發布服務的可用性和發現所需服務定義了一個標準接口(基于 SOAP 消息)。UDDI 實現將發布和發現服務的 SOAP 請求解釋為用于基本數據存儲的數據管理功能調用。
2.5 ESB
企業服務總線 ESB(Enterprise Service Bus)是 SOA架構的一個支柱技術。作為一種消息代理架構它提供消息隊列系統,使用諸如 SOAP 或 JMS(Java Message Service)等標準技術來實現。 ESB 的主要功能有:通信和消息處理、服務交互和安全性控制、服務質量和服務級別管理、建模、管理和自治、基礎架構智能等。ESB的基本結構如圖3所示:
3 應用實例分析
在跟蹤研究國內外、相關領域的最新研究成果的基礎上,構建了一種基于面向服務構架的電子商務應用集成方案,此方案以XML及SOAP為信息載體,以服務注冊、服務請求和服務提供構建面向服務的統一構架,將電子商務應用的各主體集中一個統一的、開放的平臺中,從而使企業的電子商務系統具有敏捷服務、快速重構、安全可靠、資源重用及自由擴充等特點,為電子商務的進一步發展提供了一種新的應用方案。本文提出基于SOA的電子商務應用集成方案包括三個方面。通過三個方案的集成實施,可在最小限度改變企業原有電子商務系統的基礎上實現企業電子商務應用集成。既有類似EAI的緊密耦合效果,又有SOAP的松散開放組合。在上述集成方案的基礎上,我們在網上圖書銷售行業構建了一個基于SOA的電子商務應用集成系統,如圖4所示:
集成系統整體上包括三大部分:服務管理部分、服務請求部分和服務提供部分。具體的實施過程包括如下步驟:
1)確定電子商務活動參考者,分析業務流程,起草并簽訂相關協議。參與方包括圖書供應商、物流企業、銀行、認證機構及圖書購買者,其中除圖書購買顧客之外,其他參與方均是雙層身份(既是服務請求者有是服務提供者),考慮到集成系統的規模和階段性,本系統測試階段沒有將稅務、工商、海關、出版發行、文化及仲裁等部門納入系統。
2)確定軟件開發工具,詳細分析軟件需求,編寫及集成系統軟件通信組件及其他中間件。在詳細分析比較微軟的NET開發工具、SUN ONE開發工具和IBM的Web Sphere開發工具的基礎上,我們認為微軟的NET開發工具具有良好的集成應用功能,支持多語言開發,但跨平臺能力不足。SUN公司的SUN ONE開發工具在跨平方面表現優秀,對CORBA,RMI,DCOM支持較好,但對SOA,Web Services的應用支持欠佳。選擇IBM的Web Sphere作為本系統的開發工具主要基于三點:①對Web Sphere應用的極佳支持;②可以利用Java語言實現包括Lotus,Notes在內的眾多IBM類庫共享,支持全組件開發;③所開發的系統跨平臺能力較好。
3)構建服務代理,建立UDDI存儲庫。本系統采用支持XML的DB2數據庫,用于存儲各參與方服務注冊信息。
4)相關參與方按規定要求將其原有系統進行部分調整。本部分主要完成了三個方面內容:①將相關收據進行XML封裝;②將服務模塊進行Web Services封裝;③調整原有系統的安全認證機制。
5)分區域、分階段聯機測試軟件集成系統。主要測試集成系統的穩定性、安全性、易用性及糾錯性能等特性。
4 小結
SOA還處在不斷的發展之中,雖然被稱為在面向對象和基于構件的軟件開發之后的下一代技術,但是目前還沒有以上兩種開發方法成熟,且目前的應用還不廣泛。然而,由于 SOA自身具有的優勢符合了未來軟件發展的趨勢,并隨著各大軟件供應商在此展開的深入研究和激烈競爭 ,它必然會成為成熟的下一代主流開發技術而得到廣泛支持和應用。但是為了應對SOA的安全挑戰,需要在企業范圍內(還應包括其合作伙伴)建立一套統一的安全基礎設施,通過對請求者進行身份驗證和對其授予服務訪問權、基于基本信任模型跨 Web 服務請求傳播安全上下文、審核重要事件,以及有效地保護數據和內容,安全基礎設施幫助企業形成一套完整的保護基于組件和服務的SOA環境的結構。
參考文獻
[1] DICOM Digital Imaging and Communications in Medicine[DB/OL]. http://medical.nema.org.
[2] SOAP:Lite Home,Available[DB/OL] http://www.soaplite.com/.
[3] 陶坤旺,劉紀平.基于 SOA的電子政務空間信息2 服務研究與實現 [C].中國地理信息系統協會第九屆年會論文集. 2005.