CORBA规范综述
- 格式:doc
- 大小:319.00 KB
- 文档页数:27
CORBA规范综述张亚红宋凯华东计算技术研究所二OOO年三月目录引言 (3)第一章CORBA 体系结构 (3)第1.01节CORBA规范概述 (3)第1.02节对象管理架构(OMA) (4)第1.03节CORBA详细结构图 (5)第二章对象服务(CORBAServices)的具体内容 (7)第2.01节名字服务 (7)第2.02节生存周期服务 (8)第2.03节事件服务 (10)第2.04节交易黄页服务 (12)第2.05节事务服务 (13)第2.06节并发控制服务 (15)第2.07节安全服务 (15)第2.08节持久性服务 (16)第2.09节流转换服务 (18)第2.10节查询服务 (19)第2.11节组服务 (19)第2.12节对象关系服务 (19)第2.13节时间服务 (20)第2.14节准许服务 (21)第2.15节属性服务 (21)第三章CORBA相关产品及CORBA的未来 (22)第3.01节CORBA相关产品 (22)StarBus的ORB核心机制原理 (23)第3.02节CORBA的未来 (24)第四章程序开发一般过程 (25)第4.01节程序开发一般过程 (25)第4.02节用Starbus开发分布应用步骤 (27)参考文献 (27)引言对象管理组织(OMG)提出的CORBA规范为实现分布式环境下的软件重用、移植和互操作提供了一套前景光明的规范,并为开放式系统的研究提供了一个很好的系统实现框架。
介绍CORBA的文章已有很多,本文试图能够从结构上简而全的对它进行综述,并简单介绍了相关产品和CORBA环境下的程序开发过程。
第一章CORBA 体系结构第1.01节CORBA规范概述CORBA (Common Object Request Broker Architecture)公共对象请求代理架构,是国际对象管理组织(Object Management Group OMG)制定的分布对象计算规范,目前最新版本为3.0(于1999年11月发布),目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性,实现多厂商网络环境中应用的互操作;OMG组织是一个超过750名成员的国际组织,它包括信息系统厂商,软件开发者和用户。
自1989成立以来,OMG组织一直在促进软件开发中的面向对象技术的理论与实践,该组织的合同包括建立业界的指导方针与对象管理规格说明,以提供应用开发的公共框架。
主要目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性。
遵循这些规格说明有可能开发出一种跨越所有主要硬件舞台和操作系统的异构应用环境。
OMG组织的目的是通过建立对象管理体系结构来发展对象技术并引导其发展方向。
CORBA是一个关于分布对象平台架构的标准化规格说明,目的是实现多厂商网络环境中应用的互操作。
CORBA实现允许应用软件之间的彼此通信,而不必顾及这些应用软件的位臵是谁设计的,及它们是用什么语言实现的等问题。
CORBA标准第一版,CORBA1.1是于己于1991年推出的。
它定义了CORBA接口定义语言(IDL)及应用编程接口,允许客户在CORBA通信设施的顶部与服务器对象进行交互。
这些通信设施具体包含在所谓对象请求代理(ORB)。
IDL提供了说明构件接口的统一的方法,它独立于符合接口要求的实现构件的编程语言。
1994年下半年发布了CORBA 2.0版。
它的主要增强点:给出了关于不同厂商ORB之间的互操作协议的规格说明。
1997年8月,OMG组织又发布了CORBA 2.1版。
它包括以下方面的规格说明:互操作性修订,IDL类型扩充,CORBA 映射,Ada映射,及CORE RTF的某些变动。
CORBA标准还处于发展中,OMG组织即将发布CORBA 3.0版。
CORBA 3.0版包括:可重用对象的构件,模块脚本语言规范,支持object-by-value,多个接口,对Java接口的定义语言映射,通过防火墙标准化Internet Inter-ORB协议,及集成分布计算环境的路径映射等。
OMG首先发布了OMA(对象管理体系结构),提出了构件互操作的软总线——ORB(Object Request Broker),并将构件分为三类:公共对象服务(COS)、面向领域的公共设施(CF)和完成具体任务的应用构件。
在其后发布的CORBA1.0和2.0版中OMG对对象模型以及ORB的功能进行了规定。
CORBA规范内容很多,其中与构件实现规范相关的主要内容包括IDL、IR和Component Model。
1. IDLIDL(Interface Definition Language)是CORBA 用来定义对象接口的语言,是客户与服务器之间的一种契约。
通过这个契约,ORB 有效地分离了功能的实现方与使用方,使双方可以用不同的语言实现,可以运行在不同的操作系统上,并且可以运行在不同的结点上。
IDL 本身不是一种编程语言,它独立于任何一种具体的语言之上,但它采用了C++的词法,并尽量与C++的语法兼容,因此易于被编程人员所掌握。
2. IRIR(Interface Repository)是ORB 的构成部分之一,它提供一致的接口定义存储,管理并提供对OMG IDL 所指定对象定义集合的访问。
IR 可以完成提供请求签名的类型检查(请求是否通过D Ⅱ或stub 发出)、帮助检查接口继承图的正确性、帮助提供不同ORB 实现之间的互操作性等工作。
3. Component ModelCORBA Component Modem CORBA 3.0的核心内容之一,该模型的提出是为了使更多的编程人员方便地进行基于CORBA 的软件开发。
CORBA 构件模型主要在构件的事件、属性、定制、组装、包(Packaging)以及构件池(Component Repository)等方面作出规定。
第1.02节 对象管理架构(OMA)其中,CORBA 对象请求代理Object Request Broker(ORB)称为ORB 总线,通过Application Interface 、Domain Interfaces 、Common Facilities 、Object Services 四类接口(服务)来完成客户与CORBA 对象之间的通信,ORB 内核完成对象的创建、实现、定位以及通信机制等;Object Services 是指对总线进行扩展的系统级别服务,共十五种(见第二部分);Common Facilities 是指应用对象直接使用的服务框架;Application Interfaces 是指用户最终使用的商用对象及应用;Domain Interfaces 则面向专用领域。
图1.1、1.2、1.3 描述了它们之间的关系。
对象管理架构(OMA )为OMG 组织将不同标准大规模集成起来的框架OMA 带有对象模型(object model )与称之为参数模型(reference model )的概念性架构。
OMA 中定义了CORBA 四个主要部分:ORB (Object Request Broker )、对象服务(Object service)、公共设施和应用对象。
对象模型把计算实体看作为可标识的对象。
对象通过提供使用环境的服务,封装了状态与行为。
环境由向对象发出请求的客户(client )组成;对象由对象引用(object reference )来标识。
在与对象模型相联系的类型层次结构中,把对象引用作为特殊的类型处理。
除了对象引用外,对象模型也提供了若干种简单类型与类型构造符,包括序列(sequemce ),结构(structure ),联合(union ),及枚举(enumeration )等,后者可用来构造用户定义的结构类型。
OMA 把对象接口与它的实现明确地区分开来。
接口通过操作的集合定义了关于客户的合同,满足此接口的所有实现将为客户提供合适的行为。
对象模型支持这种抽象,它既允许设计者提出公用功能,如公用结构与公用行为,又能通过接口继承性(interface inheritance)增量地加入新的功能。
通过继承把接口中使用的服务与类型传递给后代接口,对象接口可用不同编程语言来实现。
满足特定接口的对象实现可以彼此透明地替换,只要接口保持不变,客户察觉不到实现的变动,也不必为利用替换对象的能力而重编译。
这些特性便于系统逐步适应技术的变动,质量提高或性能要求。
图1.2中参考模型包括概念性架构和一组可重用的功能接口,或一组特定应用的对象实现。
参考模型的主体为对象请求代理(ORB)。
它提供了对象可以透明地彼此交互的标准机制。
这里,客户和服务器对象是本地的还是分布的都是一样的。
而且屏蔽了服务请求格式与内部数据表示的多样性。
参考模型支持4类接口,公共设施,领域接口及对象服务:应用接口是现有应用的接口。
它们的定义不是CORBA标准的一部分。
本标准仅仅规定了接口定义必须遵循的格式及能使用对象与ORB交互的机制。
第1.03节CORBA详细结构图第二章对象服务(CORBAServices)的具体内容第2.01节名字服务名字服务是ORB中的对象定位其它对象的主要方法。
所谓名字就是对象的标识,一个对象与一个名字的联系被称作为一个名字绑定。
一个命名上下文是指一个包含若干名字绑定的名字空间,在其中每个对象名是唯一的。
一个名字绑定总是存在于一个命名上下文中。
一个上下文(context)同样是一个对象,它也可以在一个命名上下文中绑定一个名字。
一个上下文绑定和一个名字绑定的关系如同一个目录和一个文件的关系。
由于上下文绑定的存在可以通过一个序列名来指定一个对象,这一序列名(也可称为复合名)定义了一个对象绑定在一个名字空间的路径。
图2-1-1表示了一个名字空间的例子。
图 2-1-1名字空间实例在图2-1-1中由三个上下文绑定(The world city,Asia,R.P.C)和一个名字绑定(Shanghai)组成了一个复合名。
解析名字(resolve a name)是指在一个给定的命名上下文中找到和一个名字相联系的对象;绑定名字(bindaname)是指在一个给定的命名上下文中建立一个名字绑定。
命名服务是由NamingContext和 BindingIterator两个接口实现的,见下图。
图2-2-2 接口NamingContext和 BindingIterator及其中的方法NamingContext对象包含有若干名字绑定。
通过调用接口NamingContext中bind方法可以把一个对象和一个名字联系起来。
Rebind方法和bind方法类似,只是当一个名字已经和一个对象绑定,它重新以一个新名字和该对象进行绑定。