过河的卒子

我们都是过了河的卒子,不能回头!!!
OMG CORBA构件技术体系(1)

1.    CORBA概述

 

对象管理集团OMG Object Management Group)是一个以制定实用的分布式对象技术及其对象管理规范为任务的工业标准化组织,OMG 的基本目标是建立应用系统的通用集成框架,在分布异构的环境上实现基于对象软件的可重用、可移植和互操作,由 600 多个信息系统厂商、软件开发商和用户组成的非盈利性国际组织,成立于 1989年,OMG 制定规范的情况:

1990 年发布了OMA 对象管理体系结构

1992 CORBA 1 .0

1996 CORBA2.0

1998 2 CORBA2.2

1999 CORBA3.0 使CORBA 进入构件化的体系结构

CORBACommon Object Request Broker Architecture)规范基于抽象的对象模型的分布式对象标准,在分布式软件总线支持下,实现分布式异构环境下的面向对象软件构件之间的通信与系统集成,是表达应用系统、应用构件之间有效通讯的连接技术。

CORBA定义的分布式计算的高层协议,位于 ISOOSI 七层模型的应用层,它面向对象的方式以隐藏不同编程语言、操作系统、对象位置等之间的差异. CORBA 面向对象的方法使不同类型的实现在同一层上互操作.它采用了 OMG IDL 接口定义语言进行具有可移植性的接口定义

1CORBA规范的体系结构模型

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

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

对象服务OS)。它是一个服务集合,用于支持使用和实现对象的基本功能。建立任何分布应用都需要对象服务,它经常独立于应用域。例如,生命周期服务定义了建立、删除、拷贝和移动对象的转化,但不说明对象在一个应用中是怎样实现的。对象服务规范包含在CORBA服务的公共对象服务规范(COSS)中。

通用设施CF)。它是一个面向终端用户应用程序的服务集合,例如,一个系统管理或电子邮件设备能被划分为一个通用设施。

应用对象AO)。它是单个的供应商用于控制接口的产品。应用对象遵从传统的应用观念,因此它们不是由OMG来标准化的。应用对象构成了关系模型的最高层。CORBA规范的关系模型如图1所示:

1  CORBA规范的关系模型

 

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

2CORBA规范中的基本概念

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

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

请求。客户通过构造一个请求来要求得到服务,在CORBA规范中请求方被称为客户。在请求中要指定提供服务的对象实现、执行的操作、操作上下文及该操作所用到的参数。对象引用。这是用来指定对象的标识符称为对象引用,一个对象可有多个对象引用,但一个对象引用仅对应于唯一一个对象。

对象实现。在CORBA规范中,服务提供方称为对象实现,它使用界面来描述在它上面可执行的操作。

方法。在对象实现中描述的某一操作对应的可执行代码称为方法。使一个方法执行叫做方法激活。

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

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

ORBCORBA规范的核心,提供了许多机制,这些机制用于接收请求、定位请求的对象实现,或用于准备对象实现及与组成请求的数据通信等。客户所看到的界面完全与对象的位置无关,也与它所实现的编程语言无关。对象请求代理的体系结构。见图2所示。

如图2所示,体系结构由单个ORB由动态调用界面(DII)、IDL桩、ORB界面、静态IDL框架、动态框架界面和对象适配器组成,它们均给出了一组界面来支持应用对象。其中IDL桩、动态调用界面、ORB界面(由ORB内核提供)可为客户方使用,称为客户界面;IDL框架、动态框架界面、对象适配器、ORB界面可为对象实现方使用,称为对象实现方界面。

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

2 ORB体系结构

 

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

不同的ORB可以做不同的实现选择,同时IDL编译器、库和不同的对象适配器提供了一套服务给客户。可以有多个ORB实现,这些实现对对象引用有不同的表示方法,而且有不同方式去执行调用。客户可以同时访问两个被不同ORB实现管理的对象引用。当两个ORB一起工作时,这些ORB必须能区别它们的对象引用这不是客户的责任。

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

4) 客户界面和对象实现界面的实现方式

4.1) 客户方界面实现方式客户方界面由IDL桩、动态调用界面、ORB界面组成,客户通过这些界面可以得到ORB及对象实现方提供的服务。客户通过ORB访问对象服务方的方式见图。客户通过访问对象引用和掌握对象的类型及所需执行的操作而创建一个请求,它通过调用相应于对象的专门的桩子程序或通过动态创建请求而启动一个请求。用于调用一个请求的动态界面和桩界面能满足相同的请求语法,信息的接收者不必指出请求是通过哪种方式被调用的。

3 客户通过ORB访问对象服务

 

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

IDLIDL桩表示对于一个对象上的OMGIDL定义操作的存取,它定义了客户如何激活相应的服务。IDL桩由IDL编译器编译具体的IDL界面而产生的。当客户方程序向它发出请求时,它通过与ORB内核的私有界面向ORB内核发出调用请求。这种静态调用方式只有在编译时,IDL界面是已知的情况下才是可行的。与此相反,如果运行时才知道对象实现方,就要使用动态调用界面去动态构造请求。

动态调用界面DII)。界面也允许对象调用的动态创建,动态调用界面不是调用对指定对象上进行特殊操作的桩子程序,而是一个客户通过一个或多个调用指明被调用的对象,要执行的操作和所调用操作的参数等。这是在某些特殊应用下,客户在运行时发现服务,获取界面,动态构造请求,从而使客户方调用该对象实现提供服务。客户通过函数create/request来动态创建一个ORB请求,但实际的调用是由函数invokesendget response完成的。invoke是正常的请求调用,操作结束时返回;send函数为延迟同步操作,请求发出后立即返回,去执行下一步操作。get/response用于获取操作执行情况。

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

4.2) 对象实现方界面实现方式

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

4 ORB访问对象实现

 

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

静态IDL框架。静态IDL框架是由IDL编译器产生的ORB中调用对象实现的界面。通过它,可以用ORB调用对象实现中的方法,对象实现根据该界面给出具体的实现例程。IDL框架的存在并不意味着有相应的客户IDL的存在。而ORB也可以不使用IDL框架来进行对象实现方法的调用,而使用对象适配器来调用方法。特殊的语言映射可以依靠对象适配器来实现,因为它上面有到对象实现的界面。

动态框架界面(DKI)。动态框架界面是允许动态处理对象调用的界面,即:不是由与具体操作相关的轮廓来访问对象实现,而是由一个提供操作名和参数的界面,用一种类似于动态调用界面的方式来访问对象实现。客户桩或动态调用界面都可以调用动态框架界面。而动态框架界面的基本思想是在指定对象上,让ORB调用同一上调子程序DIR(动态实现子程序),实现所有的请求,而对象实现仅需根据DIR来给出具体的实现例程。

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

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

5) IDL及其到编程语言的映射

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

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

5.2) OMG IDL到编程语言的映射

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

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

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

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

6) ORB间的互操作

由于CORBA1.0的推广使用,出现了性能指标差别很大的多种ORB产品,为了让它们能共存于一个分布式环境下,并能交互操作,CORBA2.0增加了ORB互操作规范。

ORB互操作规范中引入了两个概念——ORB服务和ORB的域。所谓域是指这样一个范围,在其中的对象具有公共的特征,服从相同的规则。ORB间的互操作机制就是为不同实现的ORB能共存于同一环境下,而提供的相互识别和转换的机制。从策略上,它分为间接和直接两种桥接机制,而从实现层次上,它可分为线内桥接和请求层桥接两种桥接机制:线内桥接是指在ORB内部执行必要的转折和代码映射;请求层桥接是指在ORB之外执行请求转换和代码映射。为了实现ORB间的互操作,CORBA规范还定义了GIOP协议和IIOP协议。GIOP协议用于规定在ORB间通信的标准传输语义和消息格式集,而IIOP协议用于指明如何使用TCP/IP连接来交换GIOP消息,它是一个用于Internet上的标准交互协议。把ORB互操作规范加入ORB体系结构中,会引起ORB内部执行畸制发生一些改变。

7) CORBA规范的应用前景

随着CORBA规范的推出和不断完善,世界上有许多计算机供货商和科研人员对CORBA规范进行深入细致的研究和具体的实现,当今基于CORBA规范的产品越来越多,其中著名的有以下三种:

(7.1)VisigenicVisiBroker 其中VisiBrokerforJava是用Java编写的CORBA 5.0 ORB,它是一个用于建立、管理和开发分布开放的跨多个平台互操作的Java应用程序的开发工具。VisiBrokerforC++是一个完善的CORBA 5.0 ORB实现,它是一个开发工具,用于建立、管理和开发分布开放的跨多个平台互操作的C++应用程序;VisiBrokerNamingService分别用C++Java实现了CORBA命名服务规范,这样开发人员可以在运行时注册对象名。VisiBrokerEventService分别用C++Java完全实现了CORBA事件服务规范。各种VisiBroker产品可以运行在Windows95,WindowsNTUnix等多种平台上。

(7.2) DigitalObjectBroker 它完全实现了CORBA 1.1规范,包括静态IDL桩、动态界面调用、静态IDL框架、动态框架调用、界面和实现仓库等,它可以运行在多个平台上,并实现了IDL语言到C语言的映射。

(7.3) IBMDSOM IBMDSOM基于其SOM之上,SOM以一种库工具箱的形式提供。它可以用来方便地创建应用需要的二进制类库。DSOM提供了一个分布式框架,使用SOM工具箱来实现ORB。随着网络分布式技术的发展,基于CORBA的产品越来越多地被应用,CORBA标准解决了不同CORB 产品间的多样性问题及它们之间的互操作问题。

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

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

CORBA规范(版本2.3.1)内容

 

第一部分:CORBA CORE

第一章:对象模型,描述CORBA环境中的计算模型

第二章:CORBA 综述,描述ORB结构,以及接口、实现信息

第三章:OMG IDL 词法与语义,描述 OMG IDLIDL被用于描述客户对象调用、对象实现提供的接口

第四章:ORB 接口,定义ORB中不依赖于对象适配器的功能接口

第五章:值类型语义,描述通过值传送对象的语义。

第六章:抽象接口语义,解释一种抽象接口,它提供了延迟至运行时刻决定对象由引用还是由值传送。

第七章:动态调用接口(DII, 客户端接口允许动态创建并发出对象的请求。

第八章:动态骨架接口(DSI, 服务器端接口,可以从ORB向对象实现发出请求, 该实现体不具有它所实现对象类型的编译知识。

第九章: Any Values的动态管理,描述动态Any Values 的接口。

第十章:接口池,描述ORB的一个组成部分,它管理并提供对对象定义集合的访问。

第十一章:可移植对象适配器(POA),定义一组IDL接口,实现体用它们访问ORB功能。

第二部分:CORBA 互操作

第十二章:互操作综述

第十三章: ORB 互操作体系结构

第十四章:建立ORB间互操作的桥

第十五章: General Inter-ORB ProtocolGIOP

第十六章: DCE ESIOP - Environment-Specific Inter-ORB Protocol (ESIOP)

第三部分:CORBA 协作

第十七章:协作体系结构

第十八章: Mapping: COM and CORBA

第十九章: Mapping: OLE Automation and CORBA

第二十章:与非CORBA 系统互操作

第二十一章: Interceptors

posted on 2008-11-30 11:23  过河的卒子  阅读(386)  评论(0编辑  收藏  举报