【摘】broker/agent/proxy/delegate的区别

Broker:中介式代理

Broker 是一种中介式代理。在网络与分布计算中, 两个层次上的对等实体, 若不便彼此直接交往, 则可通过Broker实现通信。这些可以有各种各样的定义和实现, 也表现在不同的层次上。简单一点, Broker提供了分布式服务和资源的透明访问,屏蔽了异构组件之间的差异。

分布式异构平台之间, 为了实现互操作性, 采用中间件乃是最常用的方法. 例如,在不同类型操作系统之间, 不同厂商数据库之间, 不同应用系统之间, 均可用各种中间件解决。中间件就是一种中介式代理.

Agent:自主式代理

Agent是分布智能的基础单元。它具有一定程度的独立行为能力与智能,同时又遵从分布系统中某种统一的标准。在分布式环境中,Agent 可以和客户端不在一台主机上。

Agent代表着主体服务,但主体服务对Agent并不是完全控制,Agent实现了一定的算法, 具有解决某种问题的能力, 甚至包含通常意义下的“人工智能”, 如推理机、模糊运算、神经网络、知识库等能力。Agent在其生命周期内具有各种可能的特征变化,一般采用状态机模型,其通信能力是一切互操作性的基础。

动态代理(dynamical-agent) 架构就是一种典型的应用。它支持自身行为的动态修正, 并不限于具有预定的固定功能, 而可根据应用动态地加载和修改其动作, 以适应环境与要求变化, 跨越不同应用而扮演不同的角色。

在互联网协议栈的应用中, SNMP Agent就是一种自主式代理,具体实现包括了三大部分:控制模块、通讯模块和MIB信息库。

Proxy:透传式代理

Proxy是一种透传式代理,是为了能有效地访问远程服务或其他代理。这里的“远程”并非一定是地域上的远近, 而是涉及网络拓扑或计算复杂度上的成本。

互联网上的代理服务器技术, 便是这类代理的应用, 它可以穿越或绕开网络封锁(如防火墙) , 达到目标主机。

在Java 中动静态代理中的proxy 命名,有混淆概念的嫌疑,JavaScript中的Proxy对象,也是如此。

Delegate:委托式代理

Delegate 是委托性或者指派式代理,一般地,管理进程指派给代理方,并在代理方执行管理操作,而不涉及管理方。

Delegate 不具备自主移动的能力,需要借助外力,通过指派协议从一个地址空间移动到另一个地址空间。只要需要Delegate 执行任务,它就一直处于执行状态。它可以完成计算性能参数和统计数据、配置网络、修改参数、更新应用等任务。

在JQuery 中就有Delegate()方法,更广泛为人所知的就是Obj-C中的委托式代理了。iOS开发中的Delegate用于页面传值,也常用Delegate来传递消息和值,以及UITableView的Delegate等。

然而,现实是复杂的,这四种代理机制竟然可以混合组装使用,例如proxy-agent 等等。

0%