技术开发 频道

面向对象技术在软件重用和体系结构中的应用

    1.3 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规范的对象都能自动提供其所能支持的接口信息。

    2 分布式对象中间件

    90年代以来,计算技术逐步进入以网络为中心的新时期,用户迫切希望在网络上建立更为丰富的分布式客户/服务器应用;不仅实现数据共享,而且支持知识共享和各类计算资源的共享;并能实现包括整个企业在内的各个层次的的协同工作。

    为适应上述要求,分布对象技术成为分布式计算环境发展的主流方向。其技术特点为:

    1. 主要针对异构环境下的应用互操作问题;

    2. 系统核心的对象管理将客户/服务器模型与面向对象技术结合在一起;

    3. 提供面向对象的API;

    4. 已经成为建立集成框架和软件部件标准的核心技术。

    在此基础上,为解决大型应用系统的集成性与可扩展性之间的矛盾,中间件(Middleware)技术应运而生。

    中间件是软件中介于在应用层和网络层之间的一个功能层次,使应用系统独立于由异构的操作系统、硬件平台与通信协议组成的底层环境。

 

 


    中间件扩展了客户/服务器结构,形成了一个包括客户、中间件和服务器在内的三层结构及多层次结构,为开发可靠的、可扩展的、复杂的事务密集型应用提供了有力的支持。

    中间件可以分为四种类型:

    1. 基于RPC (Remote Procedure Calls) 的中间件。RPC是传统程序设计语言中过程调用的扩展,被调用的对象可以在分布系统中的任何物理平台上。OSF的DCE和SunSoft的ONC+等均属此类中间件。

    2. 面向消息的中间件,支持基于消息传递的进程间通讯方式。这种中间件既适用于客户/服务器模型,也适用于对等网模型,一般比基于RPC的中间件具有更高的运行效率。典型的系统有:SunSoft的ToolTalk、PeerLogic的Pipes和Talarian的SmartSockets等。

    3. 基于ORBs (Obecjt Request Brokers) 的中间件,此类中间件是面向对象应用程序的首选。消息通过ORB进行路由选择,ORB同时处理集成和安全方面的问题。Microsoft的OLE/COM/DCOM和OMG的CORBA均属此类中间件。

    4. 数据库中间件,支持对异构的传统关系数据库的透明访问。现有的此类系统包括Sybase的Open Server、Oracle的SQL Connect和BEA公司的WebLogic等。

    3 基于面向对象技术的应用软件体系结构

    软件体系结构是一个程序或系统的构件的组织结构、它们之间的关联关系以及支配系统设计和演变的原则和方针。一般地,一个系统的软件体系结构描述了该系统中的所有计算构件,构件之间的交互、连接件以及如何将构件和连接件结合在一起的约束。

    研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。针对规模日益庞大、结构日益复杂的应用应用软件,系统模型的设计目标是提高实际应用系统的开放性和集成性,同时兼顾效率。

 
    软件系统的开放性包括数据的开放性、功能的开放性和系统的可扩充性,是否具备良好的开放性基本取决于系统模型。软件系统的集成性是指通过一致的信息描述手段和处理机制将各功能子系统统一到同一个集成环境,集成性的好坏也基本取决于系统模型。软件系统的效率通常包括系统运行的效率和应用开发的效率。运行效率是系统运行时的时空复杂度,而应用开发的效率指开发的难易程度和执行效率。效率大部分取决于系统模型,也与系统的具体实现有关。

    开放的系统模型使得子功能部件的集成易于实现,同时也必然提高应用开发的效率;集成和高效反过来又有利于更好地达到开放的目的。这三者相辅相成,其中又以开放性作为集成和效率的基础,只有开放才有集成,只有开放才有效率。

    针对应用软件系统的开放性,曾先后出现了许多类系统模型,代表了应用软件技术与产业发展的不同阶段。各阶段中有代表性的系统模型依次为:以数据为中心的系统模型、以执行为中心的系统模型、面向对象的系统模型、和基于总线的系统模型。

0
相关文章