关于Broker、Agent和Proxy
转自http://blog.chinaunix.net/u/11315/showart_443217.html
作者写错单词了,应该是broker :)
对Borker、Agent和Proxy解释 史美林的《计算机支持的协同工作理论与应用》上面对Borker、Agent和Proxy解释,如下:为了改善Internet的体系结构,可以综合使用Borker、Agent和Proxy等多种代理。 Agent是一种具有控制功能的实体,它接收信息,然后根据自己的知识、规则和控制逻辑对信息进行处理,然后把信息转发出去。Agent通常以要素的身份存在,是为一个整体服务的,在信息流程中,Agent充当一个中间处理部件,它接收操作指令,并依据自己的知识,规则,和控制逻辑指定操作步骤,完成要求的功能,然后对等输出,这是Agent的第一个作用。Agent具有很强的表达能力,这意味着Agent 之间可以通过ACL通信,例如交换数据,逻辑信息和指令,这是Agent的一个显著的特点。Agent 与面向对象中的对象这一个概念非常的相似:Agent的内部数据结构和算法也是对外隐蔽的,它通过基于消息的接口与外界通信,Agent与对象二者的差别主要体现在接口语言上,在面相对象的程序设计中,对象之间通信时,不同的对象对同一消息的理解可以不同;在Agent方式中,Agent之间通信时使用公共的语言,其语义独立于具体的Agent,所以Agent的第二个作用是充电中间处理部件,它代表一个具有特定接口的实体,对外提供公共接口,这是解决资源异构的关键所在。
Agent具有公共性(commonality,Agent通信语言独立与Agent),真实性(veracity,Agent必须真实而坦诚的公布自己的功能),自治性(autonomy,一个Agent 不能强迫另一个Agent执行某项任务,除非后者公布自己具有该功能)和强制性(commitment,如果Agent公布了自己的某项服务,那么当它收到执行该服务的请求时,必须接收请求并执行该服务)。Agent的公共性使它非常适合解决资源异构的问题,从它的后三个特性可以看出,Agent非常适用于动态、可伸缩的环境。
Broker可以方便的提供Agent之间的互见性(awareness)。我们知道,Internet 是一个动态、可收缩的环境,这意味着实体的代表者--Agent,应该能够动态的增加和减少。Borker为Agent提供了注册的场所,这就提供了最基本的可见性:Agent 之间能够意识到对方的存在,更进一步,在协同应用环境中, 每个实体的动作应该对其他的实体产生影响。这意味着两个Agent在真正能够交互前,必须进行必要的协商,通信时还
要随时进行协同控制。当Agent比较多时,每个Agent 都必须包含与其他所有代理进行协商和协同控制的代码,不仅开销大,而且实现比较复杂。因此,可以通过Borker 进行集中的协同控制,提供更高级的互见性。
浏览器和HTTP Server之间通过标准的HTTP协议进行通信,而HTTP协议功能有限,因此,在浏览器和HTTP服务器之间引入了Proxy。Proxy充当HTTP服务器和HTTP客户两种角色。我们在Porxy和HTTP服务器之间扩展HTTP协议,增强客户方与服务器的通信功能,这对浏览器是透明的。