仆人和对象 - 关系

Mat*_*eoX 5 corba ice

我阅读了很多关于 ICE 或 Corba 等技术中使用的服务对象和对象的内容。有很多资源可以让我阅读如下内容:

一个仆人可以处理多个对象(为了节省资源)。一个对象可以由多个仆人处理(为了可靠性)。

有人能告诉我这两个陈述的真实例子吗?

Joh*_*ohn 5

如果我没记错的话,这个术语是 Douglas Schmidt 在他描述公共对象请求架构的论文中创造的。

这是几个定义的直接引用:

  • 注意:为清楚起见,请参见下图

对象——这是一个 CORBA 编程实体,由身份、接口和实现组成,称为仆人。

Servant——这是一个实现编程语言实体,它定义了支持 CORBA IDL 接口的操作。Servant 可以用多种语言编写,包括 C、C++、Java、Smalltalk 和 Ada。

CORBA IDL 存根和骨架——CORBA IDL 存根和骨架分别充当客户端和服务器应用程序与 ORB 之间的“粘合剂”

ORB接口——ORB 是一个逻辑实体,可以以各种方式实现(例如一个或多个进程或一组库)。为了将应用程序与实现细节分离,CORBA 规范为 ORB 定义了一个抽象接口。该接口提供各种辅助函数,例如将对象引用转换为字符串,反之亦然,以及为通过下面描述的动态调用接口发出的请求创建参数列表。

CORBA

通用对象请求代理体系结构 (CORBA) 是由对象管理组 (OMG) 定义的标准,旨在促进部署在不同平台上的系统的通信。CORBA 支持不同操作系统、编程语言和计算硬件上的系统之间的协作

因此,有客户端、服务器、客户端和服务器代理以及 ORB 核心。客户端和服务器使用代理通过 ORB 核心进行通信,ORB 核心提供了一种将客户端请求透明地传送到目标对象实现的机制。从客户端的角度来看,这使得对远程对象的调用看起来像是在本地地址空间中,因此简化了分布式环境中客户端的设计。

鉴于上述所有内容,Servant 是一个实现,它是远程客户端调用的调用目标,并且正在抽象作为实际目标的远程对象。

至于你的问题,一个servant可以处理对Servant封装的多个分布式对象的调用。请注意,客户端不直接访问这些对象,而是通过 Servant 访问。

在此处输入图片说明


Joh*_*sen 1

多个对象的一个​​仆人例如是一家银行,每个银行帐户都是一个对象,但在这种情况下,您不希望每个银行帐户在内存中都有一个仆人,因此您为所有银行帐户拥有一个仆人。

由多个仆人处理的一个对象用于诸如负载平衡和容错之类的事情。客户端不知道它具体是在哪一个上执行的。