- 4
- 0
- 约1.33万字
- 约 9页
- 2018-06-09 发布于湖北
- 举报
方兴未艾的CORBA
庞燕 武新逢
一直以来,面向对象的技术(Object Orientation ,OO)是软件界努力追求
的目标,传统的对象技术通过封装、继承及多态提供了良好的代码重用功能。但是这些对象
只存在于一个程序中,外面的世界并不知道它们的存在,也无法访问它们。要解决这些问题
就需要提供一个标准的构件框架,使不同厂家的软件通过不同的地址空间、网络和操作系统
交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说都是透明的。因此有关
对象中间件的标准相继问世,像 OMG 组织(Object Management Group)的公用对象
请求代理程序结构(Common Object Request Broker Architecture ,CORBA)、
Microsoft 的构件对象模型(Componet Object Model,COM)以及IBM 公司的系统对
象模型(System Object Model,SOM)等,这些标准都极大地促进了对象中间件技术的
发展。
CORBA 概要描述
CORBA 是OMG 组织在1991 年提出的公用对象请求代理程序结构的技术规范。
CORBA 有很广泛的应用,它易于集成各厂商的不同计算机,从大型机一直到微型内嵌式系
统的终端桌面,是针对大中型企业应用的优秀的中间件。最重要的是,它使服务器真正能够
实现高速度、高稳定性处理大量用户的访问。现在很多大型网站后端的服务器都运行
CORBA,其中有些网站您可能每天都在访问。
CORBA 的底层结构是基于面向对象模型的,由OMG 接口描述语言(OMG
Interface Definition Language ,OMG IDL)、对象请求代理 (Object Request
Broker,ORB)和IIOP 标准协议(Internet InterORB Protocol ,也称网络 ORB
交换协议)3 个关键模块组成。
使用接口描述语言编写的对象接口,使得与语言无关的独立性成为可能。IDL 使
得所有CORBA 对象以一种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA 或Java)
到IDL 的“桥梁”。CORBA 对象的互通信要以对象请求代理为中介,这种互通信可以在多种
流行通信协议(如TCP/IP 或IPX/SPX)之上实现。在TCP/IP 上,来自于不同开发商的
ORB 用IIOP 标准协议进行通讯。
我们知道,为了保持CORBA 的商业中立性和语言中立性,必须有一个中介,存
在于像C++ CORBA 服务器代码和Java CORBA 客户机这样的实体中间,这就是IDL。一
个底层对象的若干相关方法和属性被IDL 集入一个单一接口。一旦IDL 接口定义完成,它
可以以Stub 码或框架代码的形式编译成所选用的语言。在所有的ORB 中都有IDL 编译器。
值得注意的一点是,IDL 不同于其他的面向对象程序设计语言,我们不能用它指
定所定义的类或方法的具体实现。因此,仅仅将它作为一种定义底层对象接口的语言要好得
多。
ORB 接口结构
为了创建一个遵从CORBA 规范的应用程序,ORB 是CORBA 必须提供的。没有
ORB,CORBA 应用程序就无法工作。CORBA ORB 最显著的功能,是对应用程序或是其他ORB
的请求予以响应。实现细节对软件开发者的透明性,是ORB 的一个杰出的特性。
在CORBA 应用程序运行期间,ORB 可能被请求做许多不同的事情,包括查找并
调用远程计算机上的对象、负责不同编程语言之间的参数转换( 如C++到Java)、用动态
方法调用激活远程对象等等。
图1 所示为一个独立的ORB 的结构,箭头说明ORB 的调用关系。为了提出一个
请求,客户端可以使用动态调用接口(Dynamic Invocation )或者客户端的Stub 程序。
客户端也可以直接和ORB 交互。
图1
对象的实现(Object Implementation )通过IDL 静态骨架(IDL Static
Skeleton)或动态骨架(Dynamic Skeleton )的调用来接受请求。
图2所示为一个远程调用过程。为了调
原创力文档

文档评论(0)