标题：移动Agent
移动Agent
是一种特殊的Agent，它除了具有Agent的基本属性以外，移动性是其最重要的特点，它可以从一台机器通过网络移动到另外一台机器运行，并根据需要克隆或生成子Agent，子Agent具有同父Agent相同的性质.移动Agent主要特点有：
⑴移动性能：移动Agent可以在异构网络和分布式计算机环境中自主、自动地迁移，携带信息或寻找适当的信息资源，进行就地的信息处理，代理用户完成信息传递、网页查询、数据和知识发现、信息变换等多种任务.
⑵异构和异步性能：移动Agent可以支持异构计算机软件、硬件环境，能进行异步通讯和计算.
⑶降低网络通讯费用：传送大量的原始信息不但费时还容易阻塞网络，如果将Agent移动到信息存储的地方，进行局部搜索和选择后，将选中的信息通过网络传送给用户，会大大减少远程计算机网络的连接费用.
⑷分布和并行性：移动Agent提供了一个独特的分布计算体系结构，为完成某项任务，用户可以创建多个Agent，将它们同时在相同或不同的节点上运行，可将单一节点的负荷分散到网络的多个节点上，使小系统具有处理大规模、复杂问题的能力.
⑸智能化路由：移动Agent具有根据目标、网络通讯能力和服务器负载等因素，动态地规划下一步操作的能力.智能化路由能很好地优化网络和计算资源，实现负载均衡，提高问题的求解速度，避免对资源的盲目访问.
移动Agent引擎
移动Agent引擎也称为Agent语言解释器,Agent在解释器的支持下工作，在用户计算机上的引擎可以容纳多个地点的Agent，在服务器上的引擎可以容纳几千个地点和Agent.引擎可以通过以下三个应用程序接口(APIs）来利用其主机的资源，它们分别是存储API、运送API和外部API.存储API使引擎访问固定内存，固定内存确保计算机发生故障时仍能保存地点和Agent；运送API使引擎访问通信媒体，通信媒体是引擎运送Agent到其它引擎所必需的；外部应用API使得用移动Agent语言编写的部分应用程序能与其它程序连接起来.
移动Agent通信协议
移动Agent之间进行合作的基础是交互，而通信是实现交互的一种重要的方式和手段，移动Agent的协议组是使两个引擎间能经常相互通信，引擎间通信的目的是为了运送Agent，涉及Agent通信语言(ACL:AgentCommunicationLanguage）、通信机制、本体论等多方面的内容.移动Agent之间通信的消息必须具有良好定义的语法和语义，提供某些机制确保Agent之间安全、可靠地进行通信，支持同步或异步、一对一、一对多或广播通信.
Agent在移动Agent系统的移动过程中，运行状态的保存和恢复是至关重要的，它使得移动Agent系统能够高效、合理地利用网络范围内的系统资源，从而保证整个系统高效迅捷地运行，使得系统的计算吞吐量大幅度提高.也就是说，Agent的移动是资源驱动的，它要保证Agent时刻享有最有效的资源，从而保证这个任务的高效，而运行状态的保存与恢复是这种要求的前提，因为Agent的最终执行结果是在一系列移动节点上运行的中间结果的积累，如果每一次移动都从头开始，不仅造成网络和系统资源的浪费，而且使得整个作业效率大幅下降.尤其对于计算密集作业来说，如果Agent系统不具有运行状态的保存和恢复功能的话，整个移动Agent系统的优越性将无从谈起.
移动Agent执行环境
流行的分布式计算技术都基于Client/Server模式，通过远程过程调用或消息传递等方式进行远程通信，比较适合稳定的网络环境应用场合。随着新型网络应用（如移动计算）的出现，Client/Server模式的缺点日益明显，远远不能适应当今快速多变的网络应用发展，移动Agent技术集智能Agent、分布式计算、通信技术于一体，提供了一个强大的、统一的和开放的计算模式,更适合于提供复杂的网络服务（如复杂的Internet信息搜索、Internet智能信息管理等）。
移动Agent是具有移动特性（Mobility）的智能Agent，它可以自主地在网络上从一台主机移动到另一台主机，并代表用户完成指定的任务，如检索、过滤和收集信息，甚至可以代表用户进行商业活动。
MA技术是分布式技术与Agent技术相结合的产物，它除了具有智能Agent的最基本特性——反应性、自治性、导向目标性和针对环境性外，还具有移动性[1]。
具体特性表现在如下几个方面：
⑴节约网络带宽、克服网络延迟。移动Agent的本质是将计算移动到数据端，直接在数据端进行本地处理，只返回最终结果，从而避免了大量中间数据在通信两端的传输。移动Agent一次可以携带多个服务请求移动到服务器端进行本地调用，避免了多次远程调用，从而节省了每次远程调用的网络延迟。因此在处理的数据量大、通信两端交互频繁、带宽不足的情况下，使用移动Agent技术可以有效地节省网络负载。
⑵支持实时远程交互。在一些远程控制系统中，如工业控制、海底探测器控制、外太空探测器控制、有毒环境中的监控，实时性非常重要，但是网络的延迟使远程实时控制变得不太可能。将移动Agent发送到远端系统，代替人在远端完成各种控制活动，可以从根本上解决网络延迟问题。
⑶封装网络协议。任何网络程序都是建立在特定的协议之上的，网络程序的开发要求程序设计者深刻地理解低层的网络协议；随着Internet的发展，新的协议和数据格式不断地产生，随着网络协议的升级，
程序需要重新编写、编译，这些都给网络应用的开发和维护带来困难。移动Agent系统是一种中间件，位于操作系统和应用程序之间，封装了低层网络协议，提供移动、通信、容错和安全等基本功能，开发人员无须了解低层实现即可开发网络应用。当网络协议升级时，只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。
系统是一种中间件，位于操作系统和应用程序之间，封装了低层网络协议,提供移动、通信、容错和安全等基本功能，开发人员无须了解低层实现即可开发网络应用。当网络协议升级时，只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。
⑷支持异步自主执行。传统分布式系统中异步通信机制（如异步消息队列）可以异步地处理多个请求，但要求提出请求的客户端必须始终在线等待并响应请求的回答，这对移动客户而言是不可行的。使用移动Agent技术，用户可以将整个任务而不是单个请求提交给多个Agent去执行，这些Agent被发送到网上之后，可以独立于发送它们的程序，异步地、自主地、协作地完成任务，它们的生命周期可以长于创建它们的程序。
⑸支持离线计算（断连操作）。由于带宽是一种昂贵的资源，要求移动设备（笔记本电脑、PDA、手机等）始终保持网络连接在经济上是不可行的；无线通信的特性要求系统具有离线计算的能力，移动设备连接在技术上也是不可行的。移动Agent技术可以解决这个问题。用户派出Agent之后，可以断开网络连接，Agent在网络上自主地运行，当Agent完成任务之后，通过转接机制（Docking）监视用户是否在线，当它发现用户在线时，就返回计算结果。
⑹支持平台无关性。移动Agent的运行只和其运行环境有关，和具体的网络结构、网络协议、计算机设备、操作系统无关，只要网络节点上装有移动Agent运行环境，移动Agent就可以实现跨平台的移动和运行。如果所有的移动Agent系统都遵循移动Agent系统的互操作标准，就可以实现MA在任意移动Agent系统中的移动、交互和通信，真正实现平台的无关性，即所谓的“编译一次，到处移动”。
⑺具有动态适应性。移动Agent和其运行环境进行交互，感知环境的变化，并自主地、快速地作出反应，使整个系统始终保持在最优状态。
⑻提供个性化服务。来自不同的民族和地区，有着不同的文化背景，他们对信息的需求和使用方式有着很大的差异，这就要求Internet进行个性化服务。使用移动Agent技术，用户可以根据服务器端提供的低层操作函数,编写满足自己特定需要的Agent，然后发送到服务器端运行，利用服务器端的数据资源或计算资源为不同的用户服务，有效地增加服务器功能的伸缩性。
⑼增强应用的强壮性和容错能力。移动Agent支持离线计算，其反应性使之能及时地感知网络节点的失效，其自主性可以使它自主地处理并修正错误，更容易建立容错能力强的分布式系统。例如，在一个网络节点失效之前，在其上工作的移动Agent可以立即感知，并完成相应的备份工作，然后移动到其他节点，继续原来的工作。
移动Agent系统的组成不同的移动Agent系统的体系结构各不相同，但几乎所有的移动Agent系统都包括如下两部分：Agent和MA环境（MAE或称MA服务器、MA主机（MAH）、MA服务设施、Place、Context、Location）。MA环境为Agent提供安全、正确的运行环境，实现MA的移动、MA执行状态的建立、MA的启动、实施MA的约束机制、容错策略、安全控制和通信机制，并提供基本服务模块，如事件服务（EventService）、黄页服务（YellowPageService）、事物服务（TransactionService）和域名服务(DNS）等。1台主机上可以有1个或多个MAE。通常情况下，1个MAE只位于1台主机上，但当主机之间是以高速、持续、稳定可靠的网络连接时，1个MAE可以跨越多台主机而不影响整个系统的运行效率。Agent可以分为移动Agent和服务Agent。移动Agent可以从1个MAE移动到另1个MAE，在MAE中执行，并通过Agent通信语言（ACL）与其他MA通信或访问MAE提供的服务。移动Agent的主要作用是完成用户指定的任务，需要实现移动语义（即目标主机或路由的选择）、安全控制（保护自身）、与外界（MA服务环境以及其他Agent）的通信等功能。服务Agent不具有移动的能力，其主要功能是向本地的Agent或来访的Agent提供服务。通常，1个MAE上驻有多个服务Agent，分别提供不同的服务，如文件服务、黄叶服务等系统级服务，定票服务、数据库服务等应用级服务。由于系统Agent是不移动的，并且只能由它所在MAE的管理员启动和管理，因此保证服务Agent不会是“恶意的”。来访的移动Agent不能直接访问系统资源，只能通过服务Agent提供的接口访问“受控制的（Controlled）”、“安全的（Secure）”的服务，这可以避免恶意的Agent对主机的攻击，是移动Agent系统经常采用的安全策略。另外,采用Java提供的C语言接口，服务Agent可以提供和其他软件LegacySoftware）的交互接口，很容易将非Agent系统集成到Agent系统中。