📄 corba技术的新发展.htm
字号:
</font><sup>.</sup><font face="宋体">
回调 在每个调用请求中,客户提供一个额外的对象引用。当ORB收到对象实现的执行结果时,将根据这个对象引用将结果返回给客户方的应用。<br>
</font><sup>.</sup><font face="宋体">
轮询 当客户调用一个操作时,马上就可以获得一个返回数据,该数据就用于单独的轮询。<br>
与原来的延迟同步请求模型不同的是,回调和轮询异步模型可用于使用静态存根的客户。<br>
与时间无关的调用,允许客户请求目前在物理上与客户尚未连接的对象所提供的服务。CORBA消息服务规范通过在GIOP/IIOP中引入“中间路由代理”来完成这一功能。这些代理主要完成存储—转发功能。当目标对象当前不可访问时,代理保存客户发送的消息。当客户和目标对象之间的连接由于异常原因被关闭时,代理也可以保留对象实现的应答。至于请求和应答的生命周期,则由相应的QoS(Quality
of Service)来控制。<br>
在CORBA平台上,ORB向客户方的应用屏蔽了许多与分布式计算有关的细节,如对象的定位、网络连结的建立和请求的发送等。这一点是OMG制订规范的原则之一,它使供应商在实现CORBA规范时有很大的自由度,并使CORBA平台的易用性体现得非常充分。但是,物极必反,过多地屏蔽实现细节使应用难以控制底层ORB所提供的服务的质量。在这一点上,RM-ODP走在了CORBA的前面<sup>[8]</sup>。CORBA消息服务规范通过允许客户说明它所需的服务质量来弥补这一漏洞,如客户可以提出对消息分发、消息排队和消息优先级的要求。CORBA的QoS策略是,让QoS可以在多个层面上发生作用:在ORB层,它影响所有的请求;在线程层,它影响该线程发出的所有请求;在对象引用层,它影响所有发给这一对象的请求。</font></p>
<p></font><font size="4" face="宋体"><strong>4 通过值传递对象</strong></font><font
size="3"></p>
<p><font face="宋体"> 与异步消息服务类似,缺乏通过值来传递对象的能力也是CORBA规范的一大漏洞。CORBA允许数据类型(如整型、结构和数组等)在网络上作为操作参数或者返回结果进行传输。当客户请求某个对象提供的服务时,过去的CORBA版本只允许将目标对象的引用传递给客户,客户根据该引用与目标对象建立连结。由于目标对象不在客户方,所以客户所发出的每个请求和相应的执行结果都必须通过网络进行传输。当客户与目标对象交互频繁时,这无疑会大大增加网络负载,并且影响系统的可靠性。<br>
为克服这一缺点,OMG将在CORBA中引入通过值传递对象的能力,即当客户请求对象的服务时,把目标对象传到客户方。由于对象已经被迁移到客户的本地,访问变得更简单,更快速,并且不会导致网络负载的增加。其实现的基本思路是,在OMG
IDL中增加一个新的构造数据类型——Valuetype。Valuetype与C++和Java中的类定义象似,支持数据成员和操作成员,它可以从其它的Valuetype派生(只支持单继承)。另外,为继承界面中的操作,Valuetype支持界面类型。<br>
当Valuetype作为一个远程操作的参数传递时,在接收方的地址空间中创建一个副本,该副本的标识与原来的Valuetype版本无关,并且在任何一个副本上的操作都不会影响其它副本和原来的版本。Valuetype的语义决定了,它所执行的所有操作都是本地的,绝不会导致请求和执行结果在网络上的传输。这一点是Valuetype与CORBA对象之间的主要区别。<br>
IDL编译器将Valuetype翻译为宿主语言(如C++和Java等)的类。从这个意义上可以认为,支持Valuetype参数的传递也就等于支持通过值传递对象。但是,需要特别注意的是,CORBA3.0不支持通过值传递“真正的CORBA对象”。从前面的内容可知,虽然Valuetype支持界面类型,但它本身不是真正的CORBA对象,而仅仅是OMG
IDL的一个新的数据类型而已。当真正的CORBA对象作为一个远程请求操作的参数时,只能传递它的对象引用。由此可知,CORBA3.0尚未彻底解决有关通过值传递对象的问题。</font></p>
<p ALIGN="left"></font><font size="4" face="宋体"><strong>5 CORBA构件技术</strong></font><font
size="1"></p>
<p></font><font size="3"><font face="宋体"> 构件技术是开发大型应用的一种较新的方法。它引入了一组更彻底的机制,不仅可以用来表示面向对象的软件实体本身,还可以提供一种把软件实体装配成完整应用的方法。构件技术不仅减轻了大型软件的开发负担,降低了大型软件的维护费用,还大大提高了软件模块的可重用性。<br>
CORBA构件模型拟在加强作为服务方的CORBA对象模型,所以CORBA的构件规范主要提供服务器设施。在这种思想上,CORBA的构件模型与JavaSoft的JB(Java
Bean)差别较大,比较类似于EJB(Enterprise Java Bean)。<br>
CORBA的构件体系结构包含四个彼此一致的对象模型:抽象构件模型(Abstract
Component Model)、打包模型(Packaging Model)、配置模型(Deployment Model)和容器模型(Container
Model)。它们相互协作,构成了完整的企业服务器计算体系结构。为更好地理解这几个模型以及它们之间的关系,在分别介绍它们之前,首先给出CORBA构件生命周期中的几个主要活动:<br>
</font><sup>.</sup><font face="宋体"> 创建和实现某个构件;<br>
</font><sup>.</sup><font face="宋体">
把该构件与其它构件一起组合成构件集合(Component Assembly);<br>
</font><sup>.</sup><font face="宋体"> 正确配置构件集合中的构件;<br>
</font><sup>.</sup><font face="宋体"> 执行已经配置的构件。<br>
用于创建、组合、配置和运行构件的工具对CORBA构件体系结构中四个模型有着统一的理解,这是OMG所要求的“一致性”原则。<br>
使用构件的第一步是,通过抽象构件模型创建和实现构件,然后通过打包模型把它们存到CORBA构件描述符(CCD,CORBA
Component Descriptor)文件中。可以把一个CCD文件组合成一个完整的应用,也可以把它装配到构件集合描述符(CAD,
Component Assembly Descriptor)文件中。在CAD文件中,每个构件通过打包模型和配置模型与一个目标名建立连系。配置工具理解CAD文件的含义,它通过配置模型把构件配置到已命名的配置目标上。每个结点上有一个安装对象(Install
Object),它负责安装和激活构件。构件根据容器模型在容器中运行。<br>
为支持抽象的构件模型,CORBA引入了一个新的元类型(Meta Type)——component。CORBA构件的主要特点是,它提供一个或多个CORBA界面。一个构件的实现就是它所支持的所有界面的实现的集合。<br>
打包模型决定CCD文件和CAD文件的内容和结构。打包模型使用XML语言(eXtensible
Markup Language)来描述CCD文件和CAD文件的结构。CCD文件包括执行一个构件所需的所有信息。为表示一个大型分布式应用,可以把多个CCD文件组织到一个CAD文件中。CAD文件维护有关如何配置构件和如何在多个构件之间建立连结的信息。不同的构件可以被指定到不同的已命名结点上,也可以把多个构件指定到同一个地址空间。连结用来说明:哪个实体提供构件和哪个实体使用构件;哪个实体发送事件和哪个实体接收事件。<br>
配置模型包括在CAD文件中描述的分布式模型和实际的配置方法。每个安装对象都支持一个统一的界面,该界面用于接收XML元素(它们用来表示即将配置的构件集合描述符)。为了能使构件在容器中运行,配置模型定义了如何配置和启动它们。<br>
容器模型表示一个特殊的POA模型,它提供服务方的构件运行环境。容器模型定义构件和容器之间的界面,另外它还定义了一个框架,用于支持所需的事务处理、安全和持久化服务。<br>
EJB和CORBA构件是兼容的。EJB可以在CORBA容器中运行;按照一定要求编写的CORBA构件也可以在EJB容器中运行。</font></p>
<p ALIGN="left"></font><font size="4" face="宋体"><strong>6 CORBA 3.0的其它内容</strong></font><font
size="3"></p>
<p><font face="宋体"> CORBA消息服务、通过值传递对象和CORBA构件是CORBA3.0的三个最重要的内容。除此之外,CORBA3.0还包括另外几个规范,以下简述它们的主要功能和优点。<br>
实时CORBA 在成熟的实时技术的基础上,引入一组基本的、可以广泛采纳的CORBA实时技术,如固定的优先级调度和资源控制等。CORBA平台供应商和CORBA用户可以对这组技术进行扩充,以获得更好的实时性能。<br>
嵌埋式CORBA 解决CORBA平台在嵌埋式环境中的应用需求。在这类CORBA平台中,装载的实体的大小是首先考虑的问题。该规范增强了CORBA平台在嵌埋式软件市场中的竞争力。<br>
Java/IDL映射 该规范用于从Java自动产生OMG IDL,它使分布式应用的开发者可以只使用Java语言,所需的界面(用OMG
IDL描述)由相应的工具可以自动产生。<br>
防火墙 说明如何使IIOP信息通过防火墙,它使得基于CORBA的应用可以在保持安全的情况下通过Internet。<br>
DCE/CORBA之间的协作 用于把传统的DCE应用集成到CORBA环境中,它提供了一个DCE平台和CORBA平台在应用层协同工作的方案。该规范为DCE平台上的应用平稳地过渡到CORBA平台提供了基础。</font></p>
<p ALIGN="left"></font><font size="4" face="宋体"><strong>7 结束语</strong></font><font
size="3"></p>
<p><font face="宋体"> 90年代初开始的CORBA规范的制订活动,迄今已进行了近十年。在此期间,它由十分粗糙的CORBA1.0,进步到有一定实用价值的CORBA2.0,现在正在向更完善的CORBA3.0发展。伴随而来,符合CORBA规范的中间件产品也逐渐不断地被推出并开始被广为采用。目前,CORBA规范和中间件产品正愈来愈受信息技术界和产业界的重视,因为未来大型信息系统的集成和大型软件系统的开发将离不开它们所带来的方法、手段和工具。但不能认为,CORBA3.0的出现已使此规范进入了尽善尽美的地步。因为随着人们将其付之实用,必然会发现其中的不足和产生的新需求,所以人们对CORBA规范的的改进和扩充所作的努力将持续下去,延伸至下一世纪。</font></p>
<p align="left"><font face="宋体"><strong>作者简介:</strong> <strong>刘锦德 </strong>教授,博士生导师。主要研究方向:开放系统与中间件技术、网络多媒体和虚拟现实技术。<br>
<strong>苏 森 </strong>博士。主要研究方向:开放系统技术、分布式对象技术和新型网络体系结构。<br>
* 本文的研究工作得到电子科学研究院预研项目资助。<br>
<strong>作者单位:</strong>电子科技大学计算机科学与工程学院 四川*成都(610054)<br>
<strong>参考文献<br>
</strong>[1] OMG. The Common Object Request Broker Architecture and Specification.
1998;7<br>
[2] OMG. CORBA Messaging. Joint Revised Submission. Document orbos, 1998;(5):05<br>
[3] OMG. Object by Value. Document orbos, 1998;(1):18<br>
[4] OMG. CORBA Components. Document orbos, 1998;(10):18<br>
[5] Vinoski,S., CORBA: Integrating diverse applications within distributed
heterogeneous environments, IEEE Communications,1997;14(2)<br>
[6] Vinoski,S., New Features for CORBA 3.0, Communications of The ACM,
1998;41(10):44-52<br>
[7] Krishnan Seetharman. The CORBA Connection. Communications of The ACM,
1998;41(10):34-43<br>
[8] 苏 森.面向对象的互操作技术.电子科技大学博士论文,1998<br>
[9] 苏 森,刘锦德.用于开放式分布处理的中间件的标准和规范.计算机应用,1998;18(9):5-8
</font></p>
</font><p align="right"><font size="3" face="宋体"> 收稿日期:1999-03-10 </font></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -