计算机应用
Computer Applications
1999年 第19卷　第8期 Vol.19　No.8 1999



分布式对象在软件系统集成中的应用
郑无疾　张建军　朱山风
　　摘　要　分布对象是一些灵敏的软件模块，它们可以位置透明，语言独立和平台独立地相互发送消息。本文主要探讨将分布式对象技术应用中出现的各种问题及其解决方法。
　　关键词　分布式对象，系统集成，组件
DISTRIBUTED OBJECT TECHNIQUES
IN SOFTWARE SYSTEM INTEGRATION
Zheng Wuji　Zhang Jianjun　Zhu Shanfeng
School of Computer Scinece, Wuhan University，Hubei.Wuhan 430072
　　Abstract　Distributed objects are intelligent software models. They can send messages to each other transparently with location language and platform. In this paper, we focus on the questions and solutions related to distributed object technology.
　　Keywords　Distributed object, System integration, Component
1　背景
　　传统的Client/Server结构对Client和Server的角色划分相当清晰，将整块软件切分为二：一部分运行在Client端，一部分运行在Server端，通过如远程过程调用（RPC）机制来实行简单的互操作，协同工作完成任务。
　　随着计算机网络技术的飞速发展，特别是Internet/Intranet爆炸式的规模扩充，各种业务开始在Internet上进行。在这些业务对网络计算提出了更高的要求的情况下，第一代的Client/Server结构开始暴露出不足之处：首先，这种结构对Client和Server的角色分工过于严格，而实际情况是在许多网络应用中，分不清谁是Client，谁是Server，两者界限非常模糊，如网络医疗会诊；其次，基于RPC的互操作直接将Client和Server连接起来，并没有中间机构来处理请求。
2　分布式对象
　　第一代的Client/Server系统多是针对局域网的。在更大的环境中，系统的可伸缩性，异构配置管理和网络监控变得至为重要。由于对象技术有处理复杂系统的能力，人们将对象技术引入了分布环境以解决面临的这些问题［1］。
　　传统的对象可以被看作是封装了数据和作用于这些数据的操作的自包含的实体。这些对象支持的操作（又称为方法）是依赖于对象的内部状态的。对象技术通过将相关数据及操作与系统的其它部分隔离，而使得系统的构建与维护工作变得容易。
　　传统的对象只“驻留”在一个程序之内，在程序编译时也不会分裂成多个实体。与此不同的是，分布式对象可以驻留在一个网络的任何地方，作为一个物理上独立的实体存在并可以被其它对象远程调用。通过中间件（Middleware）包含的标准通讯协议，由各种不同的语言编写和由不同编译器编译的对象可以无缝地进行通信以构成一个完整而健壮的系统。这样的对象框架保证了分布对象间的高度透明的互操作性。
　　分布对象是一些灵敏的软件模块，它们可以位置透明，语言独立和平台独立地相互发送消息，实现请求服务。我们称这些独立的对象模块为组件。在分布对象系统中，分布、协作的单位就是这些对象组件。这些对象组件成分可以是由一些不同的开发者相互独立地使用不同的语言或工具构造的。
3　组件模型
　　组件是自包含，紧包装的软件对象模块。组件用于实施应用领域内的一些有限的服务，它可以和其它组件一起构成完整的应用。组件的粒度可大可小；组件具有良好的接口，同经典对象一样，组件只能通过其接口来访问；组件的实现与其接口是分离的，组件可以使用对象、过程式代码或封装现有的代码实现；组件是系统无关的，可以作为对象跨越地址空间、网络、语言、操作系统和工具来调用；组件还可支持封装、继承和多态等对象特性。总之，组件是可复用的，自包含的，独立与具体应用的软件模块。
　　目前使用较多的组件标准是CORBA（Common Object Request Broker Architecture）和DCOM(Distributed Component Object Model)。CORBA是对象管理集团(Object Management Group, OMG)在其对象管理结构(OMA)框架之下以对象请求代理(ORB)为核心制定的分布对象标准。它定义了对象之间通过ORB透明地发送请求和接收响应的机制，保证了在分布异构环境下对象之间的互操作性［2］［3］［4］。


图1　CORBA 结构
　　微软提出DCOM作为未来的Internet计算的模型。DCOM中主要使用ActiveX组件作为其对象。在将来，Java对象也可能会被作为其对象。和CORBA一样，DCOM中的接口是和功能分开的。


图2　DCOM组件结构
　　微软使用了基于DCE(Distributed Computing Environment)的IDL (Interface Definition Language)来达到这一目的。由于这一IDL和CORBA和DCE的不兼容性，将严重限制这一标准和其它标准的互操作性［1］。
4　软件系统集成
　　根据应用需求，将若干软件系统集成在一起协同工作。如此形成的集成软件系统称之为集成环境，而组成此集成软件的各部分软件系统称之为部分软件，或软部件。以上两种组件标准的提出，为软件系统的集成提供了必要的条件。
　　由于计算机应用软件系统的规模越来越大，复杂性越来越高，从零开始开发这样的软件系统显得很不现实。在组件标准的支持下，我们可以充分利用已有的可用软件资源，包括自己本地开发的，市场上可以买到的以及其它公用软件资源作为软部件进行系统集成，也就是要将这些软件进行“粘结”，实现它们之间的互用和互操作，实现客户化，满足应用要求。随着软件产品市场上各种各样的商品软件的出现和接口的标准化，用系统集成的方法开发应用软件已显得越来越重要了。
　　系统集成涉及到软件系统结构、技术和市场等诸多因素。相比于单纯地为客户进行定制式软件开发，系统集成对软件开发人员的经验和技术有更高的要求。
　　与传统的定制式应用软件开发相比，软件系统集成的人员结构亦将发生新的变化。软件开发人员将分化两部分，一部分是软组件/部件制作人员，另一部分是应用系统分析和装配人员。应用开发人员结构的演变如图3所示。


图3　应用开发人员结构演变
　　目前，在软件工程的各个方面正发生巨大的变化。在可以预见的将来，软件自动化也将对软件的生产过程产生巨大的影响。
　　软件系统集成将面向对象技术作为其基础。但是，软件系统集成的要求更高。如何在已经成为事实的组件标准上建立一个实用的软件系统集成开发流程，在这一方面的作者试图提出一些方法［2］。但是，他们的方法都存在以下方面的不足：
　　只覆盖了整个软件生命周期的部分阶段；
　　没有充分发挥分布对象技术的特点，或不适合于分布对象技术。 
5　下一步的工作
　　建立一个覆盖整个软件生命周期的以分布对象技术为基础的软件系统集成开发模式；
　　根据这一软件系统集成开发模式，对现有的软件开发集成环境结构进行调整。对已有的软部件进行有效管理。
　　CSCW(Computer Supported Cooperative Work)是当前计算机研究中的一个热点。目前，此类工具多用在非计算机领域的创作、研究和开发工作中。我们将尝试把CSCW的概念、方法引入软件系统集成的集成开发环境中。
作者简介：郑无疾　张建军　朱山风　均为硕士研究生。研究方向：分布并行处理系统。
作者单位：郑无疾　张建军　朱山风　武汉大学计算机科学与技术学院　湖北.武汉（430072）
参考文献
　［1］　Scoff.M.Lewandowski. Frameworks for Component-Based Client/Server Computing. ACM Computing Surveys, 1998;30(1)
　［2］　P.J.Houston, F.G.Wilkie, T.J.Anderson. Component-based development. CORBA and RM-ODP. IEE Proceedings Software, 1998；145(1)
　［3］　陈　滢,樊惠娟,王能斌. 分布对象技术综述. 计算机科学, 1997;24(3)
　［4］　汪　芸,兑继英,顾冠群.开放分布式处理的新发展-CORBA规范,计算机科学, 1997;24(3)
　　收稿日期:1999-02-08
