摘 要: 给出一个支持CACD开发的系统组件平台。该平台引入了组件化的反射中间件技术,利用其内省与自适应的特性,充分支持了该平台的实现。
关键词: CACD技术 CSCW技术 组件 反射中间件
CSCW(Computer Supported Cooperative Work)是一门新兴学科,它的研究目标是利用网络和多媒体技术,使设计者之间能够克服时空阻碍,形成一种“面对面”和“你见即我见”的分布式协同设计模式。CSCW的应用范围很广,包括:军事应用、工业应用、协同计算机辅助设计、医疗应用等。其中计算机辅助协同设计CACD(Computer Aided Cooperative Design)是一个新的研究方向,它是由CAD技术与CSCW技术结合形成的[2]。
由于CAD软件具有数据量大、数据结构和交互流程复杂、对象关系繁多等特点,且传统的CAD系统存在着设计和实施周期过长,对于需求变化适应性差等问题,因此设计一个具有良好扩充性、灵活性、开放性、可定制能力的CACD协同开发环境具有重要的意义。
1 中间件技术
中间件是处于应用软件和系统软件之间的一类软件,它独立于硬件或数据库厂商(处于其产品的中间,实现其互连)。分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于C/S操作系统之上。管理计算资源和网络通信。中间件是位于操作系统和应用软件之间的通用服务,其主要作用是用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够平滑地运行于不同的平台上[7]。中间件往往是把一组服务模块集成在一起,构成一个平台(包括开发平台和应用平台)。
2 组件化的中间件平台的体系结构
尽管中间件具有诸多优点,但在应用中也存在一些问题。多数流行的中间件服务使用专有的API和专有的协议,使得应用比较单一。这些中间件只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用还要承担相当大的风险,随着技术的发展往往还要重写自己的系统。也就是说,目前的各种中间件在设计原则与实现上还存在着一定的距离,导致了在满足用户新需求的同时各种中间件平台越来越庞大。然而,中间件平台的扩展意味着规则的增多,这导致了用户掌握和利用它的困难性的增加。所以需要对中间件平台引入良好的封装技术,将其复杂的规则和实现方法隐藏起来,而只对外提供良好的接口。这种技术即为组件化的中间件技术。
软件组件,也可以称为软件构件,是一种相对独立而又能够被替换的系统一部件,可以被独立使用。软件组件是由系统开发人员和最终用户以外的第三方提供的。软件组件应不依赖于某一特定系统,它可以被升级的组件代替,并且具有实际的功能意义。组件的这种特点对于CACD技术的开发具有很强的优势。一个设计良好的软件构件可以将其内部极具智慧的实现部分隐藏起来,以起到保护作用,且构件不依赖于构件供应方所拥有的工具和知识,不同来源的构件应该可以用一个第三方的整合工具装配起来。组件是一个独立部署的单元,是构成中间件的基石。本文提出一个组件化的中间件平台,该平台采用分层的体系结构,见图1。
平台分为应用层和核心层两个部分。应用层由多个应用构成,每个应用都是一个组件,面向不同的服务内容,如任务管理、用户管理等。实际上,每个应用都由与应用相关的数据、处理这些数据的方法以及负责显示和控制的界面等组成。每个应用要能够在协作的环境下工作,就必须依赖于核心层。核心层构建在流行的网络协议(如TCP/IP协议簇)上,专门负责数据共享、访问控制、并发控制、事件收发和处理以及网络通信等内容,是协作的管理、控制和执行部分,可以被看作是一个中间件。核心层分为六层,其中网络通信层负责向网络接收和发送数据;数据分离层负责各种数据的调用、收集、管理与分离等操作(CAD设计过程中会产生大量的数据);协作感知层负责确定每个事件的收发目标和范围;事件处理层负责对接收到的远程事件进行处理;多用户层分为二个子层,分别负责访问控制和并发控制的管理与检测;协作适配层负责对应用层的共享数据和对象进行摘要和映射。

应用层和核心层的合作是通过事件流连接在一起的。以流入事件流为例说明:首先由网络通信层接收事件,由数据分离层负责数据的处理,然后由协作感知层确定正确的操作目标;事件处理层在调度访问控制和并发控制检测之后执行相应操作。这里值得注意的是:操作是由事件处理层负责调度并执行的,但其内容是由应用层提供的。
3 支持平台自适应性的反射式中间件设计
经过研究和实验发现,反射中间件技术对于事件流处理和自适应机制的支持有非常好的特性。即采用了本文反射中间件技术。
3.1 反射中间件的概念
反射中间件(Reflective Middleware)是一个简单的中间件系统,它提供了关于自身行为的表示,这种表示可以被检查和调整,且与它所描述的系统行为是因果相联的。因果相联,意味着对自表示(self- representation)的改动将立即反映在系统的实际状态和行为中(这也是“反射”一词的由来)[5]。
就如在传统面向对象编程中对象代表问题域中的实体一样,系统的自表示也可用其他对象来表现,这类对象又称为元对象(meta-object)。这样,一个反射系统就分为基层和元层二层[4]。元对象的计算(元计算)用于观测和修改它们的指示物(即所代表的对象)。元对象捕获指示物的行为,然后进行元计算,替换或是封装指示物的行为。当然,元对象自身也可由其他对象来表示,从而构成二重元对象(meta-meta-object)的指示物。以此类推,就可构成一种多层结构的反射系统。基层对应用领域中的实体进行计算,而元层中的元对象对其相邻低层执行计算。
每一次反射计算可以被分为二个逻辑部分:计算流上下文切换和元行为。计算从基层的计算流开始,当基层实体执行某个行为时,该行为被元实体捕获,同时计算流上升到元层(称之为换上操作),然后元实体执行其元计算。当允许基层实体执行时,计算流又返回到基层(称之为换下操作)。中间件的反射视图如图2所示[4]。

3.2 反射中间件的设计
本文提出的开发平台的基础是组件化的中间件平台。平台的每个层次都可以看作一个组件库,用以提供大量原始组件从而构成复杂的服务,包括底层的通信协议、系统组件,如过滤器、事件分发器和适配器等;管理组件如调度策略、队列排队策略和QoS管理。在这些原始组件基础上可以构造更大粒度的组件。上文提到的反射技术要求整个系统的实现开发并不具体到每个组件的实现,这对传统软件组件技术是一个很好的补充,它使组件化的系统更加灵活,更具智能化。本文提出的开发平台采用的正是这种具有自适应能力的反射中间件。
组件化编程必须同时在基层和元层同时展开。确切地说,每个组件都必须有一个与之相连的元空间,通过这个空间,可以支持对组件基础设施框架的内省和适应。而且这个元空间必须由若干元空间模型组成,每个模型将描述元层中彼此互相独立、互不相关的方面。这样做的好处是对于系统的不同侧面,利用分散注意力的原则,从而简化了元空间所提供的接口。因此,不难想象,中间件平台的一个组件可以由若干个相互独立的元对象组成,通过每个元对象可以使组件不同的侧面具体化,而不会相互影响。运用这个原则将会大大降低设计和实现中间件元层的复杂度,这也就是本平台的元空间模型。
在本平台中提供了二种机制管理这种自适应过程。
(1)自适应方法。允许编程人员通过提供与同一个方法相关联的不同属性的多种实现方法,而从应用中得到适合的方法。在系统运行期,最有效的方法可以由相关联的选择器得到。一般自适应方法在一个应用的功能性代码本身不得不去适应环境的变化时会被使用到。
(2)反射方法。允许对基对象进行运行时环境的配置。在这种条件下,元层次被称作元空间,它是一组管理与应用程序内部细节相独立的通用服务的集合。当一个反射方法调用一个基对象时,与该基对象相关联的元空间也被调用执行响应的操作。在该方法中,访问元空间借助于一个进入点——反射器——对元空间中的各个层次对象进行跟踪。对于元空间的调用是在基层次代码的执行之前或之后进行。系统将会在环境演进时决定如何在执行一个应用时使用反射方法。
4 结束语
随着IT技术的飞速发展,计算机产品设计工作模式也有了很大的变化,面向集成和协作的计算机辅助设计是高科技发展的必然趋势。在计算机学科中,反射技术的研究和应用已从最初的编程语言扩展到窗口系统、操作系统和分布式系统等领域,对于中间件中的反射技术的应用研究才开始不久,但已引起各国学者的研究和注意,并已提出一些较好的反射中间件实例模型。本文将反射中间件技术的设计思想应用到计算机辅助协作设计开发平台上,并采用组件化处理。经过研究实践证明,该平台具有较好的可扩展性、自适应性、灵活性和可定制性。随着Internet的应用和组件技术的普及,中间件厂商在IT行业的角逐越来越激烈,反射中间件技术会不断得到发展和完善,并能在协作设计领域中起到举足轻重的作用。
参考文献
1 王云鹏,雷毅,潘翔等.基于Web Services的计算机辅助协同设计体系结构.计算机应用,2004;21(2)
2 史美林,向勇,杨光信.计算机支持的协同工作理论与应用. 北京:电子工业出版社,2000
3 kiczales G.Beyond the black box:Open implementation. IEEE Software,1996;13(1)
4 杨思忠,刘锦德,骆志刚.反射中间件的研究.小型微型计算机结构,2002;23(5)
5 Coulson G.What is Reflective Middleware.http://dsonline. computer.org/middleware/RMarticle1.htm,2004
6 Raverdy P G,Gong L V,Lea R.DART:A Reflective Middleware for Adaptive Application.http://www.iturls.com/TechHotspot/TH_4e.asp,2004
7 张海腾,李定立.使用中间件构筑三层结构.电脑开发与应用,2003;16(3)
