CORBA概述

CORBA概述

原文链接:http://www.cs.wustl.edu/~schmidt/corba-overview.html

stone (jiangtao@tao-studio.net)

 

CORBA概述

CORBA (Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构,通用物件需求代理架构)是由对象管理组织建立的标准的、新兴的、开放的分布式对象计算的基础结构。CORBA使许多通用网络编程任务(例如:对象的注册、定位、注册和激活;请求的分解;数据组帧和错误处理;参数的编码和解码;以及操作的分派)得于自动化完成。关于CORBA更多的介绍性材料可以参见OMG网站。

下图展示了在OMG引用模型体系结构中的基本组成部件。这些部件的描述在图片的下面。这些描述的部分内容是基于Vinoski的材料的。

clip_image001

图1:OMG引用模型体系结构

对象服务——有一些被许多分布式对象程序使用的与领域无关的接口。例如,无论应用是何领域,用于提供发现其它可用服务的服务差不多总是必需的。下面是扮演上述角色的两种对象服务:

名字服务——它允许客户程序基于名字发现对象;

交易服务——它允许客户程序基于属性发现对象。

还有生命周期(lifecycle),管理(management),安全(security), 事务(transactions)和事件通知(event notification)以及许多其它的[OMG:95b]的对象服务规范。

通用设施——与对象服务接口一样,它些接口也是水平布置的,但与对象服务不同的是,它们是直接面向最终用户程序的。这种设施的一种例子是《分布式对象组件设施》(Distributed Document Component Facility, DDCF),DDCF是基于OpenDoc的复合文档通用设施。DDCF允许基于文档模型展示和交换对象,如使电子表格链接到报告文档中更容易。

 领域接口——这类接品充当与对象服务和通用设施相似的角色,不同的是,它们针对对特定的应用领域。例如, OMG 最早发布的征求建议书(RFPs)之一的领域接口是产品数据管理(Product Data management, PDM),它用于制造业领域。其它的OMG征求建议书(RFPs)将很快录续发布,用于电信、医药和金融等领域。

 应用接口——这些接口是针对于给定的应用程序开发的。由于它们与应用程序相关,所以OMG并没有制定相应的规范,这些接口并不是标准的。不过,如果随着一段时间后它们非常广泛的应用形成一个特定的应用领域,它们可能成为将来的OMG后选标准。

CORBA ORB体系结构

下图展示了CORBA ORB体系结构的基本组成部件。这些组成部件的描述在图的下面。

clip_image002

图2:CORBA ORB 体系结构

l对象 (Object)——是CORBA编程的实体,由标识符(identity),接口和实现组成。实现被称作为伺服程序(servant)。

 伺服程序(Servant)——是编程语言实现的实体,它实现了支持CORBA IDL接口定义的操作。伺服程序可用多种语言编写,包括了C,C++,Java, Smalltalk和Ada。

 客户程序(Client)——是编程实体,它实现了对对象操作的调用。对远程对象的服务调用对调用者来说是透明的。理想情况下,它同调用对象的方法(obj->op(args))一样简单。图2余下的组成部分促成了透明的层面。

 对象请求代理(ORB)——ORB提供了一种从客户端发起请求到目标对象的实现之间透明通讯的机制。ORB把客户端从方法调用的细节中脱离出来,它简化了分布式编程。它使得客户端的请求与本地过程调用编程方式一样。当客户端调用某个操作,ORB负责查找对象的实现,如果需要还激活对象,分发请求到对象上并负责将响应反回给调用者。

 ORB接口——ORB是逻辑实体,它可以实现为多种方式,如一个或多个进程或库。为解除应用程序和它的实现之间的耦合,CORBA规范定义了ORB的抽象接口。这些接口提供 了一些帮助函数,如对象引用与字符串之间的相互转换、在动态调用接口(下面将详细描述)为请求创建参数列表等。

 CORBA IDL stubs和skeletons——CORBA IDL stubs和skeleton在客户端和服务程序以及ORB之间起着“胶水”作用。在CORBA IDL定义和目标编程语言之间的形式转换中由CORBA IDL编译器自动完成。编译器的使用可以减少在客户端stub与服务端skeletions之间潜在的不一致,并能增加使用自动编译优化的机会。

 动态调用接口(DII)——该接口允许地客户端直接访问ORB提供的底层请求机置。应用程序使用DII来动态的发起向对象的调用请求而无需链接IDL接口规范的stub。与IDL stubs不同(它仅允许远程过程调用式的请求),DII允许客户端使用非阻塞延迟同步(deferred synchronous即将发送和接收操作分开)和使用单向(oneway,仅发送)调用。

 动态Skeleton接口(DSI)——它是服务端相对于客户端的DII。DSI允许ORB递送请求到一个对象的实现时无需在编译时已知对象实现的类型。客户端发起请求时不必关心服务的实现采用的是与类型相关的IDL skeletons还是使用的是动态skeletons.

 对象适配器(Object Adapter)——它协助ORB把请求递送给对象以及激活对象。更重要的,对象配配器将对象的实现与orb关联起来,对象适配器能够指定某些对象的实现形式(例如将面向对象的数据库对象的实现形式指定为持久化的,并对库对象适配为非远程对象)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值