体验CORBA组件模型CCM:1、引言
摘要:
在比较CORBA2.x与CORBA3.x的基础上,简要介绍CCM引入的新特性。
一、概述
虽然CORBA2.x已成功应用于诸多软件系统的开发,但CORBA2.x仅是一个分布式对象计算模型,并不是一个组件对象模型,OMG组织考虑到CORBA2.x存在的以下问题:
· 缺乏功能分界
在CORBA2.x对象模型中,所有的接口均被视为是面向客户程序的,而缺乏在不同接口实现间进行通信的通用规范。
· 难于扩展对象的功能
在CORBA2.x中,对象只能通过继承(而不是组合)来扩展,应用程序开发人员必须先定义一个IDL接口、实现该接口、并在所有Server中配置该实现。但CORBA IDL的多重继承是有缺陷的,因为有的语言不支持重载;另外,应用程序可能用同一个IDL接口多次发布服务的多个实现或多个实例,但多重继承使得不可能不止一次的发布同一接口,或由客户确定哪一个是最下层的版本。
· 缺乏统一的软件配置、部署规范等
缺乏统一的软件配置、部署规范使得开发人员需要用各自不同的方式,来进行应用系统的初始化及配置、管理,使得整个软件系统变得难于管理与维护。
同时,考虑到组件化中间件的必然趋势,OMG于1999年正式发布了CORBA3.0,CORBA3.0除将IDL2.x扩展到IDL3.0外,还将CORBA组件模型(CCM)引入到了CORBA的世界,使得CORBA成为一种组件中间件技术。
(注:CORBA2.x规范所定义的CORBA仅为一种分布式对象计算技术,有些文章中以CORBA2.x实现为基础讨论CORBA组件技术,并将其与EJB、COM等进行比较,是完全错误的。)
组件中间件技术通过更高层次的抽象定义,弥补了面向对象中间件技术的一些缺陷,定义了组件的虚拟边界、定义了组件的发布方法,以及组件与其他组件和客户端进行交互的方式。同时,组件中间件的定义也支持运行时环境、封装和发布的机制和标准,所有的这些机制和标准都使得了软件组件的重用变得更加简单。通过使用组件中间件,系统可以使用一种“装配的”方式来搭建,而不是使用传统的工程方法,即CORBA2.x中,没有标准支持二进制级别的重用,所有的重用基本是源码级别的,而在CCM中,我们可以以组件为单位在二进制级别上进行实现重用,虽然这在目前来讲还比较困难。
OMG的CCM规范是以EJB为蓝本提出的,并且,为了兼容EJB,CCM还对与EJB的互操作进行了讨论,但目前CCM的商业应用远不如EJB广泛,这一方面与CCM本身的复杂性有关,同时也与CORBA中间件提供商及客户的关注程度有很大关系。
CIAO