第八章 附录
8.1 CORBA 版本
软件市场中能够见到的CORBA中间件产品很多,但基于不同公司的产品战略以及研发方向,各个产品在服务性能、对高级语言的支持和所依赖的系统平台方面有很大区别。以下是对主要产品在几方面进行了分析(参见表1),可供参考。
主要中间件产品
8.2目前最新的CORBA产品:MICO、ORBacus、ORBacus 3、The ACE ORB (TAO)、VisiBroker、JacORB、omniORB 3、omniORB 4.0 preview、Orbix 2000、BusinessWare、OpenORB、OpenFusion、mico/E、TAO 1.2a (beta)、ORBacus/E、SmalltalkBroker、Orbix/E 2.0、orb2、e*ORB C++ Edition、e*ORB Java Edition
8.3 最新标准CORBA3
CORBA3新特性
术语CORBA3是指一整套规范,这些规范总起来增强了CORBA的性能和可用性。所有这些规范已经被采用,并且几乎所有规范已经由OMG组织作为正式的已经编号的CORBA版本的一部分发布了。在OMG的一个新程序中,这些规范一开始被分为“产前”一类,只有结束对它们的第一次维护修订之后,才会转为“可用”的(也就是,包含在当前已经编号的CORBA版本中的正式的OMG规范)。
CORBA 3 中的规范可以很清析地分为三大类:
• Java和Internet集成;
• 服务质量(QoS)控制;
• CORBA组件体系。
下面将依次介绍这三部分:
1. JAVA和INTERNET集成
下面的规范增强了CORBA与日益流行的JAVA语言及Internet的集成:
可以用值传递的对象
CORBA's language-independent equivalent of Java's serializable,(惭愧,我不知道这句该如何翻译才好,如有会者,请不吝赐教) 值类型为CORBA增加了许多特性,包括Java到IDL的反映射(将在后面提到)和能够把XML文档表示为本地CORBA类型的XML/Value映射。现在,作为CORBA的很好地建立起来的一部分,这个特性已经包含在1999年6月份发布的CORBA2.3标准中,并作为第5、6章 仍然保留在核心CORBA规范中。跟语言相关的方面包含在 各自的语言映射规范中。
Java到IDL的映射
这个映射使得Java RMI对象能够跟CORBA对象一样通过网络进行互操作。它们具有CORBA对象引用,发出IIOP协议。就象CORBA组件模型和企业级JavaBeans 帮助开发人员和公司构建应用组件库一样,本规范将使CORBA组件库和EJBs一起用来构建应用。就象值类型规范一样,Java到IDL的映射也是CORBA 2.3规范的一部分,它可以在语言映射里找到.
可共用的命名服务
CORBA对象引用是CORBA体系的基石。因为计算机可读的IOR(Interoperable Object Reference可互操作的对象引用)是(直到现在)唯一用来连接一个实例并调用它的方法,没有方法来连接一个远程的实例----即使你知道它的位置并且它已经起来并运行着----除非你得到它的对象引用。得到对象引用的最简单的方法是得到一个它的命名服务的引用,但是,如果你连命名服务的引用也没有,怎么办呢?
可共用的命名服务定义了一种URL形式的对象引用:corbaloc,在一个程序里,它可以用来连接到一个远程的地方,包括命名服务。另一种URL形式, corbaname,实际上是通过使用用户加在URL后面的名字调用名字服务返回所指对象的IOR。
例如,一个corbaloc标识符:
corbaloc::www.omg.org/NameService
将确定一个CORBA命名服务,这个命名服务正运转在IP地址对应于www.omg.org域名的机器上(如果我们在OMG运转着一个命名服务的话)。在2000年后期,这个服务被加在了CORBA2.4版本的规范中,在这个规范中,对象的URL定义在第13.6.10节,初始服务引用的配置定义在第4.5.3节。对象复合名字的标准语义的定义在命名CORBA服务的第2.4节。
防火墙规范
CORBA 3规范将定义CORBA用来安全的穿过防火墙的性能。当我们在2001年4月写本文的时候,最初在1998采用的防火墙规范正在进行一次大的修订。
你可以从这儿查看有关修订的过程及下载规范的草案。 修订工作计划在2001年年中完成,当我们在7月份更新本文的时候,快要结束了。
2. 服务质量控制
异步消息和服务质量控制
新的消息规范为CORBA定义了一些异步的、时间无关的调用模式,允许用任何模式来进行静态或动态调用。异步调用的结果可以由轮徇检测或回调取得,这由客户端在原始调用中所用的模式决定。策略可以用来控制调用的服务质量。客户端和对象可以控制排序(按照时间、优先级或期限);设置优先级、期限和生存时间;可以为一个时间敏感的调用设置开始和结束时间;可以控制路由策略和网络路由的跃距计数。消息规范包含在2000年后期发布的CORBA 2.4版本规范的第22章。
最小CORBA,容错CORBA,和实时CORBA
最小CORBA是主要是为了嵌入式和卡片式的系统。这些系统一旦被定下来,烧制到产品的蕊片里,就固定了,它们跟外部网络的交互作用是可预见的——它们不需要CORBA的动态特性,如动态调用接口或者支持它的接口仓库,所以这些没有包含在最小CORBA里。最小CORBA成为2000年后期发布的 CORBA2.4规范的一部分,在第23章中。
实时CORBA标准化了资源控制——线程、协议、链接等等——利用优先级模型来为硬的和统计的实时环境实现可预测的行为。动态调度,还不是当前规范的一部分,已经通过一个单独的RFP的形式加了进来,在我们2001年7月更新此文的时候已经完成工作,进入到最后的投票阶段。 实时CORBA成为2000年后期发布的 CORBA2.4规范的一部分,在第24章中。
容错CORBA标准化冗余软件配置和系统,当它们运转在冗余硬件设备上时,给了CORBA企业应用所依赖的可靠的及健壮的性能。比实时CORBA和最小CORBA更新,这个规范还没有作为一个编号的版本发布。这个规范已经被正式采纳,现在已经完成了它的第一轮修订,你可以从这儿找到这个规范。
3. CORBA组件包
CORBA组件和CORBA脚本
这是OMG自从在CORBA2中定义IIOP协议以来最令人兴奋的事情之一,CORBA组件在开发人员、用户及组件消费者的好处上有了多方面的提高。CORBA组件三个最主要的部分是:
l 一个容器环境,它打包了事务、安全、持久性,并提供接口和事件处理;
l 跟企业级JavaBeans集成;
l 一个能够促使形成CORBA组件软件市场的软件分发形式。
CORBA组件容器环境是持久的、支持事务的和安全的。对编程人员来说,这些功能是在一个比CORBA服务所提供的功能更高的抽象层次上被预打包和提供的。这相当于大大提高了商业程序员的技能:他们不再需要构建事务和安全应用的技能,他们现在可以用他们的才能来生产商业应用,而这些应用自然就具有这些必要的特性。
容器知道组件产生的和消费的事件类型,并提供传送事件的通道。容器也知道它所包含的组件所提供的和需要的接口,并把互相适合的连在一起。CORBA组件支持多接口,该体系支持在它们中间进行引导(navigation)。
企业级JavaBeans (EJBs)将作为CORBA组件发生作用,并能安装在CORBA组件容器中。当然,跟EBJs不同, CORBA组件可以用多种语言来编写并支持多接口。
本规范定义了一个多平台的软件分发形式,包括安装器及基于XML的配置工具,还定义了一个单独的脚本规范,用来把CORBA和组件装配映射到一些已经可用的脚本语言。
CORBA组件模型现在正处于维护阶段,在结束之前,你可以下载已经采纳的规范。
脚本语言
脚本语言最初是为了从CORBA组件(和企业级JavaBeans)中动态地装配应用,现在用来访问CORBA客户端和对象。对组件装配的扩展将跟随CORBA3.0中的CCM。CORBA支持到两种脚本语言的映射:一个到Python,另一个定义了一种 针对CORBA的脚本语言。它们已经正式发布,但是因为它们在OMG的语言映射的书里,而不是在CORBA的书里,所以没有CORBA的发布版本。
结论…
经过OMG组织成员十年的共同努力,基本的CORBA架构已经完成,并且在成千上万的地方一直应用着。CORBA3的最初绑定的扩展为OMG组织建立的体系带来了易用性和精确地控制。这些扩展保证了CORBA在将来的计算机世界中的作用。