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