基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(三)

原创 2003年07月02日 23:11:00

 

2.3.1 ORB结构

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2-4 通过ORB传递请求

2-4显示了一个client向对象实现发送一个请求。Client是一个想对对象进行操作的一个实体,对象实体是实现对象的代码和数据。ORB负责根据一个请求来定位一个对象,安排对象实现准备接受请求,与请求的数据通讯。Client的接口与对象的位置完全,实现对象的语言及其它不在对象接口反映出来的方面等无关。

2-5显示了单个ORB的结构。用斜条文的矩形框表示ORB的接口, 箭头表示调用ORBORB使用接口把信息向上传递。

2-5 ORB接口结构

Clinet使用Dynamic Invocation interface (与目标对象的接口无关)OMG IDL stub (与目标对象接口有关的stub)来发出请求。由于某种原因,Client也可以直接与ORB联系。对象实现使用OMG IDL生成的skeleton或动态 skeleton以向上传送(up-call)的方式接受请求。对象实现也可以调用Object AdapterORB。可以用两种方式来定义对象接口:一是用OMG Interface Definition Language (OMG IDL)来定义接口。该语言根据可能对对象进行的操作和这些操作使用的参数来定义对象类型。第二种方法是,把接口(interface)放入Interface Repository service; 该服务把接口中的元素描述成一个对象。任何能实现ORB的软件中,Interface Definition Language (可能根据文档的内容而改变)Interface Repository具有相同的作用。一个client要使用Object Reference完成请求,它必须知道对象的类型的及具体的操作。Client初始化请求有两种方法,一是通过调用目标对象的stub routines,二是动态的创造请求(如图2-6所示)。

2-6 Client使用Stub Dynamic Invocation Interface

不论使用Stub还是Dynamic Invocation Interface来发出请求具有相同的语义,信息的接收者不能分辨出该请求是使用哪种方法来传递的。ORB确定适当的实现代码,传递参数,通过IDL skeletondynamic skeleton (如图Figure 2-7 所示)把控制传给Object Implementation。每一个接口和object adapter 使用不同的Skeletons。为了完成请求,object implementation 可能通过Object Adapter 使用来自ORB的服务。当完成请求后,控制和输出结果返回给client

2-7 Object Implementation 接受请求

Object Implementation选择使用何种Object Adapter。它是根据Object Implementation 需要服务的种类来确定的。图2-7 显示了clientsobject implementations如何使用接口和实现信息。用OMG IDLInterface Repository来定义接口;该定义用于产生client Stubsobject implementation Skeletons

2-8 Interface Implementation Repositories

在安装时把object implementation 信息放入Implementation Repository中,以备请求使用。

2.3.2 ORB结构中的主要构件

2-9 CORBA ORB结构

Object Implementation(对象实现): 它定义了实现一个CORBA IDL接口的操作。它可以用各种语言来写,如C, C++, Java, SmalltalkAda

2-10 典型的Object Implementation 结构

Client(客户): 这是一个程序实体,它调用了某一个对象实现中操作。对调用这来讲,访问远程对象server应该是透明的。它应该和调用对象中的方法一样简单,如,obj->op(args)

Client只能根据对象的接口了解对象的逻辑结构,虽然,我们一般都把client看作是一个程序或一个进程,但是,知道一个client都是某一个对象有关的。例如,一个对象的实现可能是其他对象的client

2-11 典型的Client结构

Client通过语言映射(language mapping)来使用对象和ORB 接口。当这种映射关系改变时,不需要改变ClientClient不需要了解对象的实现方式,对象适配器及ORB

Object Request Broker(ORB):

ORB提供了一种机制,能实现client请求与目标对象实现之间的透明通信。它使得client请求就象一个本地过程调用一样。当一个client引用一个操作,ORB负责找到对象实现,如果需要则透明的激活它,然后把该请求递交给该对象,最后返回应答给调用者。实现时,可以把ORB不作为单个成分,但它只能由它的接口来定义。任何ORB实现方式提供的接口都是可以接受的。可以把接口中的操作分为三类:

1. 对于所有的ORB实现都一样的操作

2. 特定类型对象的操作

3. 与对象实现种特定类别有关的操作

不同的ORB有不同的实现方式,但都包括有:IDL 编译器, 仓库(repositories),各种Object Adapters,给client提供各种服务集,具有不同属性的对象实现等。

现在有各种不同的ORB实现。一个client可以同时访问两个由不同ORB实现管理的对象引用(object references)当这两个ORB需要一起工作时,它们能区分出各自的对象引用。Client不需要对此负责。ORB CoreORB的一个组成部分,它提供对象的基本表示和与请求的通信。

有四种不同类型的ORB

1Client- and Implementation-resident ORB

2Server-based ORB

3System-based ORB

4Library-based ORB

ORB Interface:

一个ORB是一个逻辑实体(logical entity),它可以用各种方法实现(如一个或多个过程,或一个libraries集合)。为了减轻编写程序的困难,CORBA规范定义了一个抽象的接口。该接口提供各种帮助函数。

CORBA IDL stubs and skeletons:

它相当于clientserver应用程序和ORB之间的胶水。由CORBA IDL编译器自动实现CORBA IDL定义与目标编程语言之间的转换。

使用编译器可以减少client stubserver skeletons之间的潜在矛盾。

Dynamic Invocation Interface(DII):

该接口允许client直接调用ORB所提供得最底层的请求机制。应用程序使用DII动态地把请求传给对象而不需要IDL接口(包括特定stub)。与IDL stub(它只允许RPC模式的请求)不同,DII也允许clients使用无块的延迟同步调用(non-blocking deferred synchronous(发送操作是独立的)和单向调用(send-only)。

Dynamic Skeleton Interface(DSI):

client端的DII类似的,位于server端的接口。DSI允许ORB把请求发送给对象实现,该对象实现不包含编译时所需要的类型。发出请求的client不知道该实现是使用指定类型的IDL skeletons 还是使用动态的skeletons

Object Adapter:

它帮助ORB把请求传给对象并激活该对象。更重要的是一个object adapter总是与一个对象实现(object implementations)联系的。Object adapter可以被定义来支持特定的对象实现类型(如OODB object adapters用于持续对象(persistence)而library object adapters 用于非远程对象)。

2-12 典型的Object Adapter结构

它的作用有:

(1)产生和解释对象引用

(2)Method调用

(3)相互作用的安全性

(4)对象和激活实现及撤销实现

(5)把对象引用映射到相应的对象实现

(6)注册对象实现

 

 

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(九)

6.2 基于CORBA技术的聊天软件:本程序实现了CORBA与TUXEDO的互连,为联创系统集成软件公司的数据网综合业务计费与管理系统(LICMS)与佳都国际软件公司的飞马系统的集成打好了技术基础。该...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:56
  • 456

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(八)

第六章 应用实例6.1  新一代BOSS系统的CORBA解决方案       图6-1基于CORBA的BOSS系统的结构图 6.1.1  摘要由于CORBA自身的特点——开放性、可扩展性、安全性和先进...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:56
  • 460

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(十二)

第九章 参考资料 联创数据网综合业务计费与管理系统技术白皮书         联创 飞马系统与宽窄带计费系统接口方案         佳都国际 江苏通信BOSS和LCIMS接口          联创...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:59
  • 463

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(四)

 2.3.3  系统集成 图2-13 不同对象系统集成的方法 2.3.4 互操作 ORB 的互操作性提供了种易于理解的、方便的途径来支持网络中的对象,这些对象由多样的,不同种类的(与CORBA 兼容的...
  • helloworlder
  • helloworlder
  • 2003年07月02日 23:11
  • 4844

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(十)

第七章 结束语7.1 CORBA的主要应用方向 CORBA规范的推出,重新调整了客户机与服务器之间的关系。客户机可以向服务器提出事务请求,同时也可以为下一个请求充当服务器角色。 由于CORBA系统引入...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:57
  • 339

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(六)

第四章 CORBA的服务类型4.1 详解CORBA事件服务实现CORBA事件服务通过对事件(由对象产生并且传送给其他对象)封装而提供了基本的消息传递功能,在事件被产生之后,CORBA事件服务是将事件从...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:52
  • 505

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(二)

第二章 CORBA 的核心2.1基本概念:1、ORB(Object Request Broker)对象请求代理:它作为一个“软件总线”来连接网络上的不同对象,提供对象的定位和方法调用,它是CORBA实...
  • helloworlder
  • helloworlder
  • 2003年07月03日 00:25
  • 2919

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(七)

第五章 基于CORBA的分布式软件开发5.1 分布式技术的基本原理5.1.1传统的面向对象分析与面向对象设计方法。 常规的OOA和OOD方法可以直接应用于分布式系统的分析和设计,然而传统的OOP环境(...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:55
  • 367

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(一)

   基于CORBA的分布式程序设计Advanced CORBA Distributed Programming    引言 近年来,随着互联网技术的日益成熟,公众及商业企业正享受着高速、低价网络信息...
  • helloworlder
  • helloworlder
  • 2003年06月26日 17:18
  • 2113

基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(二)

第二章 Corba 的核心2.1基本概念:1、ORB(object Request Broker)对象请求代理:它作为一个“软件总线”来连接网络上的不同对象,提供对象的定位和方法调用,它是CORBA实...
  • c_cacal
  • c_cacal
  • 2010年06月04日 13:43
  • 6491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(三)
举报原因:
原因补充:

(最多只允许输入30个字)