CORBA 定义对象之间交互的协议, 允许应用程序和其他的应用程序通讯;这些对象可以用不同的编程语言写成,运行在不同的操作系统上,存在于不同的机器上。CORBA 1.1 由对象管理组织在 1991 年发布。他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。CORBA 2.0 于 1994 年的 12 月发布。他定义了如何跨越不同的 ORB 提供者而进行通讯。
ORB是一个中间件(middleware),它可以建立对象之间的client/server关系。通过ORB,一个client可以透明的引用同一台机器上或网络上的一个server对象的方法。ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果。client并不清楚该对象的位置,它的编程语言,它的操作系统以及其它不是对象接口的系统信息。 ORB能实现分布环境中位于不同机器上的应用之间的互操作以及多对象系统之间的无缝连接。
在传统的(client/server)应用中,开发者使用自己设计的标准或通用标准来定义设备之间的协议。协议定义与实现的语言、网络传输及其它有关因素。ORB简化了这一过程,它使用IDL来定义应用接口之间的协议。ORB允许程序员选择通用操作系统,运行环境和编程语言。更重要的是,他允许集成现存组件。
CORBA 是在面向对象标准化和互操作性道路上的一个信号。通过 CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。
ORB 特定于 CORBA 实现(ORBit 有它自己的 ORB),但来在不同厂商的 ORB 之间可以透明的通信,这有赖于公共的协议。这意味着你可以使用某个 ORB 并用它建立对象,这之后你决定这个 ORB 不再使用(sucks) (比如说它太慢了),你可以使用其他的 ORB 并有同样的对象交互。
下面的示意图解释这种机制:
图 1. ORB 通信
当你做到对象的调用时,你必须生成正确的消息:stub 就是用来做这个的。skeleton 负责把这些消息转换成正确的到对象的调用。编程者负责写 stub 和 skeleton,不过有一些工具可以帮助你,我们将在后面看到它。stub 担当本地的代表或远程对象的代理(proxy),这样就能与远程对象一起工作、就象它在本地一样。skeleton 做严格的相反的事。COM 编程者要注意:CORBA stub 在 COM-lingo 中叫做 proxy,而skeleton 大致扮演 COM stub 同样的角色。
这就是基本的 CORBA 体系,但 CORBA 有更多的内容:CORBA 的目标是个创建一个分布式系统。ORB 是对象用的框架(framework),而 CORBA 还定义了一系列丰富的对象和伪对象(pseudo-object)(ORB 提供的同对象一样的外表)来处理编程者在与分布式对象一起工作时所面对的各种要点。
文章来源于领测软件测试网 https://www.ltesting.net/