我阅读了很多关于 ICE 或 Corba 等技术中使用的服务对象和对象的内容。有很多资源可以让我阅读如下内容:
一个仆人可以处理多个对象(为了节省资源)。一个对象可以由多个仆人处理(为了可靠性)。
有人能告诉我这两个陈述的真实例子吗?
如果我没记错的话,这个术语是 Douglas Schmidt 在他描述公共对象请求架构的论文中创造的。
这是几个定义的直接引用:
对象——这是一个 CORBA 编程实体,由身份、接口和实现组成,称为仆人。
Servant——这是一个实现编程语言实体,它定义了支持 CORBA IDL 接口的操作。Servant 可以用多种语言编写,包括 C、C++、Java、Smalltalk 和 Ada。
CORBA IDL 存根和骨架——CORBA IDL 存根和骨架分别充当客户端和服务器应用程序与 ORB 之间的“粘合剂”
ORB接口——ORB 是一个逻辑实体,可以以各种方式实现(例如一个或多个进程或一组库)。为了将应用程序与实现细节分离,CORBA 规范为 ORB 定义了一个抽象接口。该接口提供各种辅助函数,例如将对象引用转换为字符串,反之亦然,以及为通过下面描述的动态调用接口发出的请求创建参数列表。
通用对象请求代理体系结构 (CORBA) 是由对象管理组 (OMG) 定义的标准,旨在促进部署在不同平台上的系统的通信。CORBA 支持不同操作系统、编程语言和计算硬件上的系统之间的协作
因此,有客户端、服务器、客户端和服务器代理以及 ORB 核心。客户端和服务器使用代理通过 ORB 核心进行通信,ORB 核心提供了一种将客户端请求透明地传送到目标对象实现的机制。从客户端的角度来看,这使得对远程对象的调用看起来像是在本地地址空间中,因此简化了分布式环境中客户端的设计。
鉴于上述所有内容,Servant 是一个实现,它是远程客户端调用的调用目标,并且正在抽象作为实际目标的远程对象。
至于你的问题,一个servant可以处理对Servant封装的多个分布式对象的调用。请注意,客户端不直接访问这些对象,而是通过 Servant 访问。

多个对象的一个仆人例如是一家银行,每个银行帐户都是一个对象,但在这种情况下,您不希望每个银行帐户在内存中都有一个仆人,因此您为所有银行帐户拥有一个仆人。
由多个仆人处理的一个对象用于诸如负载平衡和容错之类的事情。客户端不知道它具体是在哪一个上执行的。
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |