双向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所示。
情形编号 客户方 服务器方
是否移动
|