【问题标题】:Servant and objects - relation仆人和对象 - 关系
【发布时间】:2015-09-19 07:45:07
【问题描述】:

我阅读了很多关于 ICE 或 Corba 等技术中使用的仆人和对象的文章。有很多资源可以让我读到这样的内容:

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

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

【问题讨论】:

    标签: corba ice


    【解决方案1】:

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

    这里直接引用几个定义:

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

    Object -- 这是一个 CORBA 编程实体,由身份、接口和实现组成,称为 Servant。

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

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

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

    CORBA

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多