




已阅读5页,还剩124页未读, 继续免费阅读
(计算机应用技术专业论文)基于开放实现原理的中间件——反射中间件的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件设计在传统上遵循“黑箱”( b l a c k - b o x ) 抽象的原则,即一个模块应该 呈现其功能而隐藏其本身的实现。f 这一点已成为处理计算机领域中许多重要问 题,如可移植性、可重用性等的基本对策和理念。尽管黑箱抽象有许多优点, 但事实表明,如果模块仅仅显露其功能性界面,有时并不能满足各种客户的不 同需求。当前的中间件,无论c o r b a 、d c o m 还是j a v ar m i 基本上都采用了 黑箱抽象的原则,因此它们都存在灵活性和适应性的先天性不足。但是中间件 所处理的是十分复杂的分布式应用问题,因而常常需要上述的灵活性和适应性。 - 7 r 为此我们建议采用开放其本身的实现( 以下简称“开放实现”) 的思想来 设计中间件。所谓开放实现是一种新的抽象原则,就是将研究对象的下层实现 “开放”出来。采用开放实现的模块呈现着双重界面,即基界面( b a s e i n t e r f a c e ) 和元界面( m e t a i n t e r f a c e ) 。基界面就是这个对象应该呈现的传统界面,它提供 了可对该对象所具功能的访问,而又不暴露其具体的实现。f 元界面则提供了客 户所需的控制,可用于定制该对象的下层实现以使其适合用户的需要。但这种 开放必须是有约束的和有效的。i 反射是指所研究的对象“感知自己、自行推理和作用于自身”的一种能力, 是设计对象的一种技术,也是一种具体实施开放实现的可用技术。开放实现所 强调的是对象与客户之间的关系,而反射所强调的则是对象自身具有的一种潜 在能力。如果要想将一个系统的实现开放出来,就得借助反射的能力将自身有 效地且有约束地开放给客户,以提高系统的灵活性和适应性,并且还可以分离 系统的功能性属性与非功能性属性。7 。 每一次反射计算可以被分为两个逻辑部分:计算流上下文切换和元行为。 经过研究,我们发现中间件的工作过程与反射机制的有类似之处,从而导出了 中间件的反射视图,进而探索出了采用绑定具体化反射模型来设计中间件。在 这个基础上,实现了一个反射中间件的原型r e c o m ,它支持着不同类型( 不同 协议、不同服务质量或其它绑定属性) 的绑定器。随后设计了一个显式绑定协 议,允许用户对特定分布式组件之间的绑定进行改动( 配置) ,包括替换不同的 激活器,以及配置请求级反射层和消息级反射层。依靠反射中间件r e c o m 的 实现,可以满足分布式应用的不同服务质量的要求。 , 应用程序中涉及元界面的部分,称为元程序。f 一个相关的问题就是元程 序的复杂性。造成这种复杂性的一个重要原因是满足非功能性要求的分布式协 议和算法的复杂性。应用程序编程人员,通常不是这些领域的专家,很难去定 制这样的元程序以满足应用的需要。可以考虑由专门的元程序编程人员开发元 程序,然后由应用程序编程人员根据需要选择使用,即将基程序与元程序关联 起来。我们提出了一个基于交易器的关联协议,利用模板和策略实现了交易器 的匹配规则。 文章通过反射中间件r e c o m 的实现,展示了开放实现思想和反射技术在 中间件设计中的可行性和重要价值。 关键字:中间件,开放实现,反射,元界面 i i a b s t r a c t t r a d i t i o n a l l y t h e d e s i g n o f s o f t w a r e a p p l i e s t h e p r i n c i p l e o f “b l a c k b o x ” a b s t r a c t i o n ,t h a t i st o s a y am o d e ls h o u l d p r e s e n t i t sf u n c t i o nw h i l eh i d et h e u n d e r l y i n gi m p l e m e n t a t i o n i t i s a l r e a d ya st h eb a s i cr u l et od e a lw i t hm a n yi m p o r t a n t p r o b l e m si nc o m p u t e r s c i e n c es u c ha sp o r t a b i l i t y , r e u s a b i l i t y , a n ds oo n r e g a r d l e s so f t h e a d v a n t a g e so ft h eb l a c k b o xa b s t r a c t i o n ,f a c t ss h o wt h a ti t i sd i f f i c u l tt om e e t d i f f e r e n td e m a n d so fv a r i o u sc l i e n t si fam o d e lo n l ye x p o s e si t sf u n c t i o n a li n t e r f a c e t h ec u r r e n tm i d d l e w a r e ,s u c ha sc o r b a ,d c o m ,a n dj a v ar m i ,b a s i c a l l yd e p e n d s o nt h ep r i n c i p l eo fb l a c k b o xa b s t r a c t i o n ,s ot h e ya r ei n h e r e n t l ys h o r to ff l e x i b i l i t y a n d a d a p t a b i l i t y h o w e v e r , w h a t m i d d l e w a r ed e a l sw i t hi s c o m p l e x d i s t r i b u t e d a p p l i c a t i o n s ,s ot h ef o r e m e n t i o n e df l e x i b i l i t ya n da d a p t a b i l i t ya r eu s u a l l yr e q u i r e d f o rt h a tr e a s o n ,a p p l y i n gt h ec o n c e p t i o no f o p e ni m p l e m e n t a t i o n t ot h ed e s i g no f n f i d d l e w a r ei s s u p p o s e d t h es o - c a l l e do p e ni m p l e m e n t a t i o ni s an e wa b s t r a c t i o n p r i n c i p l e w h i c hm e a n st o o p e nt h eu n d e r l y i n gi m p l e m e n t a t i o n o ft h er e s e a r c h e d o b j e c t t h em o d e le m p l o y i n g t h eo p e n i m p l e m e n t a t i o np r e s e n t sd u a li n t e r f a c e s ,o n ei s t h eb a s e i n t e r f a c e ,a n dt h eo t h e ri st h em e t a - i n t e r f a c e t h eb a s e i n t e r f a c ei sr e a l l yt h e t r a d i t i o n a li n t e r f a c ea n o b j e c t s h o u l d s u p p l i e s ,w h i c hp r o v i d e s t h ea c c e s st ot h e f u n c t i o n so ft h eo b j e c tw h i l eh i d e st h ei m p l e m e n t a t i o nd e t a i l s o nt h eo t h e rh a n d ,t h e m e t a i n t e r f a c eg i v e st h ec o n t r o lt oc l i e n t s ,w h i c hi su s e dt oc u s t o m i z et h eu n d e r l y i n g i m p l e m e n t a t i o nt oa d a p t t oc l i e n t s d e m a n d s b u tw h a ti si m p o r t a n ti st h a tt h i sk i n do f o p e n n e s ss h o u l d b er e s t r i c t i v ea n de f f e c t i v e r e f l e c t i o ni sa na b i l i t yo fs y s t e mt or e a s o na b o u ta n da c tu p o ni t s e l f r e f l e c t i o n t e c h n o l o g yi s at e c h n o l o g yw h i c hc a nb eu s e di no b j e c td e s i g n ,a n da l s ou s e da sa f e a s i b l e t e c h n o l o g y t o c a r r y o u t o p e ni m p l e m e n t a t i o np r a c t i c a l l y w h a to p e n i m p l e m e n t a t i o ne m p h a s i z e si s t h er e l a t i o nb e t w e e nt h ec l i e n ta n dt h eo b j e c t ,w h i l e w h a tr e f l e c t i o ns t r e s s e si sap o t e n t i a la b i l i t yo ft h eo b j e c ti t s e l f f o ras y s t e mt o e x p o s e i t s i m p l e m e n t a t i o n ,t h e r e f l e c t i o n c a p a b i l i t y i s r e q u i r e d t o o p e n i t s e l f e f f e c t i v e l ya n dr e s t r i c t i v e l yt oc l i e n t s ,w h i c hw i l li m p r o v e t h es y s t e m sf l e x i b i l i t ya n d a d a p t a b i l i t y ,a s w e l la s s e p a r a t et h e n o n f u n c t i o n a lp r o p e r t i e s f r o mi t sf u n c t i o n a l p r o p e r t i e s 1 l i e v e r yr e f l e c t i v ec o m p u t a t i o nc a nb ed i v i d e di n t o t w ol o g i c a l p a r t s ,c o n t e x t s w i t c h i n ga n dm e t a c o m p u t a t i o n a f t e rs t u d y i n gc a r e f u l l y ,w ef o u n dt h es i m i l a r i t y b e t w e e nt h ep r o c e d u r eo fm i d d l e w a r e p r o c e s s i n ga n dt h er e f l e c t i v em e c h a n i s mt h e n t h er e f l e c t i v ev i e wo fm i d d l e w a r ei s d e d u c e d ,a n d am e t h o d a p p l y i n g b i n d i n g r e i f l c a t i o nr e f l e c t i v em o d e l t od e s i g nm i d d l e w a r ei ss u p p o s e d b a s e do nt h i s a p r o t o t y p eo f r e f l e c t i v em i d d l e w a r en a m e dr e c o mi si m p l e m e n t e d ,w h i c hs u p p o r t s d i f f e r e n tk i n d so fb i n d e r st h a tr e p r e s e n td i f f e r e n tp r o t o c o l s ,q u a l i t yo fs e r v i c e ,a n d o t h e rb i n d i n gp r o p e r t i e s t h e na ne x p l i c i tb i n d i n gp r o t o c o li sd e s i g n e dt oa l l o wu s e r s t oa d a p t ( o rc o n f i g u r e ) t h eb i n d i n gb e t w e e ns p e c i f i cd i s t r i b u t e dc o m p o n e n t s ,w h i c h m e a n st o r e p l a c et h eu s e db i n d e r ,o rc o n f i g u r er e q u e s t l e v e l r e f l e c t i v e l a y e r sa n d m e s s a g e l e v e l r e f l e c t i v e l a y e r s d e p e n d i n g o nt h e i m p l e m e n t a t i o n o fr e f l e c t i v e m i d d l e w a r e ,v a r i o u sd e m a n d so fq o s c a nb em e ti nd i s t r i b u t e da p p l i c a t i o n s i na l la p p l i c a t i o np r o g r a m ,t h ep a r tp e r t a i n e dt ot h em e t a - i n t e r f a c ei sr e f e r r e dt o a st h em e t a p r o g r a m ar e l a t e dq u e s t i o ni st h ec o m p l e x i t yo fm e t a p r o g r a m s o n eo f t h ei m p o r t a n tr e a s o n sf o rt h ec o m p l e x i t yi st h a tt h ec o m p l e x i t yo fa l g o r i t h m sa n d d i s t r i b u t e d p r o t o c o l s u s e df o rn o n f u n c t i o n a l r e q u i r e m e n t s i t s d i f f i c u l tf o r a p p l i c a t i o np r o g r a m m e r s ,w h oa r eu s u a l l yn o te x p e r t s i nt h e s ef i e l d s ,t oc u s t o m i z e m e t a p r o g r a m st om e e tt h er e q u i r e m e n t so fa p p l i c a t i o n s s oi t i sd e s i r a b l et ol e ta n o t h e r g r o u p o f p r o g r a m m e r s t o d e v e l o pm e t a p r o g r a m s ,t h e n t h e a p p l i c a t i o n p r o g r a m m e rc h o o s e s t h es u i t a b l e m e t a - p r o g r a m a sn e e d ,a n db i n d st h es e l e c t e d m e t a p r o g r a m t ot h e b a s e - p r o g r a m i n o r d e rt od ot h a t ,w ep r e s e n tab i n d i n g p r o t o c o l b a s e do nat r a d e r ,a n da p p l yt h et e m p l a t ea n ds t r a t e g yt oi m p l e m e n tt h e m a t c h i n gr u l e sf o rt h et r a d e r t h r o u g h t h e i m p l e m e n t a t i o n o ft h er e f l e c t i v em i d d l e w a r er e c o m ,t h e f e a s i b i l i t ya n dv a l u a b i l i t yo ft h ea p p l i c a t i o no ft h eo p e ni m p l e m e n t a t i o nc o n c e p t i o n a n dt h er e f l e c t i o nt e c h n o l o g yi nm i d d l e w a r ed e s i g na r ep e r f e c t l yi l l u s t r a t e d k e yw o r d s :m i d d l e w a r e ,o p e ni m p l e m e n t a t i o n ,r e f l e c t i o n ,m e t a - i n t e r f a c e 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。具我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 签名:j 挡n 啦日期:二卿年月弓7 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅 和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编人有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解秘后应遵守此规定) 签名:扬寻淳 导师签名:杀l 乞弗 c 、 导师签名:l ;聱 ;c 、 日期:。4 年占月弓日 电子科技大学博士伦文:基于开放实现原理的中间件 第一章绪论开放实现 软件设计在传统上遵循“黑箱”( b l a c k b o x ) 抽象的原则,即一个模块应该 向客户呈现其功能而隐藏其自身实现 d i j k s t r a 6 8 】 p a m a s 7 2 。这一点已成为处理 计算机领域中许多重要问题,如可移植性、可重用性等的基本对策和理念 【l i s k o v 8 3 】【i s 0 8 4 【w i n h 7 4 】。尽管黑箱抽象有许多优点,但事实表明,如果模 块仅呈现其功能性界面,那么在重用这些模块时,有可能导致令人感到棘手的 性能缺陷问题。这引发了关于“一个模块到底应该向客户呈现哪些方面”的问 题的研究,并逐渐形成了一个新型的抽象模型【l e v i n 7 5 s h a w 8 0 】 c l a r k 9 0 】 【p a t t e r s o n 9 3 g u y 9 3 c z a l e s 9 4 a 卜一基于开放实现( o p e ni m p l e m e n t a t i o n 或简 称o i ) 的抽象模型 k i c z a l e s 9 2 k i c z a l e s 9 4 b 】 k i c z a l e s 9 6 。 1 1 问题的提出 1 1 1 黑箱抽象 制表应用程序 窗口系统 操作系统 图1 1 制表应用软件的抽象层 首先考虑一个例子:一个电子制表 软件的显示部分。它的实现通常是基于 多层抽象,如图l l 。制表软件是在窗 口系统上实现的,窗口系统则是在操作 系统上实现的,等等直至物理机器。图 中的水平线常被称为“抽象”( 即下层 的抽象) ,也称为“抽象边界”或“界 面”。它对于位处其上的客户隐藏实现 细节的同时,提供了有用的功能。比如这个例子中,窗口系统的抽象提供了创 建窗口、在屏幕上布置、显示窗口、跟踪鼠标等功能;至于窗口在内存中是如 何表示的、鼠标是如何被跟踪的等实现细节问题,则是被隐藏的。 人们传统的抽象的观点是基于下述的三个基本原贝o p a m a s 7 2 】: 抽象可用于对付复杂性。在这个意义上,抽象是各个工程领域,事实上 也是人类认识世界的基本方法。所以要这样做是由于人们难于同时掌握复杂事 第一章绪论开放实现 物的方方面面,因此最有效的办法是通过建立突出某些特性方面的模型( 抽象 边界) 去认识它,而屏蔽掉暂时不关心的问题。 在系统中,抽象边界首选的位置是放在:对某个实现所特有的行为面与 对全部实现所公有的行为面之间。 这种抽象边界也正是需要呈现给客户的;而界面的实现则不是客户所关 心的,应该对客户完全隐藏。 在系统设计中这种传统形式的抽象体现为三个主要组件一黑箱 ( b l a c k b o x ) 、客户( c l i e n t ) 和抽象边界( a b s t r a c t i o nb a r r i e r ) ,如图1 2 。黑箱 实现某种抽象,并在一个抽象边界上提供功能或服务给客户。抽象边界将客户 与实现相分离;客户仅能使用抽象边界呈现的机制,去操作和控制抽象的黑箱。 在编程语言和系统中,这个抽象边界又称为界面( i n t e r f a c e ) 。 【卫皿勉界 ll 耖 - c :茎詈詈 “黑箱”抽象 图i 2 传统的黑箱抽象模型 这里展示出了抽象的两个重要特性。第一,分离( s e p a r a t i o n ) 将抽象的使 用与它的实现细节分隔开来,允许客户使用一个抽象而无需了解其下的细节。 第二,泛用化( g e a e r a l i s a t i o n ) 将抽象本身与某个具体实现区分开来,所以可以 改变实现而不必改动抽象( 因此也无需改动依照这个抽象编码的客户) 。通过以 这种方式运用分离和泛用化,可以对系统模块化,并重用各组件。 上述思想,既可以达到可移植性、可重用性等目标,实际上也反映出系统 软件应遵循的设计理念。内存分配器、文件系统、窗口系统、数据库、编程语 言等,都是给出了它们的通用界面,而使客户与其实现隔离开来。因此各种客 户可以使用这种抽象,而不考虑其实现。可移植性就在于将客户与实现细节隔 2 电子科技大学博士伦文:基于开放实现原理的中间件 离开来,因此可以将客户代码移植到该抽象的不同实现上。对可重用性则体现 为,这种抽象愈通用,它所能服务的客户种类也就愈多。 在窗口系统之上实现制表应用程序,所需要的是表目的一个二维数组,每 个表目应能够独立的显示、输入,需要知道什么时候表目被鼠标点击等,而这 些正是窗口系统的功能。实现制表程序的最简单方式,就是将每个表目设计为 f o r i = 0 t o9 9 f o r j = 0 t o 9 9 m k w i n d o w ( 1 0 0 ,4 0 ,i + 1 0 0 ,j + 4 0 ) e n d e n d 图1 - 3 制表应用程序的实现 一个窗口,如图l - 3 。代码简单、清晰,我们读它的时候完全不需要知道下层实 现的内部工作情况,因为程序使用了窗口系统的高层抽象,即重用了已存在的 窗口系统的代码。 1 1 2 映射难题 软件开发中的抽象的概念,借自数学中的抽象。但是,在软件中我们实际 提供的抽象并不完全类同于数学中的“抽象”,它只是下层实现的可见部分,也 正因为是这样,抽象的实现约束着抽象的行为方式。抽象的任何( 正确的) 实 现只要遵循约束抽象的规范,就会以“同样”的方式运作;但是,不同的实现 策略则将导致不同的性能特性、内存使用模式等等。 再看上面的例子。在事实上,图1 3 中的代码不能很好地工作,或者即使能 用,性能也很差,而没有实用价值。这种可能性在于窗口系统的实现,并不是 专门针对这种使用情况而设计的。在实现窗口系统的时候,设计人员必需面对 多种折衷,并做出决定。但无论如何,最终的窗口系统会更适用于某些应用, 而不适于另外一些。在这种情况下,设计者可能假定2 5 到5 0 个窗口是应用的 典型数目,而不是1 0 0 0 0 个。可能还假定,窗口的典型布置是非规则的,而不 是表格这种高度规则化的布局。基于上述假设的实现策略一旦确定,就作为实 现细节而被抽象边界所隐藏。 第一章绪论开放实现 如上所示,抽象本身能满足客户的功能性要求,但其实现效率低,或在其 它方面不满足应用要求的情况有一定的普遍性。这些问题的根源,可以用映射决 策( m a p p i n gd e c i s i o n s ) 、映射冲突( m a p p i n gc o n f l i c t s ) 和映射难题( m a p p i n g d i l e m m a s ) f k i c z a l e s 9 4 b 来解释。抽象的实现者,当实现某个内部机制有多种可 能策略时,需要作出映射决策( 即,将高层抽象的某些方面映射到低层的实现 结构上) 。当实现者作出了某个决策,而事实上另一种决策才能更好地满足另一 个客户的要求时,就发生了映射冲突。如果同一实现的两个客户要求不同的映 射选择;那么无论作出何种决策,都会导致映射冲突,这就是所谓的映射难题。 解决上例问题的方法,通常可分为两类:代码冗余( c o d e h e m a t o m a s ) 和混 杂编码( c o d i n g b e t w e e nt h el i n e s ) k i c z a l e s 9 2 】。 1 ) 代码冗余 代码冗余涉及到,在抽象边界之上,由应用程序自己重新实现所需的功能。 制表程序的编程人员首先设计他们自己的“小型窗口系统”库,它可以在屏幕上画 窗口、显示窗口、和处理鼠标事件等。这种重实现,使编程人员根据已知的应 用程序的属性( 窗格是平铺的、数目上万个等) ,确定不同的映射决策,以保证 性能满足他们的特定需要,如图l - 4 ( a ) 。这个库是一种冗余,因为很有可能又重 编写了大量的下层实现中已存在的代码;而且这种新方案,可能也仅解决了适 合这类应用程序的一两种映射决策。 ( b ) 图l - 4 代码冗余和混杂编码 2 ) 混杂编码 另一个解决方案是混杂编码,它涉及到用一种特殊的方式编写客户代码, 如图1 - 4 ( b ) 。这个方案,依赖于客户编程人员要对抽象实现者的映射决策和选择 4 电子科技大学博士伦文:基于开放实现原理的中间件 有一定的了解。这种了解可来自直接经验,或简单地得益于通常的实践。但是, 抽象自身不会提供相关信息。 常见的办法是巧妙使用虚拟内存。在一个为若干对象分配内存的程序中, 通常不特意考虑这些对象的分配次序。但是,当要用到大量对象时,程序员往 往重写应用程序,分配这些对象以使彼此相邻( 减少换页操作) ,而得到更好的 性能。但其负面影响是代码复杂难于理解。混杂代码的晦涩难懂,是由于系统 设计的两方面系统自身如何操作,与它如何被映射到下层结构上之间,没 有被清楚地分开,而是混杂在一起。这也使代码难于维护和移植。 1 1 3 在抽象之上获得控制 再次仔细审视上述例子,有几点值得注意:( 1 ) 尽管图l 一3 中的简单例子不 能很好地工作,但它所表达的行为是清晰的,换句话说,也就是窗口系统抽象 本身足以表达客户程序所需要的行为。( 2 ) 实现不能满足性能方面的要求这个 事实,在客户程序中反映不出来,也即,窗口系统抽象不涉及实现的性能( 这 些性能即使在窗口系统的文档中可能也未提及) 。( 3 ) 要预计或了解这个程序的 性能,必须了解窗口系统内部实现方面的知识,即所谓“被隐藏的实现细节”。( 4 ) 最后,可以设想有这么一种新的窗口系统的实现,可以使图l 一3 中的制表程序高 效地运行,而且与已存在的实现并不是完全不同,只是局部( 如某些算法等) 不同。 例子表明,人们传统的抽象观点与现实的编程有一定的矛盾。我们设计了 隐藏实现的、简练而有力的抽象,然后使用这些抽象,而不考虑其实现,去构 造更高层的功能。然而现实是,实现不能总是被隐藏,比如性能问题就不可避 免地表露出来,而且严重地影响着客户程序的质量。事实上,客户编程人员非 常了解这一点,但受制于这种抽象( 无法改变或调整下层的实现) 。 新的抽象模型应该尽量保留传统抽象模型好的及必要的方面,即上述基本 原则的前两条,又要解决第三条原则与实践之间的矛盾。传统的黑箱抽象本身 已有足够的表达能力,但在对付内部实现方面有一定不足。因此研究者们提出: 将实现开放出来,为客户提供有约束的访问,以检查和控制在抽象边界之下的 实现,即所谓“开放实现”【k i c z a l e s 9 6 】。注意这种开放必须是遵循一定原则 第一章绪论开放实现 的,这样客户编程人员不必一直面对实现的细节问题,而是可以处理某些实现 方面的问题又不必涉及它们的全部。 1 2 开放实现 :a 。! l 。o 。、 问题与实现策略的确定。 p 。口“、 f 叫魁司头现束咐h ,删疋。 黑鬈。自i 二,芝篓等鬻鬻薰 图1 5o i 模块的双重界面 的访问,又不暴露其实现方面的问题。 实现细节。 界面就象这个系统应该呈现的传 统界面一样,它提供了对系统功能 客户可以使用这个界面而不考虑下层的 但是在某些情况下,下层的实现不尽人意的时候,客户编程人员就有可能 需要得到另外的合适的支持。元界面正是提供了客户所需的控制,用此定制下 层实现以使其更适合他们的需要。也就是,通过承认客户需要访问具体实现的 内容( 如选择某个实现策略) 这个事实,并提供相应的显式的界面;同样,开 放实现仍可以保留前述的前两个基本原则带来的好处。 1 2 2 不同类型的界面 一个开放实现的模块实现了一组实现策略( 称之为集合s ) ,且必须针对每 个客户描述信息( 所有可能的客户描述信息所组成的集合c ) 选择合适的策略。 那么一个开放实现可以用函数f :c 一 s 来描述,函数f 为c 中的每个客户描 * m e t a i n t e r f a c e 也可译作“变界面”。 电子科技大学博士伦文:基于开放实现原理的中l u l4 牛 述信息从s 中选择一个策略 m a e d a 9 7 。 基界面 c f ( s 提供客户 描述界面 选择策略捍面 实现新策略 界面 图1 6o i 模块不同类型的界面 图1 6 显示了一个开放实现模块 应该提供给客户的、且允许客户控制 其实现策略的界面( 图中对元界面进 行了细化) 。基界面采用缺省的实现 策略;也可能通过观察在基界面的客 户行为,而选择合适的实现策略。但 有时候仅观察客户的行为不足于做 出选择,针对这种情况,开放实现可 以设计一个可选的界面:提供客户描 述界面( “s u p p l y c l i e n tp r o f i l e ” i n t e r f a c e ) ,以允许客户提供刻划它的 将来行为的信息。又因为客户可能很难提供这一未来行为的详细信息,所以一 个开放实现也可以设计另一个可选界面:选择策略界面( “s e l e c ts t r a t e g y ” i n t e r f a c e ) ,允许客户简单地选择或给出恰当的策略。而另外一些时候,开放实 现模块中可能尚未内含合适的策略,这时应该有个可选界面,允许客户直接提 供实现新策略的代码,这个界面称为实现新策略界面( “i m p l e m e n tn e ws t r a t e g y ” i n t e r f a c e ) 。 1 2 3 设计原则 对于基界面的设计,可利用现有的技术,因为我们已经能很好地设计这种 不暴露内部实现的界面了。同时,因为现在有了专门的地方元界面,去安 排客户必须访问的内部实现之处,可以使基界面更简洁。 将基界面与元界面分离开,是开放实现的基本原n i j k i c z a l e s 9 7 】。还可以更 进一步地指出重要且相关的几个设计原则: 范围控制( s c o p ec o n t r 0 1 ) :当编程人员用元界面去定制实现的时候,应该 能够恰当地控制这些定制所作用的范围,使其仅影响部分的基程序或其中某些 实体。比如上述的窗口系统的例子,我们希望制表程序使用定制的实现,而其 它应用继续使用缺省的实现。可以想象范围控制的粒度可有多种,如在面向对 象的编程中,可以针对某些类、或某些实例、或某些方法进行定制。 第一章绪论开放实现 概念分离( c o n c e p t u a ls e p e r a t i o n s ) :客户可以使用元界面定制实现的某些 方面,而不一定要了解元界面定制实现的全部。比如说想定制对象实例化的实 现策略的客户编程人员,没必要一定要知晓方法分派的机制。当然有时候做到 概念分离比较困难,因为有些实现方面之间是相互影响的 l a m p i n 9 9 2 。 渐增性( i n c r e m e n t a l i t y ) :客户只希望定制实现的某些方面,并不想对整 个实现从头写一个全新的实现。最有可能的是,客户指出哪些方面有特殊需要, 然后又自动重用实现的其余部分。通过面向对象技术,可以支持这种新实现的 渐增性定义( 利用继承机制等) 。 强壮性( r o b u s t n e s s ) :简单地说,就是客户元程序中若有缺陷则对系统的 其余部分只有有限的影响。 需要指出的是,上述几点往往是相互交织的,而且事实上它们处理的是各 种不同类型的“局部化”的问题。 1 2 4 重用性、可移植性和复杂性 一个值得关注的问题是:开放实现是否影响了代码的重用性和可移植性, 或者使代码更复杂。 软件重用可以减少开发和维护软件系统的时间和开支,一直是软件设计的 一个期望目标。g o g u e n g o g u e n 8 9 指出,成功的软件重用取决于下述工作是否 足够简单: 找到与所需代码足够接近的已有代码; 理解那些已有代码; 使它们能完成所需要的功能; 将这些代码正确地组合起来。 开放实现有助于设计者完成上列的前三项工作,因为它使设计人员构造可 配置的软件模块,因此可以被更广泛的客户使用。所以开放实现使代码有更好 的重用性。 各种机制已经被提出来以帮助软件设计者实现软件重用,包括程序变换 b u r s t a l l 7 7 b a l z e r 8 1 、组件生成 d u b i n s k y 8 9 b a t o r y 9 3 等方式。与众不同的是, 电子科技大学博士伦文:基于开放实现原理的中间件 开放实现不需要特定的语言、生成器或环境。它的思想是同一个模块,通常由 一种已存在的编程语言创建,能够支持多种不同类型的客户。 常有意见认为,开放下层实现会使客户代码更复杂,而且引起移植性的问 题。他们的观点是:( 1 ) 开放实现会使客户搞乱本应被隐藏的实现问题;( 2 ) 这将导致代码更复杂,且与具体的实现特性纠缠在一起;( 3 ) 这使代码更难于 工作,移植性更差。 但是事实正好相反。( 1 ) 客户事实上已经知晓了实现方面的问题,只是传 统的黑箱抽象阻止了客户去采取动作;( 2 ) 客户的代码将会更简单,因为它将 能重用更多的下层代码。对比上例中,制表程序为了解决性能问题而设计了自 己的窗口系统或混杂编码,这才使客户程序更复杂;( 3 ) 元界面并不是针对缺 省实现,而是作用于系统的所有实现。客户程序本来就不可避免地会与实现相 关,而现在的情况下代码变得简单了,一般是有利于可移植性的。 1 3 应用领域和研究动向 开放实现的思想,或显式或隐式地广泛应用在各类软件系统的设计中,如 编程语言、操作系统、网络和通信系统等。 编程语言很多语言支持的编译指示( p r a g a m ) ,如c 、c + 十、m o d u l a 一3 、 c o m m o n l i s p 等,可以看作是一种开放实现( 采用说明性的元界面) 。应用于编 程语言的功能更强的一类元界面是使用元对象协议( m e t a o b j e c tp r o t o c o l 或 m o p ) 【k i c z a l e s 9 3 】,m o p 利用面向对象的编程,提供了更好的范围控制和渐增 性。c o m m o n l i s p b o b r o w 8 8 j 和3 k r s m a e s 8 7 1 是最早使用m o p 的语言,之后针 对许多其它语言开发了m o p ,包括o b j v l i s t c o i n t e 8 7 、c l o s p a e p c k e 9 3 、o p e n c + + c h i b a 9 3 和o p e n j a v a c h i b a 9 8 等,还有一些用于并发和分布计算的研究性 语言,如a b c l r w a t a n a b e 8 8 】、r b c l i c h i s u g i 9 2 、a l 一1 d o k a m u r a 9 2 和 c o r r e l a t e 【r o b b e n 9 9 b 等。 操作系统操作系统是代表应用程序管理机器资源的一组软件模块。随 着计算机系统的硬件组件的性能的不断提高,及各种新的应用领域( 多媒体、 移动计算等) 的出现,不断地推动着操作系统的发展。运用开放实现的思想, 可以在操作系统设计之初就借助其灵活性。因为操作系统实现者面临着映射难 题,它们可以分为两类:一是物理资源管理( 如何为多个客户分配物理资源, 第一章绪论开放实现 如c p u 时间、物理内存等) ;二是抽象映射( 较高层的抽象如何用低层的物理资 源实现,如线程、虚拟内存等) 。相关工作包括m a c h r a s h i d 8 9 、 a p e r t o s y o k o t e 9 2 】、s p i n b e r s h a d 9 5 、m e t a o s h o r i e 9 7 等。 网络和通信物理平台、数据访问模式和服务质量要求等的多样化,使应 用程序只有按照自己的特定要求调整下层的通信机制,才能得到较好的性能。 网络通信系统中的映射难题,涉及传输数据的格式、通信协议的选择、同步还 是异步通信、消息缓冲和重发策略、拥塞控制、优先权或调度策略等等。相关 工作包括x k e m e l o m a l l e y 9 2 】、f o x n e t b i a g i o n i 9 4 等。 当前软件设计的原则、约定、工具和技术等都是建立在抽象这个基本概念 之上,将传统的黑箱抽象改进为开放实现,有许多问题尚待研究。目前有关开 放实现的研究动向大致可以分为两类: 研究如何更有效地在系统开发中运用开放实现,包括一般性的原则、规 律、方法、技术等。相关问题往往在开放实现的应用实例中得到深化和提炼。 典型工作有开放实现分析和设计( o i m d ) m a e d a 9 7 、设计指导方针 k i c z a l e s 9 5 等。 开放实现在不同领域中应用的广度和深度在不断拓展。除了最初的编程 语言之外,其它领域中的研究人员也开始将开放实现的思想运用在自己的工作 中,如上面提到的操作系统、网络通信系统,还有窗口系统 r a 0 9 1 、分布式系 统 m c a f f e r 9 6 、c s c w 系统 d o u r i s h 9 6 等领域。而且相关研究还在不断地深入, 如探讨在将下层实现开放给客户后,如何保证系统的一致性、完整
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年节能环保行业智能环保技术应用案例研究报告
- 2025年酒店行业全球酒店管理与酒店服务创新研究报告
- 2025年教育培训行业教育培训新模式探索研究报告
- 2025年区域互联网产业区域互联网发展与创新模式研究报告
- 2025年眼科疾病诊治规范模拟试卷答案及解析
- 2026国家开发银行秋季校园招聘笔试参考题库附答案解析
- 2025广西玉林市福绵区人才交流中心招聘见习生1人笔试备考题库及答案解析
- 2025广东惠州市中心人民医院招聘辐射防护工程师1人笔试备考题库及答案解析
- 2025年急救科触电伤急救流程操作规范模拟测试卷答案及解析
- 2025年法医学鉴定实务模拟考试卷答案及解析
- 高血压的中医食疗与养生
- 中医体质量表
- 明清传奇小说
- 荐五年级上册第三单元习作猎人海力布故事缩写两个基本方法
- 初中生物学教材解读人教八年级上册生物圈中的其他生物江艾佳细菌八年级上册生物
- GA 1809-2022城市供水系统反恐怖防范要求
- 2022年全国工会财务知识大赛参考题库精简600题(含各题型)
- GB/T 2072-2007镍及镍合金带材
- GB/T 13460-2016再生橡胶通用规范
- 基础观感验收自评报告
- 班级管理(第3版)教学课件汇总全套电子教案(完整版)
评论
0/150
提交评论