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