摘要:SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)技術(shù)有助于實(shí)現(xiàn)大量異構(gòu)程序和平臺(tái)之間的通信,從而使存在的應(yīng)用能夠被廣泛的用戶所訪問(wèn)。SOAP是把成熟的基于HTTP的WEB技術(shù)與XML的靈活性和可擴(kuò)展性組合在一起。該文在分析已有的移動(dòng)Agent 通信機(jī)制[4]上,結(jié)合XML,SOAP[7],Web Service [1]等技術(shù),提出了一種基于 SOAP 協(xié)議的移動(dòng)Agent 通信機(jī)制。
關(guān)鍵詞:移動(dòng)Agent通信[5];SOAP;Web Service;BPEL
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)04-1009-03
Implementing Communication Mechanism Among Mobile Agent based on SOAP
HU Xiu-jun, SHI Xiao-hong
(Department of Computer, School of Information Engineering, Shanghai Maritime University, Shanghai 200135, China)
Abstract: SOAP (Simple Object Access Protocol) Contributes to the communication between a large number of programs and heterogeneous platforms, so it enables all users to access to the existing applications. SOAP is based on the maturity HTTP, XML and WEB technology. This paper give a SOAP-based protocol for mobile Agent communication mechanism which is based on existing agent mobile communications mechanism and the combination of XML, SOAP, Web Service technology.
Key words: mobile agent communication;SOAP;web service;BPEL
1 引言
移動(dòng)Agent 技術(shù)已被廣泛用于人工智能和Internet領(lǐng)域的研究活動(dòng)中。移動(dòng)Agent系統(tǒng)之間的通信方法成為了人們研究的一個(gè)熱點(diǎn)。在移動(dòng)Agent的通信研究方面,有KQML,F(xiàn) IPA ACL,移動(dòng)Agent Talk等移動(dòng)Agent通信語(yǔ)言問(wèn)世。很多組織成功的基于KQML或ACL構(gòu)建自己的多A-gent系統(tǒng)。國(guó)內(nèi)的研究大都是在KQML或ACL的基礎(chǔ)上,實(shí)現(xiàn)了 較多的移動(dòng)Agent 通信模型,但是,當(dāng)前的分布式通信協(xié)議DCOM/COM,CORBA和java RMI要求服務(wù)器端和客戶端有明確的同類型、同構(gòu)架的對(duì)等協(xié)議,從而使基于它們構(gòu)建的MAS間形成了通信障礙。DCOM允許任何語(yǔ)言的對(duì)象之間進(jìn)行通訊,卻只是在Window平臺(tái)中使用;Java RMI僅用于Java對(duì)象之間的通信;CORBA雖然支持跨平臺(tái)、跨語(yǔ)言的對(duì)象間通訊,可是CORBA本身實(shí)現(xiàn)復(fù)雜,對(duì)開發(fā)人員的要求也較高。而SOAP是基于XML和HTTP的分布式對(duì)象的通信協(xié)議,它不僅可以包容這些協(xié)議,實(shí)現(xiàn)這些協(xié)議間的互通,而且簡(jiǎn)單清晰、有優(yōu)秀的開放集成的能力。基于SOAP的Web Service因?yàn)镾OAP的跨平臺(tái)的信息表示和數(shù)據(jù)交換的特點(diǎn)而滿足互操作性、普遍性和低進(jìn)入屏障,使得各種孤立系統(tǒng)的通信變得容易。
2 SOAP、Web Service及BPEL的介紹
2.1 SOAP
SOAP的一個(gè)主要目標(biāo)是使存在的應(yīng)用能被更廣泛的用戶所使用。為了實(shí)現(xiàn)這個(gè)目的,沒(méi)有任何SOAPAPI或SOAP對(duì)象請(qǐng)求代理(SOAPORB),SOAP是假設(shè)你將使用盡可能多的存在的技術(shù)。幾個(gè)主要的CORBA廠商已經(jīng)承諾在他們的ORB產(chǎn)品中支持SOAP協(xié)議。微軟也承諾在將來(lái)的COM版本中支持SOAP。Develop Mentor已經(jīng)開發(fā)了參考實(shí)現(xiàn),它使得在任何平臺(tái)上的任何Java或Perl程序員都可以使用SOAP。而且IBM和Sun也陸續(xù)支持了SOAP協(xié)議,和MS合作共同開發(fā)SOAP規(guī)范和應(yīng)用。目前SOAP已經(jīng)成為了W3C和IETF的參考標(biāo)準(zhǔn)之一。
SOAP的指導(dǎo)理念是“它是第一個(gè)沒(méi)有發(fā)明任何新技術(shù)的技術(shù)”。它采用了已經(jīng)廣泛使用的兩個(gè)協(xié)議:HTTP 和XML。HTTP用于實(shí)現(xiàn)SOAP的RPC風(fēng)格的傳輸,而XML是它的編碼模式。采用幾行代碼和一個(gè)XML解析器,HTTP服務(wù)器(如MS的IIS或 Apache)立刻成為了SOAP的ORBs。因?yàn)槟壳俺^(guò)一半的Web服務(wù)器采用IIS或Apache, SOAP將會(huì)從這兩個(gè)產(chǎn)品的廣泛而可靠的使用中獲取利益。這并不意味著所有的SOAP請(qǐng)求必須通過(guò)Web服務(wù)器來(lái)路由,傳統(tǒng)的Web服務(wù)器只是分派SOAP請(qǐng)求的一種方式。因此Web服務(wù)如IIS或 Apache對(duì)建立SOAP性能的應(yīng)用是充分的,但決不是必要的。
SOAP把XML的使用代碼化為請(qǐng)求和響應(yīng)參數(shù)編碼模式,并用HTTP 作傳輸。這似乎有點(diǎn)抽象。具體地講,一個(gè)SOAP方法可以簡(jiǎn)單地看作遵循SOAP編碼規(guī)則的HTTP請(qǐng)求和響應(yīng)。一個(gè)SOAP終端則可以看作一個(gè)基于 HTTP的URL,它用來(lái)識(shí)別方法調(diào)用的目標(biāo)。象CORBA/IIOP一樣,SOAP不需要具體的對(duì)象被綁定到一個(gè)給定的終端,而是由具體實(shí)現(xiàn)程序來(lái)決定怎樣把對(duì)象終端標(biāo)識(shí)符映射到服務(wù)器端的對(duì)象。
SOAP協(xié)議主要由4部分組成:SOAP封裝(SOAP Envelop),定義了整體SOAP消息的表示框架,可用于表示SOAP消息的內(nèi)容、發(fā)送者和接收者;SOAP編碼規(guī)則(SOAP Encoding Rules),定義了一個(gè)編序機(jī)制用于交換應(yīng)用程序定義的數(shù)據(jù)類型實(shí)例;SOAP RPC表示(SOAP RPC Representation)定義了一個(gè)用于表示遠(yuǎn)程調(diào)用和響應(yīng)的約定;SOAP綁定(SOAP Binding)定義了一個(gè)使用底層傳輸協(xié)議來(lái)完成在節(jié)點(diǎn)間交換SOAP封裝的約定。這4部分在功能上是正交的,且彼此獨(dú)立的。SOAP消息(message)是在對(duì)等的SOAP節(jié)點(diǎn)(SOAP nodes)間通信的基本單位。SOAP消息是由一個(gè)強(qiáng)制的SOAP Envelope、一個(gè)可選的SOAP Header和一個(gè)強(qiáng)制的SOAP Body組成的XML文檔:SOAP Envelope, Envelope是表示該消息的XML文檔的頂級(jí)元素,必須作為第一個(gè)元素出現(xiàn)在文檔中;SOAP Header 用于為SOAP消息添加特征,可用來(lái)實(shí)現(xiàn)認(rèn)證,路由等;SOAP Body, Body為該消息的最終接收者提供了一個(gè)容器承載傳輸?shù)臄?shù)據(jù)。
從以上可知SOAP的優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方而:SOAP使用已有的、普遍應(yīng)用的技術(shù);SOAP支持Internet傳輸協(xié)議,實(shí)際上現(xiàn)有的SOAP應(yīng)用大多基于SOAP到HTTP協(xié)議的綁定;采用XML作為傳輸?shù)谋磉_(dá)方式;定義了一個(gè)統(tǒng)一的遠(yuǎn)程過(guò)程調(diào)用和響應(yīng)的表示,可以用于包裝和執(zhí)行RPC調(diào)用;SOAP使用標(biāo)準(zhǔn)的HTTP協(xié)議,可以跨越防火墻;能夠使用任何編程語(yǔ)言完成SOAP應(yīng)用開發(fā);相對(duì)于對(duì)象模型的獨(dú)立性,SOAP不依賴于任何分布式對(duì)象體系結(jié)構(gòu),不提供對(duì)象功能的實(shí)現(xiàn);SOAP消息可以在Internet上從一個(gè)對(duì)象發(fā)送到另一個(gè)對(duì)象,而不必關(guān)心對(duì)象的類型。
2.2 Web Service
在XML基礎(chǔ)上發(fā)展起來(lái)的Web服務(wù)[3](Web Service)是一種革命性的分布是計(jì)算技術(shù)。它使用基于XML的消息處理作為基本的數(shù)據(jù)通訊方式,消除使用不同組件模型、操作系統(tǒng)和編程語(yǔ)言的系統(tǒng)之間存在的差異,使異類系統(tǒng)能夠作為計(jì)算網(wǎng)絡(luò)的一部分協(xié)同運(yùn)行。開發(fā)人員可以使用像過(guò)去創(chuàng)建分布式應(yīng)用程序時(shí)使用組件的方式,創(chuàng)建由各種來(lái)源的Web服務(wù)組合在一起的應(yīng)用程序。由于Web服務(wù)是建立在一些通用協(xié)議的基礎(chǔ)上,如HTTP(Hypertext Transfer Protocol, WWW服務(wù)程序所用的協(xié)議),SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),XML,WSDL(Web Services Description Language,Web服務(wù)描述語(yǔ)言),UDDI(Universal Description,Discovery,and Integration,通用描述發(fā)現(xiàn)和集成協(xié)議)等,這些協(xié)議在涉及到操作系統(tǒng)、對(duì)象模型和編程語(yǔ)言的選擇時(shí),沒(méi)有任何傾向,因此Web服務(wù)將會(huì)有很強(qiáng)的生命力。關(guān)于Web服務(wù)的W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn)逐漸出臺(tái)。協(xié)議棧如圖1。
2.3 BPEL
BPEL(Business Process Execution Language),業(yè)務(wù)過(guò)程執(zhí)行語(yǔ)言,是一種基于XML的,用來(lái)描寫業(yè)務(wù)過(guò)程的編程語(yǔ)言,被描寫的業(yè)務(wù)過(guò)程的每個(gè)單一步驟則由Web服務(wù)來(lái)實(shí)現(xiàn)。
基本活動(dòng) :
assign——賦值
invoke——同步或異步地呼叫一個(gè)Web服務(wù)
receive/reply——提供一個(gè)同步或者異步呼叫一個(gè)Web服務(wù)的接口
throw——提示一個(gè)錯(cuò)誤,一個(gè)故障處理可以處理這樣的錯(cuò)誤。假如一個(gè)錯(cuò)誤不被處理的話它最終到達(dá)最高層后導(dǎo)致過(guò)程的終止
wait——等候一個(gè)時(shí)機(jī)或者一段時(shí)間
empty——無(wú)所事事,比如在一個(gè)錯(cuò)誤發(fā)生后可以不做反應(yīng)來(lái)消除這個(gè)錯(cuò)誤
結(jié)構(gòu)性活動(dòng),這些活動(dòng)包括其它活動(dòng),可以以此建立復(fù)雜的過(guò)程:
sequence——按照一個(gè)序列處理一系列活動(dòng)
while——在一個(gè)條件滿足的情況下處理一個(gè)活動(dòng)
switch——按照不同條件處理不同活動(dòng)
flow——平行或者按照隨意順序處理活動(dòng)
pick——按照外部事件從過(guò)程的角度不定值地選擇
scopes——使用這個(gè)結(jié)構(gòu)可以將一組活動(dòng)組織在一起作為一個(gè)處理單位。通過(guò)這個(gè)組織方法多個(gè)活動(dòng)可以使用同一個(gè)故障處理、事故處理和補(bǔ)償處理。通過(guò)補(bǔ)償處理BPEL可以處理長(zhǎng)時(shí)間的處理。
3 應(yīng)用SOAP實(shí)現(xiàn)移動(dòng)Agent間通信的可行性
Agent分為靜態(tài)Agent和移動(dòng)Agent,前者與靜態(tài)進(jìn)程類似,只是其代碼井非存于應(yīng)用系統(tǒng)木地,而是由網(wǎng)絡(luò)獲得,后者可以掛起執(zhí)行狀態(tài),被遷移到另一個(gè)計(jì)算節(jié)點(diǎn),然后從掛起的狀態(tài)繼續(xù)執(zhí)行。顯然,移動(dòng)Agent技術(shù)更適合于Internet環(huán)境下的SOAP應(yīng)用。移動(dòng)Agent通常需要移動(dòng)Agent平臺(tái)的支持,然而,在已有系統(tǒng)中部署Agent平臺(tái)是非常困難的,況且,如果只是為了在已有系統(tǒng)中擴(kuò)展對(duì)SOAP應(yīng)用的支持,更沒(méi)有必要實(shí)施Agent平臺(tái)的部署。此外,Agent平臺(tái)總是用于提供Agent的通用運(yùn)行環(huán)境,不能夠給予為特殊日的而開發(fā)的Agent更好的支持。Agent自身的計(jì)算與狀態(tài)以及Agent之間的交互并不復(fù)雜,所以,該文井不采用Agent平臺(tái)的部署作為研究的先決條件,取而代之的是一個(gè)基于Java的分布式Agent Server環(huán)境。這是因?yàn)镴ava技術(shù)非常適合于實(shí)現(xiàn)移動(dòng)Agent計(jì)算:Java字節(jié)代碼的可移植性允許Agent運(yùn)行于不同的計(jì)算節(jié)點(diǎn); 多線程技術(shù)可以用于Agent自治與協(xié)作的實(shí)現(xiàn); Java的對(duì)象序列化能夠支持Agent的遷移與持久化; 基于反射技術(shù)的動(dòng)態(tài)類加載可以用于實(shí)現(xiàn)高效的Agent代碼。
實(shí)現(xiàn)移動(dòng)Agent間通信重點(diǎn)需要解決兩個(gè)問(wèn)題:要在Internet環(huán)境下提供一個(gè)一致、通用的RPC協(xié)議,保證每個(gè)移動(dòng)Agent通信接口的一致性;提供一種通用的標(biāo)準(zhǔn)格式來(lái)表達(dá)移動(dòng)Agent的交互內(nèi)容。在Internet環(huán)境下,HTTP是一個(gè)相當(dāng)有用的RPC協(xié)議,它提供了類似IIOP、ORPC以及RMI在組幀、連接管理以及序列化對(duì)象應(yīng)用等方面大部分功能的支持。HTTP所缺少的是用單一的標(biāo)準(zhǔn)格式來(lái)表示一個(gè)RPC調(diào)用中的參數(shù),而這正是XML的優(yōu)勢(shì)所在。XML除了可以充分表示RPC過(guò)程中的各項(xiàng)參數(shù),還能完整地描述Agent通信中廣泛使用的通信語(yǔ)言,如:KQML、 ACL等。
因此,以SOAP結(jié)合HTTP作為RPC形式的通訊,利用XML作為移動(dòng)Agent[6]間信息交換的數(shù)據(jù)表示格式,無(wú)論從理論還是技術(shù)上說(shuō)完全可以滿足移動(dòng)Agent間通信的要求。
4 通信機(jī)制的實(shí)現(xiàn)
基于上述的分析,我們以SOAP結(jié)合HTTP作為移動(dòng)Agent通信的信息交換機(jī)制。依照這一思路,可以得出移動(dòng)Agent間的互聯(lián)模型,如圖2所示。
我們可以看出,雖然基于各類組件技術(shù)實(shí)現(xiàn)的移動(dòng)Agent使用不同的遠(yuǎn)程對(duì)象調(diào)用協(xié)議,然而它們都能夠?qū)⑦@些協(xié)議中的數(shù)據(jù)重新包裝成SOAP,即在原有移動(dòng)Agent的基礎(chǔ)上建造一層使用統(tǒng)一服務(wù)接口的應(yīng)用服務(wù)層SOAP Adaptor, SOAP Adaptor實(shí)現(xiàn)自身協(xié)議到SOAP協(xié)議的轉(zhuǎn)化,并結(jié)合HTTP使用統(tǒng)一的SOAP協(xié)議進(jìn)行通信。從功能劃分上講,主要由以下3個(gè)構(gòu)件實(shí)施對(duì)原有移動(dòng)Agent的包裝: SOAP適配器(SOAP Adaptor),負(fù)責(zé)在Internet環(huán)境下響應(yīng)SOAP請(qǐng)求,并將請(qǐng)求內(nèi)容經(jīng)過(guò)處理后傳遞給消息傳送器;消息傳送器(Message Router),負(fù)責(zé)移動(dòng)Agent中Agent間通信消息的格式轉(zhuǎn)換和消息分發(fā),負(fù)責(zé)本地Agent適配器對(duì)外部移動(dòng)Agent的SOAP的調(diào)用;Agent適配器 (Agent Adaptor),本地Agent對(duì)外交互的中介,使用與本地Agent相同的實(shí)現(xiàn)技術(shù)和通信機(jī)制,對(duì)移動(dòng)Agent內(nèi)部提供同本地Agent相同的交互接口,對(duì)消息傳送器提供向本地Agent通信消息傳送的接口。
根據(jù)移動(dòng)Agent間的互聯(lián)模型,可以確立在實(shí)現(xiàn)移動(dòng)Agent通信的系統(tǒng)結(jié)構(gòu),如圖3所示。
該系統(tǒng)中包含Home、NMR、移動(dòng)Agent,以及Mailbox 。其中,Home負(fù)責(zé)記錄該主機(jī)上出生的移動(dòng)Agent的信息。NMR (歸一化消息路由器,也譯作“正規(guī)消息路由器”),NMR 基于 WSDL 提供了主要的消息傳輸中樞, NMR 為服務(wù)引擎組件和綁定組件間的消息傳遞提供松散耦合。服務(wù)需要有聚合業(yè)務(wù)處理的接口,每個(gè)業(yè)務(wù)處理由零個(gè)或多個(gè)消息組成。而一個(gè)接口有一個(gè)或多個(gè)傳輸級(jí)綁定。一個(gè)歸一化消息由以下部分組成:消息屬性、消息有效載荷、消息附件。利用 NMR ,為服務(wù)提供者和消費(fèi)者的消息交換提供標(biāo)準(zhǔn)接口。 NMR 支持服務(wù)生產(chǎn)者和消費(fèi)者之間單向模式和服務(wù)響應(yīng)模式的調(diào)用。
假設(shè)Agent1要和Agent2通信,其主要過(guò)程如下:
a) Agent1 發(fā)出信息,該信息經(jīng)SOAP被封裝;
b) 信息到達(dá)NMR后,經(jīng)路由到達(dá)home2;
c) Home2把信息放入mailbox2中;
d) Mailbox2通知agent2;
e) Agent2從mailbox2中取出信息。
5 總結(jié)
該文提出了一種基于SOAP技術(shù)實(shí)現(xiàn)移動(dòng)Agent間通信的方法。由于使用SOAP結(jié)合HTTP作為Agent系統(tǒng)之間的通信協(xié)議,使用XML作為通信內(nèi)容的數(shù)據(jù)表示格式,因此,除了滿足基本的Agent通信需求之外,還具有跨平臺(tái)操作、通信內(nèi)容標(biāo)準(zhǔn)化以及良好的擴(kuò)展性等特點(diǎn)。
參考文獻(xiàn):
[1] B. Benatallah and F. Casati (Guest Editors), Special Issue on Web Services, Distributed and Parallel Databases, Kluwer Academic Publishers, September 2002.
[2] Z. Maamar, Q.Z. Sheng, B. Benatallah On Composite Web Services Provisioning in an Environment of Fixed and Mobile Computing Resources Information Technology and Management, Kluwer Academic Publishers, Vol 5, No 3, 2004.
[3] 徐偉.面向服務(wù)的移動(dòng)Agent通信研究[J].中國(guó)科學(xué)院研究生院,2005.
[4] 楊博.移動(dòng)Agent的主動(dòng)通信機(jī)制[J].軟件學(xué)報(bào),2003.
[5] 張?jiān)朴?,劉錦德.移動(dòng)Agent技術(shù)[M].北京:清華大學(xué)出版社,2004.
[6] 梁春泉.基于Agent的面向服務(wù)架構(gòu)的研究與應(yīng)用[J].西北工業(yè)大學(xué),2006.
[7] 馬長(zhǎng)東,徐偉,李京.一個(gè)基于Agent的SOAP應(yīng)用框架[J].計(jì)算機(jī)工程與應(yīng)用,2004(1).