双向CORBA系统体系结构


(来源:http://www.china-pub.com)

摘要:CORBA技术和移动Agent技术都是目前国内外研发的热点。将以上两种流行技术融合,使CORBA中的对象(服务器方以及客户方)具有移动Agent的特点是本文的设计思想。基于以上思想,本文给出了一种基于移动Agent的双向CORBA系统体系结构及其原型系统(称之为agentCORBA),并重点解决了在CORBA服务器方对象(如servant)移动的情况下对象命名服务的透明性问题。文本最后给出了一个基于该体系结构的简单应用实例,用以检测该体系结构及其原型系统的正确性和可用性。
  关键词:CORBA 移动Agent 双向CORBA 对象移动 体系结构 透明性
  中图分类号:TP312
1. 引 言
  CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是OMG(Object Management Group,对象管理组织)提出的一套分布式对象技术标准,涉及接口、注册、通信和出错处理等方面[1]。CORBA的核心是ORB(Object Request Broker,对象请求代理),它作为转发消息的中间件,实现了对象间的无缝集成和互操作。CORBA的平台无关性使其可以跨越不同的网络、不同的机器和不同的操作系统实现分布对象之间的互操作,并提高了软件的安全性和可重用性。CORBA已经在诸如企业管理、电信等诸多领域得到了成功应用。实践已充分证明符合CORBA规范的软件产品在构造分布式计算系统中所起的作用。但CORBA存在着一些固有的缺陷,最典型的是它没有从根本上脱离REV(远程求值)的局限,即没有代码的移动功能;而移动代码功能正是移动Agent技术的特点。
Agent技术,特别是多Agent技术,为分布开放系统的分析、设计和实现提供了一种崭新的方法,被誉为是"软件开发的又一重大突破",Agent技术已经被广泛应用到各个领域[2]。尤其是随着Internet/WWW技术的日益发展和其应用的不断深入,Agent技术在Internet上的应用以及有关移动Agent的研究变得愈加活跃。移动Agent技术彻底突破了传统REV的模式,实现了Agent的自主移动[3]。将移动Agent 的自主移动特性移植到CORBA对象,会极大地提高CORBA对象的可移动性和灵活性。
  目前有关CORBA和移动Agent的使用情况大致分为以下两种:一种是平行使用移动Agent和CORBA,即将二者用于不同的场合,不考虑二者的相互关系。另一种是同时使用移动Agent和CORBA,并且注重二者的通信交互。在CORBA/IIOP的强大技术和市场优势下,这是目前很多移动Agent系统开发和研究者工作的重点之一。这些工作主要集中在移动Agent与CORBA对象互操作的研究和实践上,它们在一定程度上使得移动Agent技术和CORBA弥补了对方的不足,但CORBA和移动Agent仍然是分离的两种技术,分别具有各自的生命周期和对象模型。JumpingBeans曾提出了"mobile agent CORBA"的思想[4],但其本质仍是移动Agent支持系统,很少涉及CORBA所特有的研究领域。从查新结果来看,目前还没有发现从体系结构层进行移动Agent与CORBA融合的报告,也没有看到将移动Agent思想引入CORBA并将其作为基本模型的观点。本文试图在这方面做了一些研究工作,给出了一种基于移动Agent的双向CORBA系统体系结构(本文称之为agentCORBA),使CORBA中的对象(服务器方以及客户方)完全具有移动Agent的特点。
2. agentCORBA系统的体系结构
  agentCORBA主要由用户接口、agentCORBA对象、agentCORBA支持环境以及Java虚拟机(JVM)组成。用户通过用户接口来与进行agentCORBA对象的创建与管理(如移动/收回、挂起/恢复运行),其重点在于采用先进的人机接口技术,充分满足用户个性化的需求。agentCORBA对象是基于用户请求而创建的、面向特定应用的、具有自主移动特性的CORBA对象,它在agentCORBA支持环境中执行来完成指定的任务。agentCORBA支持环境是agentCORBA体系结构的核心,它实现agentCORBA对象的移动、生命周期、命名等重要服务。这四个部分及其相互关系构成了agentCORBA系统的体系结构,如图1所示。

    

     图1 agentCORBA系统体系结构
  agentCORBA体系结构主要分为三层,有三个接口:最底层是JVM,它为agentCORBA对象及其支持环境的运行提供环境,并通过JDK API的形式为程序员提供基本编程接口;中间层是agentCORBA支持环境,它是整个agentCORBA系统的核心,并向上为agentCORBA应用程序提供编程接口;最高层是用户GUI。下面我们重点讨论agentCORBA支持环境。
agentCORBA支持环境主要有两部分组成:移动agent服务环境和ORB支持环境。移动Agent服务环境利用Agent传输协议ATP(Agent Transfer Protocol)实现agentCORBA对象在主机间的移动,并为其建立远程执行环境和各种服务接口。  agentCORBA可以通过ACL(Agent Communication Language)与其它移动agent和静态agent通信或访问移动agent服务环境所提供的服务。移动Agent管理与控制模块是移动Agent服务环境的中心部件,它将有关agentCORBA对象正常运行所需的各项服务正确分配给相应的模块,如:将有关agentCORBA对象执行环境的建立、启动的服务交给基本服务模块,将agentCORBA对象身份认证的服务交给安全控制模块,将agentCORBA对象要完成的特殊任务交给定制服务模块,将重新移动的任务交给ATP模块,将MA之间通信的任务交给ACL模块等,并协调各个模块的正常运行。该模块的另一个重要功能是实施agentCORBA对象的约束机制,并根据约束条件控制各个模块的运行。定制服务模块主要为agentCORBA对象提供领域相关的任务求解服务,它可以以组件的形式出现,以便充分利用第三方的产品。
  ORB支持环境主要实现CORBA规范要求的三种最基本的服务:对象生命周期服务、对象命名服务、以及对象事件服务,这些操作在ORB环境内进行。在对象初次启动时,需要找到ORB上的其它对象,这就是命名服务的功能。生命周期服务维持对象的生命期,如使用期限、消亡以及再定位,使用户可以创建对象,传送对象,以及撤消对象等。事件服务在匿名对象之间提供异步交互作用,当ORB上发生重要事情时用户将得到通知。
  整个agentCORBA支持环境需要进行安全性控制和资源访问控制。安全控制模块主要用于实现主机的安全性策略,如进行数字签名验证、对象代码的解密/解压缩等工作[5]。资源访问控制模块则控制agentCORBA对象对本地资源的访问,并进行付费检查等。
3. agentCORBA对象的代码组成及工作过程
  这里的客户端应用程序和服务器端应用程序都是agentCORBA对象,其代码组成及工作过程如图2所示。


          图2 agentCORBA对象的代码组成及工作过程
  图2给出了基于agentCORBA的客户端应用程序与服务器端应用程序及其交互过程。agentCORBA应用程序由两部分组成:agentCORBA代码(图中带斜线的部分)、与应用相关的代码(图中带网线的部分)。从功能上来讲,agentCORBA代码又可分为ORB相关代码和移动Agent服务环境相关代码。
  agentCORBA对象可以只包括ORB代码,这时的agentCORBA对象即是传统的CORBA对象;agentCORBA也可以只包括与移动agent相关的代码,这时的agentCORBA对象即是传统的移动agent对象。用户可根据应用需求决定使用哪类对象。由此可见,agentCORBA与CORBA对象及移动agent完全兼容。
  agentCORBA对象具有移动agent的特性,所以它可以移动到其他MA服务环境(或主机),也可以和本地的其他agent进行通信。
  agentCORBA是具有移动agent特性的CORBA对象,所以它使用ORB的命名服务。需要说明的是,为了确保在服务器方agentCORBA对象移动的情况下保证对象命名服务(Naming Service)的透明和持久性,即确保客户方agentCORBA对象仍能找到移动后的服务器对象,要求服务器方agentCORBA对象在移动前要从CORBA命名服务器中注销,在移动到新的主机后再注册。
4. 试验报告
  根据客户方和服务器方agentCORBA对象的性质、以及双方是否移动,共有以下几种情形:

    情形编号     客户方       服务器方         是否移动
     1        原CORBA对象     原CORBA对象           否
     2        MA CORBA对象    原CORBA对象           否
     3        原CORBA对象     MA CORBA对象          否
     4        MA CORBA对象    MA CORBA对象           否
     5        MA CORBA对象    原CORBA对象           是
     6        原CORBA对象     MA CORBA对象           是
     7        MA CORBA对象    MA CORBA对象           是(只有客户方移动)
     8        MA CORBA对象    MA CORBA对象           是(只有服务器方移动)
     9        MA CORBA对象    MA CORBA对象           是(客户和服务器方同时移动)
  以上9种情形完全通过测试,运行结果正确。下面我们重点给出情形9的用例设计和测试过程,因为情形9是其他情形的特例,情形9的测试成功同时也意味着其他情形的测试成功。情形9的测试环境及agentCORBA移动情况如图3所示。


        图3 agentCORBA测试环境
  整个测试在实验室的局域网中进行,参加测试的主机有4台:主机A、主机B、主机C和一台笔记本电脑,这4台主机具有同样的agentCORBA执行环境(请参见图1)。具体测试过程如下:
  第一步:首先在主机A上启动服务器端agentCORBA对象,然后在主机C上启动客户端agentCORBA对象,观察试验结果;
  第二步:移动客户端agentCORBA对象到笔记本电脑,保持服务器端agentCORBA对象不动,观察试验结果;
  第三步:移动服务器端agentCORBA对象到主机B,保持客户端agentCORBA对象仍然在笔记本电脑上不动,观察试验结果。
  为了观察服务器端agentCORBA对象的移动情况,我们这里将试验结果设计为:打印服务器端agentCORBA对象所在主机的主机名(或IP地址)以及移动agent服务环境的情形。
  测试结果:服务器端agentCORBA对象移动后,客户端agentCORBA对象仍然能找到正确的服务器端对象,即能正确打印出新服务器端agentCORBA对象所在主机的主机名(或IP地址)以及移动agent服务环境的情形。
  试验结论:所开发的agentCORBA原型系统能实现agentCORBA对象的移动,并能在服务器端agentCORBA对象移动的情况下保证对象命名服务的透明和持久性。
5. 结论
  本文在充分利用CORBA现有机制的基础上,重点对基于OMG MASIF规范的移动Agent系统的体系结构进行了研究,进而给出了基于移动agent的双向CORBA系统体系结构、agentCORBA对象的代码组成结构;并在CORBA的公共设施层实现了移动Agent与标准CORBA的无缝集成,最后对原型系统进行了试验测试。
  通过本文的研发,我们认为,进行基于移动Agent的双向CORBA设计和实现是完全可行的,符合科学性和实用性。该双向CORBA融合了移动Agent技术和CORBA技术的主要优点,并弥补了对方的不足之处。双向CORBA中的CORBA对象可以动态移动,并且这种移动不会损坏CORBA对象命名机制的透明性和持久性。双向CORBA结构对原有CORBA对象完全兼容。这种新型的体系结构具有很好的应用前景,尤其能在无线网络、移动计算,以及主动网络等领域发挥重要的作用。
  需要说明的是,该系统还只是一个原型系统,而且需要进一步实现ORB级的移动Agent模型。进行基于agentCORBA的主动网络(active network)研究,并侧重于工程的角度,即给出一个基于某特定领域的、体现主动网络思想的、完整的agentCORBA应用,也是本文下一步的工作。
  参 考 文 献
1. Object Management Group. The Common Object Request Broker: Architecture and Specification. See: http://www.omg.org/corba
2. N.R.Jennings, K.Sycara and M. Wooldridge. A Roadmap of Agent Research and Development. In Autonomous Agents and Multi-Agent Systems,1,275-306,1998.
3. Kozt and R.S.Gray. Mobile Agents and the Future of the Internet. ACM Operating Systems Review, 33(3), pp. 7-13, August 1999.
4. www.jumpingbeans.com
5. Yang K., Guo X., and Liu D. Y. Security in Mobile Agent Systems: Problems and Approaches. Journal of ACM Operating System Review, 2000, 34(1): 21-28, USA.