CORBA技术剖析及其应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CORBA技术剖析及其应用
梁剑,李晓,胡彬华
(中国科学院新疆物理研究所,新疆乌鲁木齐830011)
摘要:为了满足复杂的、大型的分布式应用开发的需求,作为基于组件对象模型的分布式技术规范,CORBA 和COM/DCOM技术被广泛采用。

主要分析CORBA技术的标准、结构、特点及其作用,并提出了CORBA对象的具体实现方法;同时也给出了CORBA技术和COM/DCOM技术相应的对比。

关键词:分布式应用;CORBA;COM/DCOM
中图法分类号:TP311.5文献标识码:A文章编号:1001-3695(2002)08-0091-03
The Anatomy and Application of CORBA Technology
LIANG Jian,LI Xiao,HU Bin-hua
(The Xinjiang Institute of Physics,the Chinese Academy of Sciences,Wulumugi Xinjiang830011,China)
Abstract:In order to meet that need of the large-scale and complicated development of distributed application,as the distributed technology standard of component model,CORBA and COM/DCOM technologies are used widely.In this paper,we analyze the criterion,structure,char-acteristic and function of CORBA technology,and give an achieving method.In addition,we have given the comparison between CORBA and COM/DCOM technologies.
Key words:Distributed Application;CORBA(Common Object Reguest Broker Architecture);COM/DCOM
1引言
目前,开发分布式多层应用系统似乎是所有开发工具、数据库厂商、Internet/Intranet、工具,以及操作系统厂商都积极提倡的应用系统结构。

分布式开发需要解决一系列兼容性问题:
!跨平台。

各种软件可能分布在各种机型的平台上。

!跨操作系统。

如Windows,Unix,Linux以及So-laris OS等等。

!跨语言。

现有的软件系统是由各种不同的语言编写而成,因此希望分布式系统能够允许混合编程,充分发挥不同语言的特长,从而提高开发效率,降低维护成本。

!跨协议。

Internet是一个异构的网络,不同的区域可能具有不同的网络结构,使用不同的传输协议,为了实现资源的共享和操作的透明性,就要求分布式系统可以跨协议。

!跨版本。

由于软件编写的时间和技术的不同,必然出现多个版本同时使用的情况,这就要求分布式系统实现版本的透明性。

目前分布式结构使用的核心的应用程序服务器大致可以分成两种不同的工业标准:!由Microsoft制定COM/ DCOM以及COM+;"由800多个成员组成的对象管理组织OMG(Object Management Group)提倡的CORBA(Com-mon Object Reguest Broker Architecture,公共对象请求代理体系结构)。

现在越来越多的分布式技术都是根据这两种分布式核心技术再加以演变而产生的,例如EJB(Enter-prise Java Bean)等。

基本上Microsoft的COM/DCOM/COM +是以Windows为中心的开发环境,而CORBA是中立平台的分布式技术,能够执行于Windows,Unix以及Linux 等操作系统。

2CORBA技术概要
CORBA是由OMG组织制定的一种标准的面向对象应用程序体系规范。

简单地说,CORBA应用程序非常类似于其它面向对象的应用程序。

不同的是,当对象在另一台机器上的时候,客户端和服务器端必须通过一个特殊层来管理网络通信,在客户端称为Stub,在服务器端称为Skeleton。

CORBA应用程序的简单结构图如图1所示。

图1CORBA应用程序的结构
CORBA客户端的Stub要通过安装在客户端的ORB 软件来处理接口调用。

而ORB又通过Smart Agent(可能运行在局域网中的其它机器上)所提供的目录服务来动态地定位一个可用的服务器,该服务器才是真正地实现了接口。

CORBA服务器端的ORB把客户的接口调用
通过Basic Object Adaptor (BOA )通信。

通过BOA ,Skele-ton 在Smart Agent 上注册对象,
表明对象的作用域,确定对象是否可以远程环境以及这样创建实例。

!Stub ,Skeleton 和Smart Agent
Stubs 和Skeleton 实际上是一种使用CORBA 应用程序汇合接口调用的策略。

它们的作用可以概括为两点:!传递服务器的接口指针;"传递客户程序读接口的调
用。

当客户程序试图访问一个CORBA 对象时,
如果CORBA 对象不在客户程序的进程空间中,
对接口的调用就会传给客户端的Stub ,而Stub 又把调用信息打包传递给远程的服务器进程。

服务器端的Skeleton 把包解开,取出其中的参数,然后实现有关接口。

Smart Agent 提供了动态的分布式的目录服务,用于定位一个实现特定对象的可用的服务器。

如果有多个服务器可供选择,
Smart Agent 会基于负载平衡选择其中一个,
如果所选的服务器失败,Smart Agent 会自动重新启动另一个服务器。

以保证服务不会中断。

3CORBA 的服务
(Service )在CORBA 的技术领域中,是以不同的软件元素来
提供一个分布式应用系统所需要的各种功能,这些元素在CORBA 中就叫做“Service ”。

在CORBA 的功能规格
中OMG 定义了许多不同的Service ,
每个Service 都有不同的功能。

当程序员在使用CORBA 开发分布式应用系统时,可以根据应用系统的需要加入相对应的Service 。

!Event Service
CORBA 的Event Service 提供了分布式对象之间标准的通讯机制。

Event Service 所谓的“提供者—消费者”
(Supplier-Consumer )
模型通过一个事件信道让提供者对象以异步的方式传递事件给消费者对象,如图2所示。

图2
Event Service 服务机制
!
Naming Service
CORBA 的Naming Service 提供了程序员在分布式应用系统中为企业对象命名有意义且独特的名称服务。

Naming Service 允许程序员使用阶层式的方式为企业对象命名,然后允许程序员在程序代码中使用这些有意义的名称来存取这些企业对象,如图3
所示。

图3
Naming Service 服务机制
!
Transaction Service
在传统的应用系统中,当程序需要进行数据的
Two-Phase Commit 的交易管理时,
是直接在程序代码中在交易管理的API 中。

但在分布式应用系统中,一个交
易管理的行动可能包含了数个分散的企业对象。

这些参与交易管理的企业对象可能在不同的机器之中执行,这和传统的应用程序执行交易管理的行为是完全不一样的。

CORBA 的Transaction Service 就是提供分布式应用系统能够执行的关键性任务,并且允许企业对象在异质平台和数据之间进行数据的Two-Phase Commit 的交易管理工作;Transaction Service 允许分布式企业对象在Internet 或是Intranet 环境中参与数据的交易管理。

目前Microsoft 的MTS 就是一种Windows 平台中Ac-tiveX 对象的交易管理服务软件;
但是MTS 只能在Win-dows 平台中执行,
而且只能支持特定的数据库(MS SOL Server 和Oracle )。

Inprise 的ITS (Integrated Transaction Service )
是一种真正实现OMG 定义的Transaction Service 商业软件,ITS 能够执行于Windows ,Solaris ,HP-UX 以及许多其它支持VisBroker 的平台之中,并且支持许多数据库,包含Oracle ,Sybase ,MS SOL Server 和Informix 等。

!Security Service
CORBA 的Security Service 包含了存取控制
(Access Control )
、稽查控制(Auditing )、认证控制(Authentication ),以及存取政策控制(Policy Control ),可以让程序员在分布式应用系统中实现非常严格的安全控制管理系统。

一般来说,CORBA 的Security Service 会使操作系统本身对于客户端用户的安全管理控制功能,例如登录控制以及用户能够存取的系统对象权限等。

目前,Inprise 提供了SSL (Secure Socket Layer )Service 允许程序员把传递给网络的时间进行加密。

!Object Adapter
OMG 定义的Basic Object Adapter
(BOA )提供了数个重要功能:BOA 定义了CORBA 对象激活的模型,
以及客户端应用程序如何存取这些实现的CORBA 对象。

它会向OsAgent 注册CORBA 对象。

BOA 可以产生和解释对象ID ,还可以和OAD 合作以便在客户端应用程序中要求使用特定的CORBA 对象自动激活CORBA 对象。

此外,ROA 可以通过Skeleton 调用CORBA 对象的方法。

BOA 是CORBA 核心中非常重要的一个元素,
当一个CORBA 对象激活并准备好提供服务后,
都要向BOA 注册,以便让客户端应用程序能够存取到这个CORBA 对象。

BOA 提供激活CORBA 对象的三种模式:Shared Server 模式、Unshared Server 模式、Server-Per-Method 模式。

4应用Delphi 5开发CORBA 对象
以往开发CORBA 的应用程序,程序员必须使用C /C ++,Java ,Smalltalk 或是COLBOL 等语言。

但Inprise 建立了第一个能用RAD 开发工具编写CORBA 应用程序的视觉化开发工具,这就是Delphi 5。

在Delphi 5之中是以COM /DCOM 的技术封装COR-BA 对象的,
所以由Delphi 5建立的CORBA 对象是一个同时具备COM /DCOM 和CORBA 能力的Dual-Mode 对
类似COM/DCOM模式开发CORBA对象;二是隐藏CORBA接口的API,让程序员专心于开发企业对象。

在Deiphi5中开发CORBA技术的应用程序的步骤和开发COM/DCOM应用程序技术是一样的,同样需要执行两个步骤:!开发CORBA应用程序服务器;"开发COR BA客户端应用程序。

Deiphi5为创建CORBA应用程序提供了两个向导:一是“CORBA DATA MODULE”,用于创建一个CORBA数据模块;二是“CORBA OBJECT”,用于创建一个CORBA对象。

过去要建立CORBA应用程序,程序必须用CORBA IDL(Interface Definition Language)来定义接口对象,然后生成Stub和Skeieton的代码。

而Deiphi5提供的向导会自动生成Stub和Skeieton的代码,并且能生成相应的IDL脚本。

IDL有几种版本:有OMG的CORBA IDL,有Microsoft的IDL(用于COM),还有DCE IDL。

对于COR BA对象来说,CORBA IDL的文法与Microsoft IDL的文法稍有不同:
!CORBA对象按Microsoft IDL文法生成的脚本[Uuid(EE C C D B E A 5D2B)
Version( . ),
Heipstring("Project Library")

iibray Project
{Ioportiib("Stdoie2.tib");
Iportiib("Stdoie .t b");

Uuid(EE C C D B E A 5D2B)
Version( . ),
Heipstring("Dispatch interface for XXH object"),
Duai,
Oieautomaion

Interface TEST IDspatch
};

Uuid(EE C C D B E A 5D2B)
Version( . ),
Heipstring("TEST object"),

Cociass TEST

[defauit]interface TEST;

下面是同一个CORBA对象按CORBA IDL文法生成的脚本:
Moduie Project

interface ITEST
interface ITEST

Interface TESTfactory

TEST CreateInstance(in string Instancename);
};
向导会自动生成CORBA对象的类型库,文件名是Project .TLB。

CORBA对象的类型描述文件声明了有关接口,还声明了Stub对象和Skeieton对象的类。

此外向导在单元的initiaiization部分还生成了用于注册Stub、Skeieton和接口的代码。

!CORBA对象的实现单元
unit Unit2;
interface
uses
Windows,Messages,SysUtiis,Ciasses,Graphics,Controis,ComObj,StdVci,
CorbaObj,Project TLB;
private
{Private deciarations}
pubiic
{Pubiic deciarations}
end;
impiementation
uses CorbInit;
initiaiization
TCorbaObjectfactory.Create('TESTfactory','TEST','IDL:Project /TESTfac tory: . ',ITEST,
TTEST,iMuitiInstance,tmSingieThread);
end.
如果要使客户程序对服务器接口的调用在运行期动态确定,就要在接口库(Interface Repository)中注册服务器的接口。

如果要使服务器能够应客户程序的请求自动激活,服务器程序必须由OAD(Object Activation Daemon)注册。

CORBA客户程序并不是直接与CORBA 实例打交道,而是先获得对象的接口,然后再与接口打交道。

获得CORBA对象接口有两种方式:()使用Stub。

CORBA是通过调用Stub类工厂的CreateInstance ()来获得接口。

(2)使用DII(Dynamic Invocaton Inter face)。

它允许客户程序绕过Stub直接访问CORBA对象。

但CORBA对象必须在Interface Repository中注册;而且要使用一个TAny类型的变量来定义CORBA对象的接口,然后用这个变量来定义调用CORBA对象。

这样客户程序就可以通过CORBA对象实现与服务器的联系,从而进行企业级应用程序的开发和分发。

!结束语
CORBA是目前分布式对象技术的标准之一,COR BA不但具备了跨平台能力的语言中立性,而且提供了比COM/DCOM更稳定有效率的执行环境。

此外,COR BA丰富的功能更提供了程序员开发关键性分布式应用系统的必要条件。

因此CORBA在多层分布式系统中必将被广泛应用。

参考文献:
[]徐新华.Deiphi5高级编程丛书[M].北京:人民邮电出版社,
2 .
[2]李维.Deiphi5.X分布式多层应用系统篇[M].北京:机械工业出版社,2 .
[]刘晖,等.用CORBA建立电子商务系统[M].北京:北京希望电子出版社,2 .
[]施小英,是月华.CORBA应用中的编码范例[J].计算机应用研究,2 ,():6 6 .
[5]仲冬竹,张伟.基于CORBA的网络层管理软件的设计与开发[J].计算机应用研究,2 .
[6]http:///[EB/OL].
[]http:///[EB/OL].
[]http:///[EB/OL].
作者简介:
梁剑,中国科学院新疆物理所在读硕士研究生,主要研究方向为分布式数据库与CASE;李晓,中国科学院新疆物理所研究员,硕士生导师,研究方向为数据库;胡彬华( 6 ),男,新疆物理所在。

相关文档
最新文档