精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 系统分析>>自开版到2000-04-10待整理精华>> CORBA技术规范 (孙艳春 刘积仁

主题: CORBA技术规范 (孙艳春 刘积仁
发信人: foreversun()
整理人: majorsun(2000-03-08 14:01:14), 站内信件
CORBA技术规范

孙艳春 刘积仁 赵大哲

 

摘 要 本文重点介绍了CORBA规范的理论和技术及其发展状况,它包括:CORBA规
范的由来和发展、CORBA规范的理论基础、CORBA规范的应用与发展前景.

关键词 CORBA,OMG,组件,分布式对象技术,OLE/COM,ORB

概述

网络技术,尤其是国际计算机互连网络Internet在全世界的迅速发展和普及,使
信息技术产业从以计算机为中心过渡到以网络为中心的发展方向. 开放系统的发
展可让用户透明地应用不同机型、不同运行平台组成的异构型计算资源,从而提
出了应用集成与分布式处理的要求,即在千差万别的信息资源的基础上构造起信
息共享的分布式系统,并能有效地实现应用系统与分布式处理的集成. 分布式处
理的关键是定义可管理的软件组件. 就客户来说,希望这种软件组件能“即插即
用”,即能从所提供的软件组件库中获取最合适的组件并可充分重用现有成熟的
软件代码. 就供应商来说,希望这种软件组件能便于客户裁减,便于维护和便于
重构. 分布式对象计算就是从系统集成与分布式处理要求中提出来的一种可行的
解决方案. 

分布式对象技术始于90年代初,已经发展成为当今分布式异构环境下建立应用系
统集成框架和标准构件的核心技术,已经在企业集成、集成化的分布式系统管理
、软件构件技术等方面发挥重要作用,出现了以国际OMG(Object Management G
roup)组织推出的分布式对象计算标准CORBA(Common Object Request Broker 
Architecture)和Microsoft推出的OLE/COM(Object Linking and Embedding/C
omponent Object Model)为代表的应用互操作技术标准. 

OMG是由500多个信息系统厂商、软件开发商和用户组成的非盈利性国际组织,成
立于1989年. OMG的基本目标是开发实用的分布式对象技术及其对象管理规范,建
立应用系统的通用集成框架,在分布异构的环境上实现基于对象软件的可重用、
可移植和互操作. OMG于1991年提出了对象管理结构OMA,发表了对象请求代理(O
RB)的技术标准CORBA1.0,1995年发表了CORBA2.0. CORBA为Common Object Req
uest Broker Architecture的缩写,即表示“公共对象请求代理体系结构”. CO
RBA具有分布式软件公共汽车的特点,它用高级抽象的对象模型来表达应用系统、
应用部件之间有效通讯的连接技术. OLE/COM是由Microsoft和DEC推出的一个复合
文挡(compound document)框架,最初用于集成Microsoft的办公软件,目前已
发展成为Microsoft世界的应用系统集成标准. 由Microsoft提出的组件对象模型
COM(Component Object Model)标准,是一种基于对象的编程模型,其软件组件是
一种二进制形式的可重用部件,可插入到来自任何支持COM标准的其它软件. 软件
组件必须遵循二进制外部接口标准,但对其实现无任何制约,以达到应用软件或
软件组件间的互操作. 但Microsoft的OLE(COM的一种实现)尚未支持跨平台的对
象交互,而CORBA对跨网络的对象交互支持规定了多种实现方式. OMG的技术完整
性和连续性优于OLE/COM. 

下面就对CORBA规范的内容及其采用的技术进行系统的介绍. 

CORBA规范

CORBA规范的关系模型

理解CORBA设计的结构的关键是关系模型,包括下列成分:

1)Object Request Broker(ORB对象请求代理):它使对象能在一个分布式环境
下透明地建立和接收请求和回答. 它是建立分布式对象应用的基础,也是在异构
和同构环境中应用之间的交互性的基础. 

2)Object Service(对象服务):它是一个服务集合,用于支持使用和实现对象
的基本功能. 服务对于建立任何分布应用是必须的,而且经常独立于应用域. 例
如,生命周期服务定义了建立、删除、拷贝和移动对象的转化,但不说明对象在
一个应用中是怎样实现的. 对象服务规范包含在CORBA 服务的Common Object Se
rvices Specification( 公共对象服务规范)中. 

3)Common Facilities(通用设施):是一个服务集合,许多应用共享此集合,例
如,一个系统管理或电子邮件设备能被划分为一个通用设施. 

4)Application Objects(应用对象):是单个的供应商用于控制接口的产品. 
应用对象遵从传统的应用观念,因此它们不是由OMG来标准化,反之,应用对象构
成了关系模型的最高层. 

在这四个部分中,对象请求代理是关系模型的核心. 它象一部电话交换机,提供
创立和接收调用的基本机制. ORB与对象服务相结合,确保符合CORBA规范的应用
组件间的有效的通信. 

CORBA规范的中的一些基本概念

为了真正理解CORBA规范,首先我们将对 CORBA中的一些基本概念加以描述. 

1)对象(Objects):一个对象系统包括多个对象实体. 一个对象是一个被封装
的实体,它能提供客户请求的一个或多个服务. 在ORB支撑的分布式环境中 ,一个
应用可以由许多对象组成,通过对象间的交互来实现应用的功能,对象间的交互通
过ORB来传递 . 

2)请求(request):客户通过构造一个请求来要求得到服务,在 CORBA规范中
请求方被称为客户 (Client). 在请求中要指定提供服务的对象实现、执行的操作
、操作上下文及该操作所用到的参数. 

3)对象引用 (Object Reference):用来指定对象的标识符称为对象引用,一个对
象可有多个对象引用 ,但一个对象引用仅对应于唯一一个对象. 

4)对象实现(Object Implementation):在CORBA规范中服务提供方称为对象实
现,它使用界面 (Interface)来描述在它上面可执行的操作. 

5)方法(Method):在对象实现中描述的某一操作对应的可执行代码称为方法.
 使一个方法执行叫做方法激活 (method activation). 

6)激活(Activation):在执行一个服务请求时,会引起对象或对象实现中的方法
被调用,如果对象或对象实现的初始状态不能满足方法调用的要求,便需通过某种
方法使其状态发生改变以满足方法调用的要求,这个过程叫做激活,相反的过程叫
做去活 (Deactivation). 

对象请求代理(ORB)的结构

ORB提供许多机制,这些机制用于接收请求、定位请求的对象实现,或用于准备对
象实现及与组成请求的数据通信等. 客户所看到的界面完全与对象的位置无关,
也与它所实现的编程语言无关. 

对象请求代理的体系结构如图1所示:

 



 

图1 对象请求代理的体系结构

 

如图1所示,单个ORB由动态调用界面(Dynamic Invocation)、IDL桩(IDL Stu
bs)、ORB界面(ORB Interface)、静态IDL框架(Static IDL Skeleton)、动
态框架(Dynamic Skeleton)界面、对象适配器(Object Adapter)组成,它们均给
出了一组界面来支持应用对象. 其中IDL桩、动态调用界面、ORB界面 (由ORB内核
提供)可为客户方使用,称为客户方界面;IDL框架、动态框架界面 、对象适配器
 、ORB界面可为对象实现方使用,称为对象实现方界面. 同时为了使这些 ORB部件
均能完成其功能,CORBA给出了界面仓库和实现仓库的描述 ,这部分可称为辅助设
施. 

为了创立一个请求,客户方可以使用动态调用界面(独立于目的对象界面)或一
个OMG IDL桩(依赖于目的对象界面的特殊的桩). 客户也可为一些功能直接与O
RB交互. 

对象实现接收一个请求作为向上调用(up-call)有两种方式,或者通过OMG IDL产
生的框架,或者通过一个动态框架. 当处理请求时,对象实现可以通过调用对象
适配器和ORB来实现. 

在结构中,ORB不需作为一个单个组件来实现,而它是由自己的界面来定义的,这
些界面分为三类:

1)对于所有的ORB实现是一致的;

2)对于特殊类型的对象操作是特殊的;

3)对于特殊类型的对象实现操作是特殊的;

不同的ORB可以做不同的实现选择,同时IDL 编译器、库和不同的对象适配器提供
了一套服务给客户. 

可以有多个ORB实现,这些实现对对象引用有不同的表示方法,而且有不同方式去
执行调用. 客户可以同时访问两个被不同ORB实现管理的对象引用. 当两个ORB一
起工作时,这些ORB必须能区别它们的对象引用,这不是客户的责任. 

ORB核是ORB的一部分,它提供基本的对象表示和请求的通信. CORBA被设计用于支
持不同的对象机制,它作到这点是通过ORB核之上的组件结构化ORB来实现的,这
些组件提供掩盖ORB核之间的差别的界面. 

下面就客户方界面和对象实现方界面的实现方式做一下详细的说明. 

2.3.1 客户方界面 

客户方界面由 IDL Stubs(IDL桩)、动态调用界面(DII)、ORB界面组成 ,客户通
过这些界面可以得到 ORB及对象实现方提供的服务 . 

客户通过ORB访问对象服务方的方式如图2所示:

 



 

图2 客户通过ORB访问对象服务方的方式

 

客户通过访问对象引用和掌握对象的类型及所需执行的操作而创建一个请求. 客
户通过调用相应于对象的专门的桩子程序或通过动态创建请求而启动一个请求. 


用于调用一个请求的动态界面和桩界面能满足相同的请求语法,信息的接收者不
必指出请求是通过哪种方式被调用的. 

下面对客户方界面中的IDL桩、动态调用界面及ORB界面分别做以介绍:

1) IDL桩 

对于非面向对象语言的映射,对于每种界面类型有一种连到桩的编程接口. 通常
,桩将表示对于一个对象上的OMG IDL定义的操作的存取. IDL桩由IDL编译器根据
具体的IDL界面通过IDL编译器编译产生. 当客户方程序向它发出请求时,它通过与
ORB内核的私有界面向ORB内核发出调用请求 . 这种方式属于静态调用方式,只有
在编译时IDL界面是已知的情况下才是可行的. 对于要到运行时才知道对象实现方
IDL界面的情况 ,可以使用动态调用界面 . 一般来说,对于特定 ORB内核的IDL桩
均经过优化,其运行时效率较 DII为高. 

2)动态调用界面 (DII) 

界面也允许对象调用的动态创建,不是调用对特殊对象上进行特殊操作的桩子程
序,而是一个客户指明被调用的对象、要执行的操作和所调用操作的参数等. 为
了适应某些特殊的应用情况,允许某一对象实现在运行时加入,使客户对象可以调
用该对象实现提供的服务,ORB提供了动态调用界面. 它允许动态地创建和调用对
象请求,通过 DII函数 create_request来完成,客户必须给出具体对象实现的对象
引用、请求执行的对象实现中的操作以及一组参数,并指定返回值类型. 在DII中
主要有两类请求操作 ,一类是正常的请求调用,操作结束时返回,函数名为 invok
e. 另一类称为延迟同步操作 ,请求发出后立即返回,去执行下一步操作,函数名
为send,如果需要知道操作执行情况 ,必须调用DII中别的函数 ,如 get_respons
e和 get_next_response. 在延迟同步操作情况下还可以同时发出多个请求,函数
名为 send_multiple_requests. 

3)ORB界面 

 

ORB界面是直接到达ORB的接口,它对于所有的ORB是一样的,而且不依靠于对象的
接口或对象适配器. 由于大多数ORB的功能由对象适配器、桩、轮廓或动态调用提
供,仅有几个操作对于所有对象是通用的,这些操作对于客户和对象实现均有用
. ORB界面同时为客户方和对象实现方所见,它提供了一些只能由ORB内核提供的功
能,这些功能包括对象引用操作、ORB初始化、对象适配器初始化、获取初始对象
引用等几个方面 . 

2.3.2 对象实现方界面 

对象实现方界面包括静态IDL框架、动态框架界面 (DKI)、对象适配器、ORB界面
 ,它使具体的对象实现和ORB连接起来,使得ORB可以对对象的具体实现进行调用
. 其中对象实现方的ORB界面和客户方ORB界面是一致的 . ORB访问对象实现可以
用图3表示. 

ORB通过一个IDL轮廓或一个动态轮廓定位适当的实现代码、传输参数和传送控制
到对象实现. 轮廓对于界面和对象适配器是特定的. 在执行请求时,对象实现通
过对象适配器获取一些来自ORB的服务. 当请求完成时,控制和输出值被返回给客
户. 对象实现可以根据它所需的服务的类型而选择相应的对象适配器. 

下面就对象实现方界面中静态IDL框架、动态框架界面DKI和对象适配器 (Object
 Adapter)分别做以介绍. 

1)静态IDL框架 

特殊的语言映射可以依靠对象适配器来实现. 对于实现每种对象的方法有一个界
面. 界面将通常为上调界面,对象用这个界面实现符合该界面的子程序,ORB通过
轮廓调用它们. 

IDL框架是由IDL编译器产生的ORB中调用对象实现的界面 . 通过它,可以使ORB调
用对象实现中的方法 (method),对象实现根据该界面给出具体的实现例程 . IDL
框架的存在并不意味着有相应的客户IDL 的存在. 而ORB也可以不使用IDL框 架来
进行对象实现方法的调用,而通过使用对象适配器来调用方法 . 

2)动态框架界面DKI 

允许动态处理对象调用的接口是非常有用的,那就是,不是由与特殊操作相关的
轮廓来访问对象实现,而是由一个提供访问操作名和参数的界面用一种类似于动
态调用界面的方式来访问对象实现. 动态框架界面可以由客户桩或动态调用界面
来调用,它们向动态框架界面发出对象请求. DKI的基本思想是让所有的对象请求
通过调用同一组例程来达到调用对象实现中方法的目的,这组例程便叫做动态调用
例程DIR. 对所有的对象实现来说它们也仅需根据DIR来给出具体的实现例程 . 


3)对象适配器 (Object Adapter) 

对象适配器是对象实现访问ORB提供的服务的主要方式 . 由ORB提供的服务在一个
对象适配器中经常包括:对象引用的产生和解释、方式调用、交互性安全、对象
和实现的激活与释放、对象引用到实现的映射及实现的定位. 

由于各个不同对象的对象粒度、生命周期、实现形式的千差万别 ,ORB内核无法为
所有的对象提供一个统一、方便有效的界面 . 通过对象适配器的作用,可以将目
的对象分成若干组,每组通过特定的对象适配器来满足其特定的需要 . 但这样一
来,对象适配器的种类便会急剧膨胀 ,为了减少对象适配器的种类 ,CORBA给出了
基本对象适配器(BOA),以满足大多数对象的需要 . BOA提供了产生和解释对象
引用、对请求进行认证、激活/去活实现 、激活/去活单个对象、通过框架调用方
法等功能. 在提供这些功能时 ,BOA要用到一些与操作系统有关的知识 , 这些知
识由实现仓库提供,实现仓库还存放对象实现的有关信息. 

OMG的IDL及其到编程语言的映射

2.4.1 OMG IDL(界面定义语言)

OMG的界面定义语言IDL(Interface Definition Language),是CORBA中规定的一
种中性语言,它用来描述客户对象调用的界面及对象实现提供的界面,但不涉及
对象的具体实现 . OMG界面定义语言通过指明对象的接口而定义了对象的类型. 
使用IDL界面的客户对象可以根据IDL界面中的信息来决定如何发出请求和接收响
应 ,从而使得客户对象完全独立于具体对象实现所在的位置 、使用的编程语言及
别的跟对象界面无关的方面 . IDL的词法、语法规则遵从C++的规定 ,但加进一些
关键字以支持分布概念 . 

IDL是一种方法,通过它,一种特殊的对象实现告诉它的潜在的客户什麽操作适用
和怎样调用这些操作. 从IDL定义中,可以映射CORBA对象到特殊的编程语言或对
象系统. IDL完全是一种描述性语言,它不能用于实现客户程序. 为了使对象能够
统一使用IDL界面信息,CORBA规定了IDL到具体语言的映射 . 

2.4.2 OMG IDL到编程语言的映射

不同的面向对象或非面向对象的编程语言很喜欢用不同方式访问CORBA对象. 对于
面向对象的语言,需要把CORBA对象看成编程语言对象. 对于非面向对象的语言,
一种好办法是用隐藏确切的对象引用、方法名的ORB来表示. 

OMG IDL到每种编程语言的特殊映射对于所有的ORB实现来说是相同的,语言映射
包括语言的特殊的数据类型的定义和通过ORB存取对象的过程界面的定义,这包括
客户桩界面的结构、动态调用界面的结构、实现轮廓的结构、对象适配器的结构
和直接的ORB界面的结构. 

每种语言映射也定义了在对象引用间的交互和在客户和实现中的线程控制. 最普
遍的映射提供了同步调用,在此同步调用中,当对象操作完成时子程序返回. 附
加的映射可以被提供用于允许启动一个调用和控制返回到程序. 在这种情况下,
附加的特殊语言子程序必须被提供用于同步程序的线程控制和对象调用. 

完全的语言映射使程序员可以使用某一特定的编程语言方便地调用所有ORB支持的
函数,所有对某一特定语言的ORB实现必须支持同样的IDL映射以使实现对象的程序
获得源码级可移植性. 在 CORBA规范中制订了IDL到 C、 C++、 Smalltalk语言的
映射规范. 

结束语

随着网络分布式技术的发展,基于CORBA的产品越来越多,而且它们之间存在着多
样性,这样不同CORBA产品的互操作成为CORBA标准需要解决的关键问题. 为此,
CORBA2.0给出了ORB之间互操作的技术标准,并已发挥作用. 如,IBM 和SUN公司
决定用CORBA2.0提供的技术标准实现DSOM与NEO的互纺. 专家们普遍认为,在今后
的一个时期,OMG的CORBA技术与Microsoft的OLE/COM技术将并存,并在未来分布
式对象技术上趋于统一. 而且,OMG确定了OLE与CORBA产品的界面,并得到了Mic
rosoft的支持. 基于此界面,OLE的对象能够与CORBA的对象进行通信. 

随着Internet/Intranet技术的飞跃发展,分布式对象技术将在未来的Internet/
Intranet技术中发挥重要作用,并对基于Internet应用集成技术赋予新的内容. 
Netscape已经决定采用OMG的CORBA技术在Internet上实现对象互访. SUN公司推出
的NEO及其JOE也是朝着这一方向努力的产品,因为它不仅可以作为新的Internet
客户/服务器应用的基础设施,而且可将其与现有的应用和数据库有效地集成在一
起. 

总之,CORBA规范将在未来的发展中起到越来越重要的作用,我们应该认真研究C
ORBA规范,从而在应用CORBA规范技术的基础上实现在分布式异构环境下的软件组
件的“即插即用”功能,使得现有的应用和系统软件得到合理、高效的重组和使
用,以满足不同的需要. 

参考文献

1 The Common Object Request Broker:Architecture and Specification. Rev
ision 2.0. 1995

2 陈涵生. 对象技术的新发展. 计算机应用与软件. 1996, 13 (5)

3 覃社庭等. OLE 2 编程指南. 电子工业出版社

 

Computer Supported Cooperative Work

Sun Yan chun Liu Jiren Zhan Dazhe

 

Abstract This paper puts the emphasis on the introduction of CORBA the
ory and its development condition, which includes the origin and devel
opment of CORBA specification ,the theory basis of CORBA specification
 and the application and development view of CORBA specification.

Key words COBRA , OMG, Component , Distributed Object Technology OLE/C
OM , ORB

 

作者简介:孙艳春,女,1970年生,博士生,研究方向为软件组件技术的研究. 


赵大哲,女,1960年生,副研究员,研究方向为CSCW. 

刘积仁,1955年生,教授,博士导师,主要研究领域为分布式多媒体信息处

理方法学及支撑平台,协议工程. 


--
   在年轻的时候,如果你爱上了一个人,请你,请你一定要温柔地对待他.不管你们相爱的时间有多长或多短,裟忝悄苁贾瘴氯岬叵啻敲矗械氖笨潭冀且恢治掼Φ拿览觥?nbsp;
   若不得不分离,也要好好地说声再见,也要在心里存着感谢,感谢他给了你一份记忆。长大了以后,你才会知
?.... [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.72.12.252]

[关闭][返回]