一、概述
CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。
CORBA经过近十多年的发展,已逐步走向成熟,并成功地应用在我国许多大型的软件系统中,由此产生了对掌握CORBA技术的软件开发人员的大量需求。在此,我们应广大读者的要求组织了本次讲座。
二、CORBA产生的背景
近年来,随着互联网技术的日益成熟,公众及商业企业正享受着高速、低价网络信息传输所带来的高品质数字生活。但是,由于网络规模的不断扩大以及计算机软硬件技术水平的飞速提高,给传统的应用软件系统的实现方式带来了巨大挑战。
首先,在企业级应用中,硬件系统集成商基于性能、价格、服务等方面的考虑,通常在同一系统中集成来自不同厂商的硬件设备、操作系统、数据库平台和网络协议等,由此带来的异构性给应用软件的互操作性、兼容性以及平滑升级能力带来了严重问题。
另外,随着基于网络的业务不断增多,传统的客户/服务器(C/S)模式的分布式应用方式越来越显示出在运行效率、系统网络安全性和系统升级能力等方面的局限性。
为了解决分布式计算环境(DCE,Distributed Computing Environment)中不同硬件设备和软件系统的互联,增强网络间软件的互操作性,解决传统分布式计算模式中的不足等问题,对象管理组织(OMG)提出了公共对象请求代理体系结构(CORBA),以增强软件系统间的互操作能力,使构造灵活的分布式应用系统成为可能。
正是基于面向对象技术的发展和成熟、客户/服务器软件系统模式的普遍应用以及集成已有系统等方面的需求,推动了CORBA技术的成熟与发展。作为面向对象系统的对象通信的核心,CORBA为当今网络计算环境带来了真正意义上的互联。
三、CORBA的发展历程
1、对象管理组织(OMG)简介
OMG成立于1989年,作为一个非营利性组织,集中致力于开发在技术上具有先进性、在商业上具有可行性并且独立于厂商的软件互联规范,推广面向对象模型技术,增强软件的可移植性(Portability)、可重用性(Reusability)和互操作性(Interoperability)。该组织成立之初,成员包括Unisys、Sun、Cannon、Hewlett-Packard、Philips等在业界享有声誉的软硬件厂商,目前该组织拥有800多家成员。
2、CORBA主要版本的发展历程
1990年11月,OMG发表《对象管理体系指南》,初步阐明了CORBA的思想;
1991年10月,OMG推出1.0版,其中定义了接口定义语言(IDL)、对象管理模型以及基于动态请求的API和接口仓库等内容;
1991年12月,OMG推出了CORBA 1.1版,在澄清了1.0版中存在的二义性的基础上,引入了对象适配器的概念;
1996年8月,OMG基于以前的升级版本,完成了2.0版的开发,该版本中重要的内容是对象请求代理间协议(IIOP,Internet Inter-ORB Protocol)的引入,用以实现不同厂商的ORB真正意义上的互通;
1998年9月,OMG发表了CORBA 2.3版,增加了支持CORBA对象的异步实时传输、服务质量规范等内容。目前,宣布支持CORBA 2.3规范的中间件厂商包括Inprise(Borland)、Iona、BEA System等著名的CORBA产品生产商。
2002年8月,CORBA规范3.0终于出来了,在CORBA3.0规范中去掉了MiniCORBA和实时CORBA。
四、CORBA体系结构
CORBA规范充分利用了现今软件技术发展的最新成果,在基于网络的分布式应用环境下实现应用软件的集成,使得面向对象的软件在分布、异构环境下实现可重用、可移植和互操作。其特点可以总结为如下几个方面:
1、引入中间件(MiddleWare)作为事务代理,完成客户机(Client)向服务对象方(Server)提出的业务请求(引入中间件概念后分布计算模式;
2、实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置;
3、提供软总线机制,使得在任何环境下、采用任何语言开发的软件只要符合接口规范的定义,均能够集成到分布式系统中;
4、CORBA规范软件系统采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。
在以上特点中,最突出的是中间件的引入, 在CORBA系统中称为对象请求代理(ORB,Object Request Broker)和采用面向对象的开发模式。
对象模型是应用开发人员对客观事物属性和功能的具体抽象。由于CORBA使用了对象模型,将CORBA系统中所有的应用看成是对象及相关操作的集合,因此通过对象请求代理(ORB),使CORBA系统中分布在网络中应用对象的获取只取决于网络的畅通性和服务对象特征获取的准确程度,而与对象的位置以及对象所处的设备环境无关。
CORBA体系的主要内容包括以下几部分:
(1) 对象请求代理ORB(Object Request Broker):负责对象在分布环境中透明地收发请求和响应,它是构建分布对象应用、在异构或同构环境下实现应用间互操作的基础。
(2) 对象服务(Object Services):为使用和实现对象而提供的基本对象集合,这些服务应独立于应用领域。主要的CORBA服务有:名录服务(Naming Service)、事件服务(Event Service)、生命周期服务(Life Cycle Service)、关系服务(Relationship Service)、事务服务(Transaction Service)等。这些服务几乎包括分布系统和面向对象系统的各个方面,每个组成部分都非常复杂。
(3) 公共设施(Common Facilitites):向终端用户提供一组共享服务接口,例如系统管理、组合文档和电子邮件等。
(4) 应用接口(Application Interfaces):由销售商提供的可控制其接口的产品,相应于传统的应用层表示,处于参考模型的最高层。
(5) 领域接口(Domain Interfaces):为应用领域服务而提供的接口。如OMG组织为PDM系统制定的规范。
CORBA技术是先进技术发展的结果,它将面向对象的概念揉合到分布计算中,使得CORBA规范成为开放的、基于客户/服务器模式的、面向对象的分布计算的工业标准。整个CORBA平台的组成结构如下图1所示:
图1
在CORBA体系结构的中心部分是对象请求代理程序(Object Request Broker,ORB),它作为一个"软件总线"来连接网络上的不同对象。在客户端,ORB提供一个发送操作调用的接口;而在服务器端,ORB提供一个将操作调用传输到服务器的API。ORB的任务是定位一个合适的服务器,并且通过一个对象适配器(Object Adapter,OA)将操作调用传送给服务器。OA的目的是:给框架发送方法,调用并且支持服务器对象的生命周期(例如,对象的建立和删除)。老版本的CORBA规范包含一个基本对象适配器(Basic Object Adapter,BOA),就像它的名字一样,BOA是十分简单的。它定制的也不是很好,它禁止CORBA应用程序的可移植性。作为CORBA标准的版本2.2,BOA被可对象适配器(Portable Object Adapter,POA)所取代。MICO支持BOA和POA。
在客户端,ORB提供一个一般的API,它是一个动态调用接口(Dynamic Invocation Interface,DII)来发送操作调用。在服务器端,OA通过动态框架接口(Dynamic Skeleton Interface,DSI)来传输一个操作调用,它为服务器端镜像DII的行为。一个在客户和服务器之间的静态接口通过一种接口定义语言(Interface Definition Language,IDL)来定义。虽然DII和DSI代表到ORB的一般接口,并且通常被用于桥,但一个IDL规范可以用于产生到ORB的类型安全的、应用特定的接口。
在客户端,客户与ORB之间的静态接口被称为静态调用接口(Static Invocation Interface,SII),在服务器端,这个接口被称为静态框架接口(Static Skeleton Interface,SSI)。一个IDL编译器从一个IDL规范来生成一个存根stub和一个框架skeketon。存根的功能类似于一个客户代理,而框架负责发送一个操作调作给一个真正的此操作的实现程序。
CORBA也定义了两个运行时的数据库。接口存储库(Interface Repository,IR)包含运行时所需要的IDL规范。IR可以查询用户定义的IDL类型的详细情况,从而提供一个基本类型映射机制。第二个数据库被称为实现存储库(Implementation Repository,IMR),并且它包含服务器的详细信息(即,哪一个执行程序需要被放置到哪一个服务器上)。OA需要这个信息来自动激活服务器。
CORBA标准也包含一个ORB之间的协议,它被称为互联网ORB之间的协议(Internet Inter-ORB Protocol,IIOP),它描述了基本的和结构化的IDL类型的在线表示,以及协议所需的协议数据单元。设计IIOP的目的是使它保持简单、可升级并且通作。IIOP使用TCP/IP来在不同的ORB之间传输操作调作和它们的参数。
最后,需要说明一点,CORBA是一个规范而不是一个程序实现。CORBA提供了一个允许在分布式和异构型环境中的应用程序之间进行互操作的框架,但是关于如何实现CORBA标准的特定技术,它并没有给出任何规定。因此,目前在市场上有许许多的CORBA程序实现,如Iona的Orbix,Inprise的VisiBroker。
五、分布式对象技术-- COM、Java和COBRA之间特性比较
目前国际上,分布式对象技术有三大流派-- COBRA、COM/DCOM和Java。CORBA技术是最早出现的,1991年OMG颁布了COBRA 1.0标准,在当时来说做得非常漂亮;再有就是Microsoft的COM系列,从最初的COM发展成现在的DCOM,形成了Micro