技术开发 频道

面向对象技术应用:可重用软件组件

   JavaBean主要用于可视化环境,为软件构造工具所利用,但也能通过程序接口直接操纵,Java类库中提供了相应的控制类。

    OMA/CORBA

    对象管理集团OMG (Object Management Group)是一个国际性的软件行业协会,主要宗旨是促进面向对象的方法在软件工程中的应用,以及在面向对象的软件工程方法学的基础上,为大规模并行系统(开放式并行计算)软件的开发与应用制定软件体系结构模型和通用接口规范。

    OMG 于1990年末提出了一个对象管理结构的基准结构OMA (Object Management Architecture)。OMA主要涉及用于面向对象语言、系统、数据库及应用程序框架的统一术语体系,面向对象软件系统的抽象框架和基于面向对象技术的分布式软件系统参考模型等。为了构造上述参考模型,OMA规定了四个方面的标准:

    1. 对象请求代理ORB (Object Request Broker),即关键通讯单元,在不同的应用程序对象之间以高度协同的方式发送消息;

    2. 对象模型,即独立设计的、可移植的抽象模型,可以与其他符合OMA规范的面向对象系统进行通讯;

    3. 对象服务,利用ORB实现基本对象功能,确定对象的逻辑模型和物理存储方式;

    4. 通用组件,包含了适用于很多应用领域的基本功能,这些功能可以通过符合OMA规范的类接口获得。

    OMG 于1991年末提出的CORBA (Common Object Request Broker Architecture),是OMA参考模型中的ORB接口技术规范。这一标准规定了如何定义、创建、调度、引用对象,以及对象之间如何通讯。符合CORBA规范的ORB是典型的中间件,允许Client对象向Service对象发出请求。

    CORBA规范的基本组成如图所示

    

    主要包括:

    · 对象请求代理ORB (Object Request Broker),是CORBA的核心。作为一个软件组件,对象可以通过ORB发出请求并接收响应。在CORBA中,所有的通讯都通过ORB进行,因而无论一个对象是本地的还是远程的,对于与之进行通讯的其他对象来说都是等价的。CORBA并没有规定如何具体实现一个ORB,几乎每一个不同的产品都有其具体的ORB实现。

    · 接口定义语言IDL (Interface Definition Language),是用于描述对象接口的一种高级符号语言。IDL不涉及任何接口的实现细节,所有COBRA系统都根据IDL用某种特定语言来实现接口。CORBA为C、C++、Smalltalk和JAVA制定了规范,ADA95和COBOL的映射规范也正在制定中。IDL描述通常以接口库(Interface Repository)的方式进行存贮。

    · 接口库(Interface Repository),其中包括了所有描述服务对象属性、操作、自定义数据类型及异常处理的IDL定义。

    · 基本对象适配器BOA (Basic Object Adapter),描述了ORB和服务器端应用程序之间的接口。BOA负责调度服务器端应用程序维护的对象,并与服务对象交换消息。

    · 静态请求接口SII (Static Invocation Interface)。SII假设在编译时刻客户对象能够明确了解服务对象的接口,即客户与服务器之间的关系应当是可知的、固定的,服务接口的任何改变都会导致软件系统的重新编译。SII是由IDL描述的。

    · 动态请求接口DII (Dynamic Invocation Interface)是一组与服务器无关的通用接口。与新服务对象及其行为相关的信息可以通过接口库获得,客户程序根据这些信息可以在运行时刻动态构造请求。DII使得开发智能化即插即用的软件系统成为可能,但需要涉及大量CORBA API调用,增加了软件的复杂度。

    总之,CORBA提供了一个集成框架,应用程序只要给出用接口定义语言IDL (Interface Definition Language)书写的界面,就可插入框架,与其他对象协同工作,为在分布式环境下实现不同应用程序即插即用的集成提供了有力支持。

    OLE/COM

    与CORBA一样,Microsoft的OLE/COM是基于分布式对象模型的开放标准,得到多系统软件开发商、独立软件开发(ISV)商和用户的支持。

    OLE实际上是建立在组件对象模型(COM)基础上的一组高层次技术。从基本中间件功能视图的角度来说,COM与CORBA非常相似,同样支持对象的定义、创建、调度、引用及对象之间的通讯,同样提供了接口定义语言(IDL)。

    但是两者之间也存在显著的差异。例如,COM支持由不同程序设计语言或不同编译器实现的对象之间的二进制兼容,以及OLE Automation等。

    服务控件管理SCM (Service Control Manager)集中负责搜索服务对象和在客户与服务器之间建立信道。当客户向某个特定的对象发出初始化请求时,SCM判断包含该对象的服务程序是否已经运行,如否,则通过注册表查找服务程序所在的位置。随后,客户端SCM建立起与服务器端SCM连接的RPC信道;服务器端SCM也进行同样的处理,并在必要的情况下起动服务程序。最后,信道两端的SCM分别将代理程序(proxy stub)载入到客户进程和服务器进程中。

    OLE/COM提供了与CORBA IDL类似的高级描述语言,用于定义COM概念上的接口,即一组逻辑相关的操作或方法。

    OLE/COM结构的另一要素是Automation,允许客户程序动态构造请求(包括方法名、相关参数的类型和取值等),并将请求发送到远端对象。在CORBA中,客户程序能够通过接口库(repository)获取对象接口的相关信息;而OLE/COM则更进一步,任何符合OLE/COM规范的对象都能自动提供其所能支持的接口信息。

0
相关文章