仆人和对象 - 关系

时间:2015-07-01 23:38:37

标签: corba ice

我读了很多关于ICE或Corba等技术中使用的仆人和对象的内容。有很多资源可供我阅读:

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

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

2 个答案:

答案 0 :(得分:2)

如果我没有记错的话,这个词是道格拉斯施密特在描述公共对象请求架构的论文中创造的。

以下是几个定义的直接引用:

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

对象 - 这是一个CORBA编程实体,由身份,接口和实现组成,称为服务方。

     

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

     

CORBA IDL存根和骨架 - CORBA IDL存根和骨架充当“胶水''分别在客户端和服务器应用程序之间以及ORB

     

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

CORBA

  

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

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

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

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

enter image description here

答案 1 :(得分:0)

多个对象的一个​​仆人就是一个银行,每个银行账户都是一个对象,但在这种情况下,你不希望每个银行账户都有一个仆人,所以你有一个仆人为所有银行账户。

多个服务程序处理的一个对象是负载平衡和容错等问题。客户并不知道它执行的是哪一个。