冯 锋,徐 琪
FENG Feng1,2, XU Qi1
(1. 东华大学 旭日管理学院,上海 200051;2. 宁夏大学 数学计算机学院,银川 750021)
随着社会信息化进程的加快和各种无线接入技术的迅速发展,移动网络得到突飞猛进的发展。同时,利用移动网络开展电子商务业务正在萌芽。电子商务的本质在于降低信息成本,其中包括销售成本、采购成本等方面,它对传统经济的冲击,在于改变和缩短了传统的产业链,重塑了其交易规则和程序。电子商务只有建立在信息的获取和发布都能够及时、准确和全面的基础上,才能得到广泛地应用。但是目前的移动网络带宽小,延迟大,网络丢包现象严重[1]。如何在恶劣的网络环境中实时、准确地开展业务,是一个亟待解决的关键问题。
本文在阐述协作信息系统的基础上,给出了基于移动Agent的协作信息中间件的设计与实现,然后利用它开发掌上电脑等移动终端上的高效、轻型移动商务系统µMCommerce,并实现系统仿真和测试。
协作信息技术的研究可以追溯到分布式数据库技术、计算机协同工作等技术的研究。协作信息技术的核心目标是研究如何利用现有通信/计算机技术所提供的巨大潜力,将地理上分布的、在各个独自领域内工作的各个信息系统有机地结合起来,进而提供更为全面、准确和及时的信息服务。协作信息系统既要代表着下一代信息管理系统的发展方向,同时也要为人们目前面临的信息爆炸所带来的负面影响提供根本的解决途径。
对协作计算的大量深入分析的结果表明,尽管面对的领域不同,解决的问题迥异,但是却存在许多共同的设计要素,这些要素是设计任何一个支持协作系统都必须解决的问题,归纳如下:
1)互操作性。异质环境下的计算实体进行集成的问题;
2)协作性。参加协作的各方如何共享信息和交换信息;各协作方并行工作时如何保证系统的性能;
3)安全性。如何保证信息交换的安全性;
4)变化管理。能够实时地进行变化检测;
5)信息服务。数据挖掘、信息代理、知识共享。
进一步对这些问题进行归纳,使我们认识到这些问题的本质是“如何安全有效地在各异质协作方之间共享信息”的问题。这一结论促使我们对协作信息共享技术进行了深入研究。研究表明,将这一协同计算中必不可少的设计要素提取出来,用中间件的方式加以实现,既有理论指导意义,又有方便实践的价值。我们将这种中间件称为面向协作信息系统的中间件,采用中间件的方式实现,具有一系列的优越性:
1)可以大大简化上层协作支持系统的设计难度,使设计者得以将精力集中于所要进行的协作工作本身;
2)便于实现系统的扩展和结构的动态变化,使将来可以动态地增加、扩展服务,而不必重新修改整个系统;
3)系统具有更大的灵活性,异质系统之间的协作变得较为容易;
4)易于开发,即允许开发者在企业范围内定位、访问、操纵和移动数据,免除花大力气去关注甚至研究企业信息系统和网络本身,缩短了二次开发周期,同时可以很方便地开发新的应用。
在开放式移动网络环境中进行分布式信息系统设计,有关各方如何共享彼此的信息是一个非常重要的问题。在设计这样的信息系统时,由于要考虑不同信息源的集成、安全性、网络带宽、信息的组织(数据库的设计)的要求,同时系统还必须有效地适应各信息源的动态变化,使得设计工作极具挑战性。面对这样的应用要求,传统的Client/Server计算模式难以胜任,而移动Agent中间件才是解决这一挑战性难题的有效途径,也代表着目前技术的发展趋势[2]。
Agent的研究起源于人工智能领域。Agent是指模拟人类行为和关系、具有一定智能并能够自主运行和提供相应服务的程序。与现在流行的软件实体(如对象、构件)相比较,Agent的粒度更大,智能化程度更高。随着网络技术的发展,可以让Agent在网络中移动并执行,完成某些功能,这就是移动Agent的思想。移动Agent技术通过将服务请求Agent动态地移到服务器端执行,使得此Agent较少依赖网络传输这一中间环节而直接面对要访问的服务器资源,从而避免了大量数据的网络传送,降低了系统对网络带宽的依赖。移动Agent不需要统一的调度,由用户创建的Agent可以异步地在不同节点上运行,待任务完成后再将结果传送给用户。为了完成某项任务,用户可以创建多个Agent,同时在一个或若干个节点上运行,形成并行求解的能力。此外它还具有自治性和智能路由等特性[3]。
移动Agent技术突破了传统的分布计算模式的制约,对处于复杂网络环境下的大规模的协作信息系统建设具有重要的意义,所以我们在中间件设计中引入了移动Agent的思想和相关技术。各Agent代表着参加交互的各方,同时通过Agent之间的协商,开放移动网络系统环境中各异质实体间差异被屏蔽,且具有语意上的一致性。通过各Agent之间的协作,可以将分布的信息资源融合为一个有机的整体,从而为信息集成提供有效解决办法,而且移动Agent具有高性能,比较适合移动网络环境。
2.1.1 Agent实体
一个Agent实体实际上是一个可移动Java对象。在到达一个网络主机后,它自主地启动线程执行任务,并且能够对接收到的消息作出快速反应。
2.1.2 Agent代理(Proxy)
Agent代理是Agent实体的代表,它相当于Agent实体的外壳,避免了外界直接访问Agent实体。同时,它可以为Agent实体提供位置透明性。
2.1.3 移动Agent上下文环境(Context)
移动Agent上下文环境就是Agent实体的工作场所,它是一个静止的对象,提供对于运行于其中的Agent的管理,同时提供安全性保护。一台主机可以同时运行多个服务器程序,每一个服务器程序又可以容纳多个Context。每个Context都有自己的名字,可以通过其所在主机的地址和它的名字确定其所在位置。
2.1.4 Agent消息(Message)
Agent消息是用于在Agent之间进行交互的一种对象。它可以按同步或异步两种方式传递。通过消息,Agent之间可以相互合作和交换信息。
2.1.5 Agent标记符(Identifier)
每一个Agent都有一个标记符与之绑定,它负责在整个Agent实体的生命周期中全局唯一地标志该Agent。
以上元素,在移动Agent中间件系统中都以Java类或接口的形式存在。
以下是移动Agent中间件系统的基本操作,即用于对Agent的生命周期进行管理的最小功能集。
2.2.1 Agent创建(Creation)
在移动Agent上下文环境中创建Agent实体,这个新建的Agent实体将被分配到一个Agent标记符,在完成初始化工作后便开始运行。
2.2.2 派遣(Dispatching)
负责把Agent实体从当前移动Agent上下文环境中移出,送入到目的上下文环境中的过程。Agent实体将在新的上下文环境中重新运行。
2.2.3 销毁(Disposal)
销毁将会终止一个Agent实体运行,并从当前移动Agent上下文环境中移除。
该中间件系统的核心为实时推模块,当然为了保证系统完整性,还有状态模块、用户管理、系统维护和系统帮助等模块。
如图1所示,服务方初始化Agent执行环境后,创建服务Agent并且侦听客户请求,将接收到的客户请求内容规范化为Agent所能理解的Agent通信语言,然后把货物信息数据实时推送给客户;如果任务完成,服务方就地销毁Agent,释放其资源。
图1 中间件实时推算法流程
在系统的具体实现中,为了满足平台无关性、安全性、面向对象特性和多线程特性,可采用纯Java技术:采用Java的JDBC数据库技术,来完成对不同数据源的透明、高效操作;采用基于Java的移动Agent技术来实现有关Agent的移动性要求;Agent之间的通信,采用与KQML(Knowledge Query and Manipulation Language)语言兼容的语意表达形式[4]。
轻型移动商务系统µMCommerce建立在上述中间件基础上,它由供应子系统、购货需求子系统、移动Agent中间件子系统(也称移动代理中间件子系统)和系统配置子系统有机构成,它们的关系如图2所示。
图2 轻型移动商务系统µMCommerce系统结构
移动用户利用该子系统登记货物信息。该子系统在PocketPC/手机上提供客户端界面,让用户输入用户名以及用户密码,并传送到服务端。服务端的安全Servlet对用户名和密码进行验证。如果通过验证,客户端就进入货物供应界面;反之则返回验证失败信息,用户仍停留在用户验证界面上。当客户端进入货物供应界面以后,就可以通过后台的货物供应Servlet进行货物供应的操作,操作结束的数据又通过互操作中间件模块把数据传递到数据库服务器,由数据库服务器进行后台数据处理,由此完成货物供应子系统的整个数据流程。
实现货物供应子系统时,采用了SUN J2ME技术来设计界面和进行网络传输,为了保证高安全性,采用了轻型高效安全产品——Bouncycastle的Lcrypto。
该子系统及相应的移动代理中间件子系统,负责接收和运行服务器派遣来的移动代理程序,实时地收集供应的货物信息。货物需求子系统的数据流程与货物供应子系统的数据流程对称,当发现有符合要求的新的供应货物后,服务端将通过移动代理立即将货物信息返回给客户端。
实现货物需求子系统时,采用了联想5100(Strong ARM芯片,WinCE操作系统),PJava;为了实现数据实时保存,采用了PJava里Java.Io.File函数。
该子系统负责移动代理系统环境和移动代理程序的管理,它是整个系统的神经网络,是移动环境下的通信逻辑载体。通过它,服务器利用实时推算法推送数据给PocketPC显示;同时它还具有一定的消息机制,即使PocketPC关机,数据也不会丢失,一旦PocketPC重新开机,会立即收到消息系统保存的数据。
移动代理中间件子系统含有三种Agent环境:移动Agent环境Grasshopper、移动Agent环境SMI和智能Agent环境JADE。同时含有移动Agent互操作中间件[5]、移动Agent和智能Agent互操作中间件。以让SMI产生的移动Agent可以移动到Grasshopper环境,然后再以FIPA消息发送给JADE,由JADE完成数据库的写入。
系统配置子系统负责对系统有关参数进行配置,系统管理员在PocketPC/手机上的系统设置界面里进行参数设置,然后通过智能Agent模块传输到服务器,并由服务器将配制参数写入数据库。
实现系统配置子系统时,采用了小型智能Agent平台——LEAP,配置请求信息以FIPA规范的原语格式在PocketPC/手机与服务器之间传递。
表1 货物需求子系统增量测试结果
与现有系统的对接涉及到不同操作系统平台及数据库系统的互连,测试表明该系统可以方便、有效地从现有系统中提取所需信息,且不会增加原系统的负荷。各子系统安装、配置及其运行简便易行。既可在事中安装,又可事后安装。
为对系统进行全面测试,采用了以下三种测试方法。
主要对系统所提供的各种功能分别进行测试,结果基本达到了设计目标,系统安全性也通过了测试。
为了测试移动中间件性能,测试了货物需求子系统在20条记录、40条记录和80条记录下返回所有货物信息平均所需时间,如表1所示。
测试网络含电信拨号环境、二代半移动网络GPRS和第二代移动网络GSM。具体分别为:普通的有线拨号(利用掌上电脑上的Modem卡连电话线,最大理论带宽为56kbps),GPRS移动分组接入(利用掌上电脑上的GRPS模块,无线连接移动梦网,最大理论带宽为13.4kbps)和GSM接入(利用掌上电脑红外端口配合外置红外手机,以无线方式拨入移动网,最大理论带宽为9.6kbps)。由表1得知,随着带宽的减小,移动中间件逐渐显示出其高性能。
图3 系统性能比较图
如图3所示,实验结果表明,基于移动Agent中间件的商务系统有着比普通网络计算结构高效的性能,而且随着网络带宽的恶化,系统基本性能无明显变化,而普通网络计算结构则有大幅下降。同时也看到,随着记录数的动态增加,系统并发机制发挥了良好的性能,具有良好的可动态扩展能力;而普通网络计算结构随着记录数的增加,其计算时间会成指数级增长。
主要目的是测试在网络环境中,多个用户同时对系统不同服务进行访问时,系统能否有效提供服务。实验结果表明即使在低带宽情况下,系统仍稳定可靠。
移动Agent不同于基于过程的RPC(如OSF/DCE中的),也不同于面向对象的对象引用(如OMG/CORBA,OLE/DCOM和Java/RMI中的),其独特的对象传递思想和卓越的特性给开放系统带来了巨大的革新。目前国内技术界大多从人工智能的角度来研究Agent,所以很难实用化;本文从分布处理的角度对其作深入研究,为移动Agent的实用化作出了一些有益的探索。一个基于移动Agent的高效、轻型移动实时商务系统的实践,对移动Agent实用化有着重要的理论和现实意义。
[1]冯锋,徐琪.基于神经网络模式的遗传算法在CRM的数据挖掘优化研究[J].黑龙江大学自然科学学报,2010,27(6):796-799.
[2]Danny B Larlge,Mitsum Oshima.Seven Good Reasons for Mobile Agents.Communication Of the ACM,2006,42(3):88-89.
[3]Feng Feng,Hou ShengYu,Xu Qi.The Research of the Zig-Bee and RFID Fusion Technology in the Coal Mine Safety[C],2010 IEEE 3th International Conference on Information Management,Innovation Managemet and Industrial Engineering.2010 IEEE,32-36.
[4]Y Labrou,T Fmin.Y.Peng.Agent Communication Language:The Current Landscape.IEEE Intelligent Systems,1999,(3,4):45-52.
[5]张云勇,刘锦德,郭维娜.基于ACL的移动Agent/智能Agent互操作插件[J].电子科技大学学报,2007,30(4):407-413.