石文博, 孫婧鑫
(西安石油大學 計算機學院, 西安710065)
隨著互聯(lián)網(wǎng)技術的迅猛發(fā)展,軟件的開發(fā)過程越來越傾向于提高軟件的集成性和可擴展性。 在此基礎之上,一種SOA(Service Oriented Architecture)面向服務的體系結構以其高度靈活、松散耦合以及擴展性高等特性逐漸出現(xiàn)在商業(yè)軟件的開發(fā)領域中。 Web服務是實現(xiàn)SOA 體系結構的主流技術,它是基于網(wǎng)絡的、分布式的、自描述的、模塊化的組件。 不同的Web 服務執(zhí)行特定的任務,執(zhí)行一定的技術規(guī)范,并且實現(xiàn)在Internet 上的統(tǒng)一注冊、發(fā)現(xiàn)、綁定和集成機制。 這種機制逐漸受到工業(yè)界和學術界的廣泛認可。
SOA (Service Oriented Architecture)面向服務的體系結構是一種組件模型[1],它將應用程序的不同功能單元(稱為服務)進行拆分,并通過這些服務之間定義良好的接口和契約聯(lián)系起來,從而有效控制系統(tǒng)和軟件代理交互時的人為依賴性。
SOA 最初的概念由Gartner 在20 世紀90 年代末提出,將其定義為C/S 結構的設計理念。 SOA 的應用程序由服務請求方和服務的相應方組成,SOA 對各組件之間的松散耦合性要求更高,從而使它使用的接口更加獨立分散,這也是SOA 系統(tǒng)的主要優(yōu)勢[2]。
Web 服務組合框架結構由服務供應商、服務消費者和服務注冊中心三種角色,發(fā)布、發(fā)現(xiàn)、綁定和調用三種基本操作組成[3]。 對于Web 服務組合其框架結構如圖1 所示。
圖1 Web 服務組合框架結構Fig. 1 Web services composition framework structure
(1)服務供應商。 一個可通過互聯(lián)網(wǎng)查找到的實體,實現(xiàn)接收和執(zhí)行來自使用者的請求。 除此之外,還把自身所包含的服務和接口契約發(fā)布到服務注冊中心,以便服務使用者發(fā)現(xiàn)和訪問該服務。
(2)服務消費者。 一個功能模塊或需要服務的軟件系統(tǒng)。 它發(fā)起對注冊中心中服務的查詢,通過傳輸綁定服務,執(zhí)行服務功能,服務使用者根據(jù)接口契約來執(zhí)行服務。
(3)服務注冊中心。 實現(xiàn)服務消費者和服務供應商之間的中轉代理,包含一個可用服務的存儲庫,并允許相關服務使用者查找服務提供者接口。
(4)服務協(xié)議。 服務的發(fā)布、請求、調用以及響應進行標準化,使服務消費者和服務供應商之間的交互變得規(guī)范化,為彼此間的通信奠定基礎。
Web 服務組合的執(zhí)行流程如下:
(1)首先由服務供應商提供服務,將服務信息發(fā)布到服務注冊中心完成注冊。
(2)服務消費者要使用服務,需要向服務注冊中心發(fā)送請求。
(3)服務注冊中心根據(jù)服務消費者提交的服務描述,在服務注冊中心庫中查找相對應的服務。
(4)服務注冊中心將查找到的服務相關信息(主要是接口描述信息等)反饋回服務消費者,服務消費者根據(jù)信息完成對服務供應商的綁定和執(zhí)行。
在服務組合框架結構中的每個實體都分別充當服務消費者、提供商和注冊中心的一種或多種角色,每種角色依照相應的協(xié)議規(guī)范,完成特定的操作任務。
當前,對Web 服務組合學術界和工業(yè)界已經(jīng)提出了多種方法,總的來說,Web 服務組合方法從組合方案生成方式來分有靜態(tài)組合和動態(tài)組合兩大類。 靜態(tài)組合意味著請求者應在組合計劃實施前創(chuàng)建一個抽象的過程模型,抽象的過程模型包括任務的集合以及任務間的數(shù)據(jù)依賴關系,每個任務包含一個查詢的子句,用來查找完成任務的真正的Web服務。 而動態(tài)組合不僅自動地選擇、綁定Web 服務,同時更重要的是自動地創(chuàng)建過程模型。 這里,重點討論基于BPEL4WS、語義驅動以及模型驅動的Web 服務組合方法[4]。
BPEL4WS(Business Process Execution Language for WebServices,Web 服務的商業(yè)流程執(zhí)行語言)是專為整合Web 服務而制定的一項規(guī)范標準[5]。BPEL4WS 的作用是將一組現(xiàn)有的服務整合起來,從而定義一個新的Web 服務。 它基于業(yè)務流程與參與者的交互來定義流程的描述規(guī)范,以此來實現(xiàn)業(yè)務流程的建模。 BPEL4WS 基于Web 服務標準,更加側重于業(yè)務流程本身,詳細描述了一組關于無狀態(tài)服務的流程編排與調用方式,即將現(xiàn)有的服務重新組合起來,從而定義一個新的服務。
通過對Web 服務的編排和組合,BPEL4WS 可以自上而下地構建面向服務的體系結構。 但是BPEL4WS 語言本身并不能單獨地去完成業(yè)務流程的實例化,以及具體Web 服務的調用和業(yè)務流程管理等功能,它主要完成了業(yè)務流程的定義和描述。而流程實例的驅動、執(zhí)行以及具體服務的調用等都是由BPEL 引擎來完成的,可以說BPEL4WS 引擎為BPEL4WS 流程的執(zhí)行提供了必要的運行環(huán)境。
總而言之,BPEL4WS 流程是一個流程圖,用來表達特定業(yè)務的處理邏輯和算法,流程的每一步稱為一個活動。
BPEL4WS 主要利用WSDL 完成對服務的動態(tài)綁定功能,但它缺乏提供具體方式來選取動態(tài)綁定時需要調用的服務,并且BPEL4WS 不支持在應用運行時的流程模型的調整。
面向語義的Web 服務組合通過在Web 服務中添加語義信息,使機器能夠自動理解并進行需要的操作,最終生成Web 服務過程。 目前基于語義的Web 服務組合的主要成果是OWL-S(OntologyWeb Language for Services,Web 服務的本體語言) 和WSDL(Web Services Description Language,Web 服務描述語言)。
WSDL 是用來描述網(wǎng)絡(Network)服務或終端(End-point)的一種XML 語言,它用于定義Web 服務以及如何調用服務[6]。 WSDL 文檔可用于動態(tài)發(fā)布Web 服務、查找已發(fā)布的Web 服務以及綁定Web 服務。
OWL-S 建 模 的 服 務 本 體 有3 個 部 分[7],ServiceProfile 提供服務及服務提供者的高層描述,包括服務概述、功能屬性、服務性能屬性,表達了該服務“能做什么”; ServiceModel 表達了該服務是怎樣工作的,其子類ProeessControlModel 用來支持服務的執(zhí)行和監(jiān)測; ServicesGrounding 表達了怎樣使用這個Web 服務,是從抽象的服務描述元素到具體的服務描述元素規(guī)范的映射。
在用特定語言定義組合服務的基礎上,提出用模型驅動的方法來開發(fā)、管理動態(tài)服務組合,模型驅動方法將軟件開發(fā)方法學應用到服務組合中。 該方法是使用統(tǒng)一建模語言(UML)定義服務模型和業(yè)務流程模型,定義模型和相對應服務和業(yè)務流程的轉換規(guī)則,完成服務和業(yè)務流程的自動生成[8],該組合定義隨后可自動地映射到特定的規(guī)范,如:BPEL4WS 上,業(yè)務流程所需要的Web 服務可以實現(xiàn)動態(tài)地綁定。
基于模型驅動的Web 服務組合方法的分為3個主要步驟:
(1)建模。 根據(jù)業(yè)務需求使用UML 服務模型和UML 業(yè)務流程模型對Web 服務和業(yè)務流程建模。
(2)轉換。 從UML 服務模型中轉化得到Web服務的WSDL 和代碼框架,以及服務語義描述。 從UML 業(yè)務流程模型中轉換得到抽象流模板和流程伙伴契約。
(3)綁定。 通過契約和服務描述基于本體語義的匹配,確定業(yè)務流程需要綁定的Web 服務,并將流程模板轉換為可執(zhí)行的BPEL4WS 流程上。
面向服務的體系結構是技術和架構的自然進化。 軟件系統(tǒng)開發(fā)的集成性、封裝性和簡便性是開發(fā)大型系統(tǒng)的必然要求和發(fā)展趨勢。 本文通過對SOA 體系結構介紹,分析論證Web 服務組合實現(xiàn)原理及其框架結構,總結了當前主流的Web 服務組合方法,并對方法的實現(xiàn)原理和優(yōu)缺點進行闡述。
Web 服務的主要思想是處在服務組合體系中的每個實體都是服務,這些服務通過網(wǎng)絡發(fā)布一個可調用的API 接口,方便其他服務的調用。 而Web服務組合則是將服務按照一定的規(guī)則有次序調用執(zhí)行。 因此,如何準確發(fā)現(xiàn)和描述Web 服務,如何使服務組合描述過程更加清晰簡潔,以及如何對Web服務組合過程模型構建領域都有待深入研究。