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