GNOME CORBA简介

What's CORBA?

CORBA(Common Object Request Broker Architecture)是一组标准,用来定义“分布式对象系统”,由OMG(Object Menagement Group)作为发起和标准制定单位。OMG由700多家公司和单位组成,几乎包括了所有有影响的公司。CORBA的目的是定义一套协议,符合这个协议的 对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于什么样的机器和操作系统。

例如一个用C实现的对象Apple有一个方法eat,运行在NT机器host1上,我从一台Linux机器host2上,用Ada写了一个程序Boy,这个程序可以调用对象Apple的方法eat,并获得执行结果,而无须关心它是在本地还是在host1上。

为了达到这个目标,CORBA制定了一套对象间通信的协议。通信介质被称为ORB(Object Request Broker),它负责在对象之间传递消息。如果对象在同一台机器上,ORB可以采用一些IPC技术来优化消息的传递,如果在不同的机器上,则使用 IIOP或GIOP协议(可以建立在任何网络通信协议之上)。IIOP(Internet Inter-ORB Protocol)就是基于IP协议,为方便Internet上的CORBA应用而设计的。

ORB是CORBA应用的基础,不同的公司可以开发出不同的ORB。但由于大家使用相同的通信协议,因此基于不同ORB实现的应用之间可以无缝通信。如下图:

图1:ORB通信

注意,这里的stub类似与DCOM中的proxy,而这里的skeleton则类似与DCOM中的stub。

CORBA为了真正做到分布式的对象系统,仅有一个ORB是远远不够的。CORBA还必须定义大量的对象和伪对象才能满足分布式的对象系统下程序员的要求。其中主要包括两大类:

  • Corba Services:naming services(帮助client找到它需要的对象);security services(对象的认证,通信安全等);license serivices(控制用户对软件的使用)等等。目前一共有16个services,但一般的CORB系统仅实现了其中的一到两个;
  • Corba facilities:这是建立在CORBA Services之上的大量的对象实现,主要用于特定的工业部门,如电信,医药,法律等等。

CORBA与其它分布式技术的区别和比较

RMI,DCOM,RPC,socket,Q3 etc。


IDL简介

为了能让不同语言(机器环境,操作系统)下的对象对象之间可以对话,需要一套共同语言。IDL就是专门为此而制定的。 IDL(Interface Definition Language)看起来非常类似与C++(或Java)的头文件定义。它与DCOM下的IDL并不是一回事,但可以想象,它们非常接近。

IDL定义了一个对象支持的方法和属性,一个对象的实现只要符合这个定义,可以完全自由开发,例如,你可以用任何你喜欢的语言。给出一个对象的IDL文件,其它对象就完全掌握了这个对象的行为,可以按照自己的意图随意操纵。

另外IDL不仅仅是让人看的,IDL编译器可以编译它,替程序员自动生成sub和skeleton,使得程序员从这项难堪的工作中解脱出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值