張鵬亮
(浙江水利水電專科學(xué)校,浙江 杭州 310018)
網(wǎng)絡(luò)上信息資源的不斷增長,要求信息系統(tǒng)具有分布性特征并且能夠和其他系統(tǒng)進行互操作.傳統(tǒng)的軟件開發(fā)技術(shù)由于缺少分布式和互操作機制而不能很好的滿足這一要求.而Agent設(shè)計的初衷就是為分布式和互操作服務(wù)的,因此基于Agent的技術(shù)是實現(xiàn)分布式信息系統(tǒng)的可行方式之一.而近幾年Web服務(wù)在信息技術(shù)領(lǐng)域發(fā)展為成熟且應(yīng)用廣泛的一項技術(shù).使用Web服務(wù)可以將信息系統(tǒng)的功能封裝為一系列相互交互的服務(wù),而這些服務(wù)的封裝與調(diào)用是標準的、不依賴于特定系統(tǒng)與技術(shù)(如.NET技術(shù)或Java EE技術(shù)).因此,Web服務(wù)可增強信息系統(tǒng)的靈活性、降低系統(tǒng)的耦合度,可以通過一個個Web服務(wù)來構(gòu)成一個完整的信息系統(tǒng).但在Agent領(lǐng)域,并未和信息技術(shù)領(lǐng)域的發(fā)展同步,Agent和Agent之間還是通過特定的協(xié)議(如KQML,FIPA-ACL)進行通訊,而且也未提供Agent向非A-gent系統(tǒng)提供服務(wù)的機制.本文在結(jié)合FIPA Agent規(guī)范[1]與Web服務(wù)規(guī)范[2]的基礎(chǔ)上,提出了基于Web服務(wù)的Agent架構(gòu)模型.
現(xiàn)有的對FIPA兼容Agent平臺和Web服務(wù)集成的研究大都是在AgentCities Web Services Working Group提出的高層結(jié)構(gòu)化建議上的.WSDL2JADE[3]可以從WSDL文件生成JADE[4]Agent本體和Agent代碼.與其它具有類似功能的軟件相比,WSDL2JADE的顯著特征就是允許在運行時將JADE a-gent作為Web服務(wù)部署.這就為Web服務(wù)的發(fā)現(xiàn)和使用提供了更高層次的自動化.WSDL2JADE也有一些缺點,比如在使用XML枚舉數(shù)據(jù)類型創(chuàng)建本體文件時,XML枚舉值和類型信息是缺失的,這就使客戶端Agent無法使用相關(guān)數(shù)據(jù)類型的操作.另外單線程Agent和1∶1的從Web服務(wù)到Agent的映射也導(dǎo)致了多個Agent同時訪問一個Web服務(wù)的問題.WS2JADE[5]提出了Agent和Web服務(wù)互操作的三方面內(nèi)容:(1)通信語言;(2)本體和服務(wù)描述;(3)交互協(xié)議和構(gòu)建語言.在 WS2JADE里,通過駐留在WS2JADE系統(tǒng)里的代理Agent,Web服務(wù)對FIPA兼容Agent是可見的.在WS2JADE里,Web服務(wù)的發(fā)現(xiàn)是通過UDDI代理Agent實現(xiàn)的.雖然WS2JADE提供了與Web服務(wù)共同工作的有效方法,但仍然存在著問題,比如只是從Web服務(wù)到Agent的單向集成.WSIG[6]支持Web服務(wù)和JADE Agent的雙向集成.WSIG實際上是Agent ACL和Web服務(wù)調(diào)用之間的翻譯器.為了讓W(xué)SIG在Agent和Web服務(wù)兩個環(huán)境里都可見,WSIG在FIPA DF里注冊為特殊的Agent服務(wù),而在UDDI目錄里注冊為特殊的web服務(wù)端點.使用WSIG雖然部分解決了Web服務(wù)和A-gent的雙向集成問題,但這樣的集成不是無縫的,即Agent體系Web服務(wù)系統(tǒng)還各自獨立,需要通過集成網(wǎng)關(guān)來傳遞消息.同時WSIG也沒有解決Agent的有狀態(tài)通信和Web服務(wù)的無狀態(tài)通信的問題.
FIPA agent平臺參考模型[1],見圖1,它是一個分布式平臺.AMS(Agent Management System)是一個管理Agent,它控制對Agent平臺的訪問和使用,并負責維護一個駐留Agent的目錄以及處理這些A-gent的生命周期.DF(Directory Facilitator)是一個提供黃頁服務(wù)的Agent,即提供系統(tǒng)中有哪些Agent服務(wù)可用的信息服務(wù).ACC(The Agent Communication Channel)提供一個平臺內(nèi)外異質(zhì)Agent的通訊方式.
為了能和FIPA標準兼容,也能使Agent和Web服務(wù)無縫集成并以Web服務(wù)的機制運行和通訊,本文提出了“雙?!苯Y(jié)構(gòu)的Agent參考模型,我們稱之為WS-Agent.見圖2.
圖1 FIPA Agent平臺參考模型
圖2 WS-Agent模型
WS-Agent結(jié)構(gòu)將Agent分成3個層次,分別是通訊層、中間消息層和本體層.ACL(Agent Communication Language)是FIPA兼容Agent系統(tǒng)的標準通訊語言,它對Agent間相互通訊的消息進行描述和封裝,而Web服務(wù)的通訊協(xié)議是SOAP.為了能夠保證Agent能與傳統(tǒng)的FIPA兼容的Agent進行通訊,這里仍然保留Agent的ACL通訊機制.同時,我們給Agent增加了Web服務(wù)的SOAP通訊機制.采用這樣的雙棧通訊方式,在傳統(tǒng)的Agent看來,此結(jié)構(gòu)的A-gent就是一個傳統(tǒng)的FIPA兼容的Agent的.而采用SOAP協(xié)議進行通訊的Agent只能和采用相同協(xié)議的Agent進行通訊,同時也可以利用本身Web服務(wù)的特性,為非Agent的軟件提供服務(wù).一個WS-Agent可以同時以ACL和SOAP協(xié)議進行通訊.因為一個WS-Agent的通訊協(xié)議有兩種,如果讓Agent本體處理不同的格式消息會增加Agent本體實現(xiàn)的復(fù)雜度.另外從可擴展性方面來說這樣做也不利于擴展,例如想增加KQML為通訊協(xié)議的時候.為了能使Agent本體能統(tǒng)一處理通訊中的消息,這里設(shè)立了中間消息層,不同的消息協(xié)議格式轉(zhuǎn)換為一種統(tǒng)一的消息格式.采用消息中間層的思想有利于Agent的松耦合實現(xiàn)并利于擴展.在這里并未指定采取何種消息格式作為統(tǒng)一格式,可在具體實現(xiàn)時指定.本質(zhì)上中間消息層是一個不同消息格式的轉(zhuǎn)換器.本體層的核心組件為本體,它是Agent的核心內(nèi)容.Agent的自治性、響應(yīng)性、交互性、適應(yīng)性等特性都是在本體層的組件中給予實現(xiàn).
WS-Agent是一個松耦合模型,在具體實現(xiàn)時,本體、中間消息層以及ACL和SOAP通訊通道都可以以單獨的對象或組件存在,它們甚至可以運行在不同的設(shè)備上,只要它們能通過網(wǎng)絡(luò)連接.對于在同一容器內(nèi)運行的這些組件間的通訊,可以使用本地調(diào)用,而不同設(shè)備上的同一WS-Agent組件可以采用遠程方法調(diào)用機制,如用Java實現(xiàn)即可使用Java RMI.
不管對于FIPA平臺結(jié)構(gòu)還是Web服務(wù)結(jié)構(gòu),都需要一個提供黃頁服務(wù)的服務(wù)描述組件.在Agent系統(tǒng)中是DF,而在Web服務(wù)系統(tǒng)中是UDDI,它們都描述了各自領(lǐng)域內(nèi)的服務(wù).在WS-Agent體系結(jié)構(gòu)下,服務(wù)描述組件應(yīng)該能夠同時提供Agent服務(wù)描述和Web服務(wù)描述的服務(wù).為了和WS-Agent的中間消息思想保持一致,在這里也采用了統(tǒng)一服務(wù)描述機制,但是和Agent的統(tǒng)一消息不同,在服務(wù)描述組件上,我們讓Agent的服務(wù)描述作為統(tǒng)一描述.我們將此服務(wù)描述組件稱之為UDDI-DF.見圖3.
圖3 服務(wù)描述組件UDDI-DF
對于FIPA Agent來說,此服務(wù)組件和傳統(tǒng)的FIPA DF并未有任何不同,服務(wù)的注冊和查詢也和傳統(tǒng)的DF一致,服務(wù)描述翻譯器和UDDI代理對FIPA Agent來說是不可見的.而對于以SOAP為通訊機制的WS-Agent或者其他想要獲得Web服務(wù)的組件來說,此服務(wù)組件就是一個UDDI服務(wù)描述組件,雖然在內(nèi)部的實現(xiàn)上采用UDDI的代理機制.因為采用代理機制,Web服務(wù)的注冊和查詢就需要有特殊的機制,其中服務(wù)描述翻譯器起到了關(guān)鍵的作用.服務(wù)描述翻譯器需要維護一個從UDDI到DF的映射表,它在對服務(wù)描述組件的操作過程起到一個連接DF注冊庫的橋梁作用.對于服務(wù)描述組件來說,它至少需要四種操作:(1)注冊新服務(wù);(2)注銷現(xiàn)存服務(wù);(3)修改現(xiàn)存服務(wù);(4)搜索已注冊服務(wù).為簡單起見,現(xiàn)對WS-Agent的注冊新服務(wù)和搜索已注冊服務(wù)的過程作簡單描述,見圖4、圖5.
圖4 注冊過程
圖5 搜索過程
在WS-Agent注冊過程中,UDDI代理接收到注冊請求后將注冊信息提交給服務(wù)翻譯器,由服務(wù)翻譯器將WSDL描述的Web服務(wù)描述翻譯為ACL服務(wù)描述,之后將ACL服務(wù)描述存入到DF中,同時將映射信息存入到映射表中.在查詢服務(wù)過程中,UDDI代理將查詢信息提交給服務(wù)翻譯器,服務(wù)翻譯器從映射表中查詢到相應(yīng)條目后到DF中查詢服務(wù),最后由服務(wù)翻譯器將ACL服務(wù)描述翻譯回WSDL描述.從對UDDI-DF的操作過程中可以看到,要想讓W(xué)S-Agent以Web服務(wù)作為通訊機制或者向其他程序提供Web服務(wù),必須通過UDDI代理注冊服務(wù)才可以.如果WS-Agent以ACL通訊機制直接在DF注冊服務(wù),則它不能以Web服務(wù)方式進行通訊,也即不能提供Web服務(wù).傳統(tǒng)的Agent只能在DF中注冊服務(wù).
根據(jù)Web服務(wù)結(jié)構(gòu)建議[2],Web服務(wù)是被動響應(yīng)型的,即Web服務(wù)只能接收請求并為請求者服務(wù),除了有可能向請求者發(fā)送響應(yīng)外,Web服務(wù)不能主動發(fā)起請求.這就造成了WS-Agent的通訊問題,因為一個Agent不能只提供單向的通訊,這不符合Agent的基本要求.為了能夠?qū)崿F(xiàn)WS-Agent的雙向通訊,需要對進行Web服務(wù)通訊的SOAP通道進行雙向改造.除了保留接收Web服務(wù)請求的上行通道外,還需要增加一個能夠發(fā)起Web服務(wù)請求的下行通道.因此SOAP通道組件由兩個組件構(gòu)成,一個是以Web服務(wù)方式存在的上行通道,另一個是調(diào)用其他Web服務(wù)的下行通道.現(xiàn)對WS-Agent發(fā)起Web服務(wù)請求的過程描述如下:
(1)本體因計算原因,需要其他Agent的合作及服務(wù),生成調(diào)用消息.
(2)中間消息層將消息翻譯成UDDI查詢請求.
(3)SOAP下行通道進行UDDI查詢.如果查詢失敗則異常處理,否則根據(jù)查詢獲得的WSDL描述創(chuàng)建SOAP消息.
(4)SOAP下行通道發(fā)送SOAP消息,等待Web調(diào)用的響應(yīng).
(5)SOAP下行通道接收到響應(yīng)之后將之傳遞給中間消息層.
(6)中間消息層將SOAP響應(yīng)消息翻譯為中間層消息后傳遞給本體處理.
而SOAP上行通道則是一個標準的Web服務(wù)過程.
WS-Agent模型將Web服務(wù)中的SOAP協(xié)議作為通訊協(xié)議,將WSDL作為Agent的服務(wù)描述語言,將Web服務(wù)作為Agent的基礎(chǔ)通訊機制,使Web服務(wù)成為Agent的組成部分.WS-Agent模型可以充分利用Agent的分布式和互操作優(yōu)點,也可以利用Web服務(wù)的靈活性等優(yōu)點.相對于WSIG,WS-Agent將A-gent和Web服務(wù)結(jié)合的更加緊密,同時又能無縫的兼容FIPA Agent.利用中間消息等思想,使WS-Agent和UDDI-DF在結(jié)構(gòu)上又是松耦合的,有利于系統(tǒng)的維護和擴展.
在WS-Agent的實現(xiàn)上,JADE提供了一個很好的參考.JADE是在Java虛擬機環(huán)境中運行的Java對象,還不能提供Web服務(wù),可以借助Java EE平臺實現(xiàn)所需Web服務(wù)機制.
對于WS-Agent的后續(xù)研究,將集中在一下兩個方面:(1)WS-Agent的有狀態(tài)通訊問題.Agent之間的通訊可以是有狀態(tài)的,而Web服務(wù)卻是無狀態(tài)的.對Web服務(wù)的有狀態(tài)通訊機制的研究也是現(xiàn)有領(lǐng)域內(nèi)的難點之一;(2)Agent的自主計算問題.A-gent的自主計算問題一直未能得到很好的解決,也是今后研究的目標之一.
[1]Foundation for Intelligent Physical Agents.The FIPA Specifications[EB/OL].2002-12-03[2010-09-18]http://www.fipa.org/repository/index.html,.
[2]W3C Web Service Architecture Working Group.Web Service Architecture[EB/OL].2004-02-11[2010-09-18]http://www.w3.org/TR/2004/NOTE-ws-arch-20040211,.
[3]L.Z.VARGA,A.HAJNAL.Engineering Web Service Invocations from Agent Systems[C]//CEEMAS'03 Proceedings of the 3rd International Central and Eastern European Conference on Multi-Agent Systems.Belin:Springer-Verlag,2003:626-635.
[4]BELLIFEMINE F.,POGG A.,RIMASSA G..JADE-A FIPA2000-compliant agent development environment[C].//AGENT'01 Proceedings of the Fifth International Conference on Autonomous Agents.Montreal:ACM,2001:216-217.
[5]X.T.NGUYEN,RYSZARD KOWALCZYK.WS2JADE:integrating web service with jade agents[C].//AAMAS'07/SOCASE'07 Proceedings of the 2007 AAMAS international workshop and SOCASE 2007 conference on Service-oriented computing:agents,semantics,and engineering.Belin:Springer-Verlag,2007:147-159.
[6]GREENWOOD,D.,M.LYELL,A.MALLYA,H.S..The IEEE FIPA approach to integrating software agents and web services[C].//AAMAS'07 Proceedings of the 6th international joint conference on Autonomous agents and multiagent systems.Hawaii:ACM,2007.