CORBA规范、实现及其在CIMS中的应用
(来源:http://info.863cims.net/)
谢俊清,兑继英,汪 芸,顾冠群
(东南大学计算机科学与工程系,江苏 南京 210096)
摘要:CORBA规范作为面向对象分布式处理的主流标准之一,正日趋完善和成熟,并在各领域得到了广泛的应用。介绍了CORBA2.0规范的内容,论述了自行开发的遵循CORBA2.0规范的ORBUS系统的实现技术,描述了COM/CORBA互操作的实现机制,最后简要说明了CORBA系统在CIMS环境中的运用。
关键词:CORBA;IDL编译器;界面仓库;IIOP;COM/CORBA互操作
中图分类号:TH166 文献标识码:A
在企业的分布式计算环境中,异构性是一个十分明显的特点。一个典型的企业内部网络包括大型主机、UNIX工作站和PC机,各种机器所采用的操作系统和网络通信协议也是千差万别。在这样的异构环境下,一方面,实现信息和软件资源的共享是一项极大的挑战,而一个开放的标准则是解决此类问题的关键。另一方面,对应用软件的可扩展性和可重用性的要求,使得面向对象的分析、设计和编程技术得到了广泛的运用。在这两方面因素的驱动下,分布对象计算(Distributed
Object Computing,DOC)技术和标准的研究和制定就成了当前的一个热点。
OMG组织制定的CORBA(通用对象请求代理)标准目前已经成为分布对象计算技术的一个重要标 准,它与Microsoft的COM/DCOM标准、Sun公司的Java
RMI/Java Beans标准一起形成了这一 领域的主流。OMG组织从1989年建立至今,CORBA规范经历了1.0、1.1、1.2版本,并且产生
了现在的2.0版本的规范。它日益走向成熟,并得到了大约800余家厂商和机构的支持。
“面向CIMS的并行工程集成框架关键技术”课题是国家863重大攻关项目,它的目标是通过 遵从CORBA 2.0规范的企业层框架,实现不同的领域层框架(机械领域框架、电子领域框
架和经营领域框架)之间不同应用系统的信息和过程的集成,以达到尽可能并行地进行产品的 开发设计和制造管理。ORBUS系统是课题组研制的遵循CORBA
2.0规范的企业层框架系统,它 是整个集成框架正常运转的重要支撑。
1 CORBA标准简介
OMG组织定义了对象管理体系结构(OMA)作为分布在异构环境中的对象之间交互的参考 模型。OMA由五个部分组成:对象请求代理(ORB)、对象服务、通用设施、域接口和应用接口
。ORB实现客户和服务对象之间的通信交互,而其它四个部分则是构架于ORB之上适用于不同 场合的部件。CORBA标准就是针对对象请求代理系统制定的规范,它的组成形式如图1所示。
CORBA 2.0规范的主要内容包括:ORB核心、对象适配器、OMG界面描述语言(IDL)、IDL语言 到具体编程语言的映射、桩和架构、动态调用接口和动态架构接口、界面仓库以及ORB间的
互操作。它们的作用可简述如下:
ORB核心提供了对象请求和回答的通信机制,使CORBA应用的开发者无需关心具体通 信细节,而把注意力集中到实际的应用程序逻辑中去。
对象适配器介于ORB核心和对象实现之间,负责服务对象的注册、对象引用的创建和解释 、服务进程的激活和去活、服务对象的激活和去活以及客户请求的分发。由于对象适配器的
存在,使得ORB核心尽可能地简单,从而提高ORB核心的稳定性和效率。在CORBA规范中,定 义了“基本对象适配器”(BOA)作为实现对象适配器的通用标准。
OMG IDL语言提供了一组类似于C++的语法,供CORBA应用的开发者描述服务对象的界面。O MG IDL语言只具有描述性,而不具有可执行性。CORBA规范中因此定义了OMG
IDL语言到具体编 程语言的映射,目前的映射包括了C、C++、SmallTalk、Ada95和Java等。
通过IDL编译器,用户的IDL描述文件将生成对应编程语言的桩和架构程序。桩程序负责把 用户的请求进行编码,发送到对象实现端,并对接收到的处理结果进行解码,把结果或异常
信息返回给用户;架构程序对用户请求进行解码,定位所要求的对象的方法,执行该方法并 把 执行结果或异常信息编码后发送回客户。这样的方式通常称为“静态调用方式”(SII)。
对应于SII方式,CORBA还提供了动态调用方式。在动态调用方式下,用户往往预先不知道 服务对象的界面信息。用户首先通过查询或者其它手段获得服务对象的界面描述信
息,然后自行调用ORB的方法来构造用户请求并发送到对象实现方。在对象实现方也有一种 相类似的动态分发用户请求的机制,称为动态架构接口。动态方式一般是在编制网关之类
的 不确定信息较多的应用时使用。另外,使用动态方式比静态方式更加灵活,譬如,在动态方 式下,用户可以选择使用异步的调用方式。
在动态方式下,用户需要查询相应的服务对象的界面描述信息(在静态的方式下,这些信 息是由IDL文件来描述的)。这些信息由一个称为界面仓库的CORBA部件来提供,界面仓库通
常是以IDL描述文件为输入,将界面描述信息进行处理后存放在文件、数据库或者其它形式 的存储部件中,并提供一组标准的调用接口供用户查询使用。
CORBA 2.0规范相对于前一版本的一个最大的特色,就是增加了针对不同厂商ORB系统之间 的 互操作的规范。这主要是由于以前版本的规范都没有对ORB间进行通信的数据格式和协议进
行规定,从而导致不同的实现采用了不同的通信格式而无法相互通信。CORBA 2.0中定义了G IOP(通用ORB间通信协议),它对数据编码的格式、传输消息的格式和对运输协议的要求都
作出了详细的规定。由于GIOP是一个抽象的协议,它必须映射到具体的运输协议或机制中去 ,目前CORBA中支持GIOP到TCP/IP协议(称为IIOP)和DCE的两种映射。
在此后的CORBA 2.0的修订版本中,还增加了Microsoft公司的分布对象计算模型COM/OLE Au tomation标准之间的互操作的规范,使CORBA的可扩展性得到了进一步的提高。
2 ORBUS系统的实现
ORBUS是东南大学计算机网络研究室开发的遵从CORBA 2.0规范的系统。该系统所支持的 操作系统包括Solaris
2.5.1和Windows NT4.0,它所支持的编程语言为C++。ORBUS系统的主 要部件包括ORB系统、IDL编译器、界面仓库以及IIOP系统,它目前只支持静态调用的模式。
2.1 ORB系统的实现
ORB的实现从结构上可以划分成两部分:ORB守护服务进程和C++类库。ORB守护服务进 程负责执行ORB核心和BOA的所有工作,这些工作可以参见第一部分中关于“ORB核心”和“
对象适配器”的介绍。ORB系统的这些操作都通过C++类库中的ORB和BOA类方法的形式,提供 给客户程序和对象实现程序使用。
C++类库需要实现CORBA规范中的伪对象类(pseudo object)和辅助支持类。伪对象类 与IDL对象类不同。IDL对象类由IDL语言描述并需要向BOA和ORB核心登记和管理,而且IDL对
象类都继承基类CORBAObject;而伪对象类尽管也可以由IDL语言描述,但是,它不需要向 BOA和ORB核心登记,也不需要继承CORBAObject类。这些伪对象类包括Environment、NameVal
ue、NVList、Request、ServerRequest、Context、Princial、TypeCode、BOA和ORB。辅助支
持类包括了IDL基类CORBAObject、异常处理类Exception等。
2.2 IDL/C++编译器的实现
IDL编译器从IDL描述文件生成C++语言的客户端桩和服务器端架构的代码。客户桩建立 了对象实现在客户程序中的映射对象,起到代理的作用;服务器点架构主要是一
个循环判别——分枝处理逻辑,它根据所接收到的客户请求中的方法名和参数调用该方法, 并返回处理结果和异常信息。 ORBUS中的IDL/C++编译器所生成的C++语言的IDL
桩和IDL架构的形式,遵从CORBA规范 中I DL-C++映射部分的规定。因为IDL编译器生成的桩和架构的处理过程都需要调用ORB系统的C
++类库中的方法,因此,IDL编译器产生的桩和架构与ORB实现是息息相关的。客户程序、ID L桩和客户端C++类库通过编译连接生成客户可执行代码,而对象实现程序、IDL架构和服
务器端C++类库,通过编译连接生成对象实现可执行代码。
另外,IDL编译器还必须把IDL描述文件分析所产生的IDL说明元素(如Module、Interfa ce和Constant等),按照一定的层次关系传送到界面仓库进行存储,以便动态调用接口查询。
2.3 界面仓库的实现
界面仓库中存放着类型定义对象(TDO),其中包括界面定义对象(IDO)。对外提供TD O的存取和浏览服务是界面仓库的两大基本功能,其主要目的是为CORBA对象的动态调用和OR
B间互操作提供类型信息支持。
界面仓库实现的核心目标是在网络环境下处理TDO的分布和(或)复制,在不丧失性 能的前提下,保证伸缩和扩展性。界面仓库中TDO存放采用树状结构。虽然基于二维表格的
关系数据库也提供数据存取功能,却不适宜用来描述界面仓库,所以目前一般的CORBA系统 实现,都是以普通的树状文件系统为基础实现界面仓库,这种方案缺乏对TDO分布管理的有
效 支持。OODB是一种理想模型,它突破了关系数据库数据建模的局限性,不仅可以实现TDO网 络复制和管理,还能获得较高的访问能力和负载平衡。然而OODB目前仍处在理论研究阶段,
缺乏成熟技术,况且实现和运行成本过高。因此,ORBUS的界面仓库的实现采用一种融合面 向对象的Web技术和CORBA技术的实现方案,并称之为HIRE方式。
在HIRE方式中,界面仓库的存储部分使用Jigsaw来实现,Jigsaw是W3论坛的一个用Ja va语言实现增强的Web服务器。HIRE的方案轻量化、灵活、可扩展,是一种介于文件系统
和OODB之间的优选方案,一方面它使每个TDO都作为Java Class的一个实例,TDO的存取 可以利用HTTP协议操作实现;另一方面,由于对象界面定义的继承依赖和Web超媒体链接类似,
因此通过建立URI和TDO的RepositoryID的一一对应,可以方便地提供HIRE仓库的浏览服务 (如图2)。
2.4 IIOP系统的实现
为了实现ORB之间的互操作,ORBUS系统中实现了GIOP协议在TCP/IP协议上的映射——IIOP 协议。IIOP的实现应包括如下功能:①数据的编码与解码,即公共数据表示(CDR);②客户
方的网络连接管理和消息收发功能;③服务方的网络连接管理和消息收发功能;④客户方与代 理对象的交互;⑤服务方与真正对象的交互。
在IIOP系统中,实现了四个类:CDR类、NetworkTrans类、ClientBridge类、ServerBri
dge类。CDR类的主要功能是实现IDL数据类型与二进制流之间的相互转换,以进行网络传 输。CDR类提供了对于任意数据类型的来回转换,以及转换过程中涉及的字节顺序和字节边
界的处理。NetworkTrans类负责与网络相关的各项功能,主要分为网络连接管理和网络数据传 递两部分。连接管理负责在开始通讯时与对方建立连接,当通讯结束时关闭相应的连接;
网络数据传送部分主要是利用前述连接发送接收GIOP消息。ClientBridge类的主要功能是取 客户方请求,然后将请求发往服务方,并接收服务方发回的结果。ClientBridge类利用Netw
orkTrans类的服务将请求发送给服务方。ServerBridge类主要功能是接收客户方发来的请求, 并根据请求的类型进行相应的处理,再将处理结果返回给客户方半桥。
另外,还有一个与IIOP相关的内容,就是PROXY类,即代理对象类。其功能是作为远地对 象在本地的一个代理,通过DSI接口接受请求,然后将请求交给ClientBridge类,从而将请
求发往服务方,并接收服务方发回的结果。 在ORBUS系统中,各个组成部件之间的相互关系可以由图3来表示。
3 COM/CORBA互操作实现机制研究
在最近的CORBA 2.0标准的修订版本中,增加了“COM/CORBA互操作”的规定。由于Micr osoft的COM(DCOM)是Windows操作系统中的(分布)对象计算模型,因此提供使不同对象
计算模型中的对象能够互相尽可能透明地访问机制就变得十分重要。要做到这一点,可最 大程度地集成在Windows平台上采用COM标准开发的应用系统,而不必按照CORBA标准重新进
行开发。
在COM/CORBA互操作规范中,互操作的实现是通过CORBA在COM环境下的视图(View)和CO M在CORBA环境下的视图来实现的。其中,CORBA在COM环境下的视图代表了CORBA对象的实体
和接口,它有一个视图接口(View Interface),提供类似于COM中定义的接口用来向COM 客户提供服务。视图接口接收来自COM系统下客户的请求,通过桥将它转换为对CORBA对象的
请求,并将这个请求发送给CORBA对象,桥接收CORBA对象对请求的处理结果,将其转换为CO M的格式返回给视图,再由视图返回给COM客户。和上述方法一样,CORBA环境下的客户对COM
环境下的服务器的访问,通过COM在CORBA环境下的视图和桥来实现。另外,由于两种模型在 界面定义、界面继承方式和对象生命周期管理方面存在相当大的差异,互操作规范中还定义了
针对这几个方面的映射机制。
由于ORBUS系统中已经实现了IDL编译器,COM/CORBA互操作可以在IDL编译器的基础上按 照下面的方式实现:当对象服务器在CORBA端、客户在COM端时,针对每一个IDL描述文
件生成一个桩提供给COM用户,并生成一个架构以开发CORBA对象服务器;当对象服务器在CO M端、客户在CORBA端时,可以编译IDL描述文件生成一个桩提供给CORBA用户,并生成一
个构架以开发COM对象服务器。由于这种实现方式是针对每一个对象服务界面描述进行的, 因此,可以称为特定于界面(interface-specific)的方式。
4 CORBA系统在CIMS中的应用
在CIMS环境下,应用通常是分布的,应用之间需要交换信息和数据,例如CAD和CAM之 间,CAD、CAM和MRP
II之间,甚至是不同的CAD应用之间都会发生数据的交互。分布式应用的开 发,尤其是面向对象的分布式应用的开发,对于系统开发者而言是极具挑战性的。CORBA、C
OM/OLE Automation和JavaBeans是目前针对此类应用的主要分布对象计算模型和支持系统 。一般来说,如果所开发的应用只面向Windows平台(Windows
3.x/95/NT),那么使用COM 是最佳的选择;如果所开发的应用完全是使用Java语言编制的,那么就应该采用JavaBeans
的方案。但是,如果所开发的应用需要集成异构的平台,那么无疑应该选择CORBA。通过C ORBA系统的支持,分布应用的开发者可以采用不同的语言、操作系统和硬件平台来开发面向
对象的分布式应用。当然,首要的条件是存在支持该种平台、操作系统和语言的CORBA系统 。
利用CORBA系统进行分布对象应用的开发具有下面三个特点:①开发代价小、效 率高。系统开发者只需要编写描述服务对象接口的IDL语言文件并安装描述文件,实现服务
对象的功能即完成了全部的任务。其它的相关代码或者是由IDL编译器自动创建,或者是由ORB 类库提供,应用程序员并不需要编写例如网络通信、数据编码/解码、名址映射和安全管理
的程序代码,从而可以把工作重点放到服务对象实现的过程中去。②通过CORBA系统的 支持,一个服务对象可以透明地被分布在本地和网络上的客户所调用,扩大了服务对象的使
用范围,为分布的客户所共享。③CORBA系统作为“软件总线”,可以为服务对象提供“ 即插即用”的功能,而且当对象实现改进或升级时,只要接口保持不变,客户代码无需作任
何改动。
在CIMS的应用环境之下,CORBA系统的另一个十分重要的作用是集成已有的应用系统,这样 的应用系统通常称为“遗留系统”(Legacy
System)。“面向CIMS的并行工程集成框架关 键技术”课题就是一个很好的例子。各个领域框架的应用系统,例如,机械领域的Pro
Engi neer、电子领域的Mentor Graphics等等,需要通过CORBA系统集成到一起实现信息的交互和
共享。集成的关键在于对遗留系统的封装和包裹(wrap),经过包裹,遗留系统就能够 以OMG IDL的形式提供给用户,从而和新开发的面向对象的分布式应用同样处理。包裹
的形式视不同的遗留系统而不同,对于能够提供用户调用接口的遗留系统,只要利用原有 的调用来构造新的界面(必要时需要进行一定的扩充)即可;而对于比较封闭的遗留系统,
集成的难度就大得多了,通常是利用文件作为中介来集成。不过,目前CAD、CAM和MRP II 的系统厂商在发展过程中也在逐步使自身的应用系统更加开放,向用户提供更灵活的控制手
段,完全封闭的系统已经十分少见了,从而使集成工作也变得相对简单。
5 结束语
从前面的论述可以看出,CORBA系统作为分布对象处理的主流标准之一,在很多领域具 有很大的应用价值和前景,尤其是在象CIMS这样的异构特征非常明显的环境中。但是,CORBA系
统只提供了分布对象间通信的基本机制,其它涉及分布对象应用和管理的工作,都在OMG组 织制定的“对象服务”和“通用设施”的规范中进行定义和规定。因此,只有在CORBA系统的
基础上实现了必要的对象服务和通用设施,例如,名录服务、对象生命周期服务、事件服务 和事务服务等等,才能为面向对象的分布式应用的开发者和系统集成人员,提供更加便利和
有效的工具和手段。
另外,传统的CORBA实现对于实时控制、实时仿真和多媒体通信等应用的支持是不充分的, 因此,针对此类应用,实时CORBA系统也许是必要的选择了
参考文献:
[1] Digital Equipment Corporation. Objectbroker: reference
manual[M].1994.8 .
[2] IONA Technologies Ltd. The orbix architecture[M]. 1993.8.
[3] Object Management Group. The common object request broker:
architecture a nd specification[M], revision 2.0,1996.7.
[4] Otte R, Patrick P, Roy M. Understanding CORBA[M]. Prentice-Hall
In c., 1996.
[5] 863/CIMS主题并行工程集成框架关键技术项目总体组.面向CIMS并行工程集成框架 关键技术总体设计报告[R].1997.4.
CORBA SPECIFICATION, IMPLEMENTATION AND APPLICATION
IN CIMS ENVI RONMENT
XIE Jun-qing,DUI Ji-ying,WANG Yun,GU Guan-qun
(Computer Science and Engineering Department, Southeast Universit
y,Nanjing 210096,China)
Abstract:CORBA specification is one of the major distributed
obj ect computing standard. It has become becomes comprehensive
and mature and has been applied i n many fields. This article
first introduces the content of CORBA specification, then
it describes the technology involved in the ORBUS system,
which is an implementation of CORB A 2.0 standard, and the
mechanism to implement COM/CORBA interoperability. Final ly,
this article presents the application of CORBA system in CIMS
environment.
Key words:CORBA;IDL compiler;interface repository; IIOP;COM/
CORBA interoperability