摘 要: 針對目前SOA研究現狀,對SOA、Web Service和Web Service組合模式予以分析研究,構建出基于SOA的Web Service組合模式及運行時架構,以實現對互聯網上相關子系統資源共享、平臺獨立和松散耦合,為互聯網上信息系統開發提供新的解決方案。最后,應用此組合模式及架構開發項目“研究生實習實踐綜合管理信息系統”中學院導師管理模塊Web服務,說明此架構在Web Service及信息系統中的適用性。
關鍵詞: 面向服務; XML; Web服務; SOA; 組合模式
近年來,大量的Web Service已經在基于互聯網的軟件開發中出現,Web Service正發展為一個集成信息資源的分布式計算環境[1]。隨著信息技術的發展,用戶對軟件的功能需求日益多元化,單獨的Web Service已很難滿足用戶的需求[2]。為了滿足用戶的多元化需求,尋求一種基于面向服務架構、動態服務組合的Web Service開發模型已成為計算機學科領域研究的熱點問題。動態服務組合是按需利用已有Web Service組合成新服務的技術[3],可以迅速地構建起新的Web Service或應用系統,更好地滿足用戶的需求。
隨著Web Service組合技術的發展,出現了不少基于各種架構的Web Service組合模型。參考文獻[4]提出基于聚類的Web Service組合模式,該模式滿足組合服務按功能的粗糙分類,不滿足服務時實精確匹配,可能造成服務冗余。參考文獻[5]提出基于生成樹的Web Service組合模式,該模式把具有一定聯系的服務看作是樹的一個結點進行合并,最后形成一個完整的服務系統,但各服務之間耦合度過高,不利于新服務的加入。參考文獻[6]提出基于服務組鏈的Web Service組合模式,該模式擴展了基于服務鏈有順序服務組合方法[7],能以統一的方式解決順序和并發服務組合問題。而面向服務架構(SOA)是松散耦合的,可以重用已有的服務,并可按需定制新的服務集成到原系統中, 靈活地組建應用系統。因此,應用SOA是構建松散耦合Web Service組合系統的一個有效途徑[8]。
在分析總結以往對SOA、Web Service和Web Service組合研究基礎上,首先,對SOA、Web Service和Web Service的組合模式予以分析研究;其次,提出基于SOA的Web Service組合模式,并在此組合模式中,利用Petri網對系統工作流程建模,完成Web Service分層設計;最后,基于此Web Service組合模式實現了“研究生實習實踐綜合管理信息系統”中學院導師管理模塊Web Service,證明了此模式的可行性。
1 面向服務架構
服務可以定義為:一個服務是一個能實現良好業務功能的模塊,可以被服務使用者通過服務已發布的接口進行調用來重新構建新的應用或業務流程[8]。面向服務架構是一個組件模型,它將應用程序的不同功能單元服務化,通過服務間定義良好的接口和協約聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在此系統中的服務可以使用統一和標準的方式進行通信[9]。面向服務架構(SOA)是一種特定環境下采用的一種軟件開發架構,SOA的參考架構如圖1所示。
(1)服務組件層:服務組件層包括組件、模塊、程序等元素,這一層中的元素滿足了服務層中的服務所定義的契約。服務由組件、模塊和程序組成。
(2)服務層:這一層包含了所有在服務組合中定義的服務。每個服務的定義由語法和語義信息組成,都在這一層中定義。
(3)業務過程層:業務過程層描述了業務執行的方式。
(4)消費者層:這一層描述了不同的渠道,IT的功能通過這些渠道交付。
(5)QOS層:這一層關注實現和管理非功能性需求及服務的安全。
2 Web Service
Web Service是建立可互操作的分布式應用程序的新平臺,它是對一些松散耦合的服務的抽象集合。具體來說,Web Service是一種模塊化的軟件應用程序,他們通過網絡注冊并發布到注冊中心,其他應用程序可以通過注冊中心獲得這些Web Service的調用規范,一般使用WSDL描述,然后按照調用規范的定義使用SOAP協議綁定來訪問和調用這些Web Service。
Web Service基于XML技術標準,為運行在不同平臺、不同架構以及使用不同語言編寫的各種軟件應用程序之間的互操作提供了一種解決方案。目的是為了讓計算機應用程序自動識別和運用所提供的服務。Web Service的體系架構如圖2所示。
在圖2的Web Service體系結構中共有3種角色:(1)服務提供者(Service Provider)發布自己的服務,并且對使用自身服務的請求者進行響應;(2)服務代理(Service Broker)注冊與發布服務及其提供者,對其進行分類,并提供搜索服務;(3)服務使用者(Service Requester)利用服務代理查找所需的服務,進而根據需要使用該服務。
2.1 SOA和Web Service的關系
W3C在2004年2月發布的面向服務架構規范中指出SOA是Web服務的架構,換言之,Web服務實現了面向服務的架構(SOA)。SOA是一套面向服務架構的標準規范,Web服務則是一套技術體系,可以用來建立應用解決方案,解決特定的消息通信和應用集成問題。SOA與Web Service之間的關系可以用數據結構中的森林和樹符號化表示。
定義1:Web Service=(T,A1,A1...An)是具有n個結點的樹,1、2、...是結點編號,根結點即為服務代理,結點之間的關系即為服務之間的綁定關系。此定義的圖形化表示,如圖3所示。
定義2:SOA=(T,T1…Tn)是具有n棵樹的森林,1,2,…n是每課樹的編號,每棵樹為一種Web Service,樹由服務代理、服務提供者、服務使用者組成,服務代理即為根結點,樹根之間的關系即為不同Web Service之間關系,而樹結點之間的關系即為不同服務之間的層次關系。此關系可用圖4形式化地表示。
(3)條件模式
條件模式指在滿足某個條件下才執行某個Web Service,如圖7所示。
3 基于SOA的Web Service組合應用
3.1 Petril網建模
首先, 利用Petri網對服務組合流程建模, 該模型包含順序、并行和循環三種組合模式,整個組合系統主要由5種服務組成,如圖8所示。
圖8中,s1是企業創建的申請,s2是學生申請過程,s3是學生的申請,s4是導師審核。t1是登陸系統,用于驗證用戶身份;t2是判斷企業申請是否通過的條件;t3是判斷學生能否申請此實習單位的條件;t4是判斷學生是否申請成功該實習單位;t5是循環條件,判斷導師是否要繼續執行此審核。
根據Petri網模型將學院導師管理組合Web Service 轉化為相應的XML文件,XML文件中定義了調用Web Service相應欄目的功能。下面為學院導師管理Web Service的主頁面,將其命名為Supervisor,在調用學院導師管理Web Service時,利用SOAP調用文件Supervisor.xml。
學院導師管理組合Web Service軟件主界面如圖9所示。
3.2 學院導師管理Web Service軟件核心功能
核心算法:
<script language="javascript">
<!--讀取欄目的值-->
XmlDocument doc = new XmlDocument();
doc.Load("Supervisor.xml");
XmlNodexnserver= doc.SelectSingleNode
("resourcesdata/dataconnection/server");
<!--操作欄目功能>
XmlDocumentdoc=new XmlDocument();
doc.Load("Supervisor.xml");
XmlNode xnuser=doc.SelectSingleNode
("resourcesdata");
xnuser.Attributes["createuser"].InnerText="false";
doc.Save("Supervisor..xml");
<!--添加欄目功能-->
XmlDocumentdoc= new XmlDocument();
XmlTextReader reader=new
XmlTextReader("Supervisor.xml");
XmlElement root = doc.DocumentElement;
<!--獲取欄目的值-->
XmlElementtagMessage=doc.
CreateElement("Rootnet");
XmlElementtagText= doc.CreateElement
("Catalog");
<!--保存Supervisor.xml文件-->
doc.Save("Supervisor.xml");
</script>
打開學院導師管理Web Service軟件,以學院導師用戶身份登陸,如圖10所示。點擊學生申請管理欄目,導師就可對自己所帶學生的實習申請進行審核處理,也可以用學號對學生的申請進行篩選,然后進行快速審核。
在面向服務的軟件開發范型中,強調以聚合網絡資源和滿足用戶多元化需求為出發點,以服務用戶為核心。文章以SOA及Web Service的基本概念為出發點,分析了以往Web Service的組合模式,并給出了基于SOA的Web Service的組合模式。該模式以Petri網[11]為服務工作流的建模工具,對軟件服務按層松散組合,形成了完整的軟件原型。最后,以此組合模式實現了“學院導師管理”這個簡單的Web Service案例。實驗表明,運用基于SOA的Web Service組合模式可以有效地將網絡上的資源進行整合重用,用戶不用再考慮軟件本身的復雜性,只需要根據需求選擇需要的服務即可,同時此案例也體現了面向服務體系架構以服務用戶為核心的先進理念。目前,Web Service在架構上趨于穩定,但是Web Service的關鍵技術還有待解決,如通過對基于語義的查找技術、基于語義的智能Web Service組合等問題進行研究[12],實現用基于語義的查找技術來替換現有Web Service基于關鍵字查找的方法,進一步體現面向服務體系架構“服務用戶”的思想。
參考文獻
[1] FENSEL D, BISSLER C, MAEDCHE A. Semantic Web enable Web services[C]. Proceedings of the First Interational Semantic Web Conference on the Semantic Web,2002(8):1-2.
[2] 李景霞,侯紫峰.Web 服務組合綜述[J].計算機應用研究,2005(12):4-7.
[3] 張佩云,孫亞民.動態Web服務組合研究[J].計算機科學,2007,34(5):4-7.
[4] 石彥華,李蜀瑜.基于聚類Web服務的組合服務模式規約[J].計算機應用研究,2011,28(2):598-601.
[5] 劉安豐,陳志剛,桂衛華,等.基于生成樹的Web服務組合模型[J].計算機工程,2008,34(10):108-110.
[6] 劉思培,劉大有,齊紅,等.基于服務組鏈的Web服務組合方法[J].吉林大學學報,2010,40(1):148-154.
[7] 付燕寧,劉磊,金成植.基于服務鏈的Web服務組合方法[J].通信學報,2007,28(7):92-97.
[8] 王成良,馮欣.基于目標遞進的Web服務組合方法[J].計算機工程,2011(6):52-54.
[9] 邢少敏,周伯生.SOA研究進展[J].計算機科學,2008,35(9):13-20.
[10] 趙松,王紅,閻嫕.Web服務組合工作流中擴展UDDI的設計與實現[J].計算機工程與設計,2009,30(1):216-218.
[11] 黃瑜岳, 李克清. 基于Petri網的工作流合法性驗證綜述[J].計算機應用研究,2013,30(1):26-29.
[12] 葉蕾, 張斌. 基于功能語義的Web服務發現方法[J].計算機研究與發展,2007,44(8):1357-1364.