(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf_第1页
(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf_第2页
(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf_第3页
(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf_第4页
(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf_第5页
已阅读5页,还剩75页未读 继续免费阅读

(计算机软件与理论专业论文)基于aop与di的反射式中间件架构的研究与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 摘要 传统中间件侧重于解决分布式和异构情况下的复杂问题,系统的实现细节通 过抽象的方式隐藏起来,形成“黑箱 结构,这使系统缺乏必要的灵活性和适应 性。为克服这种缺陷,反射机制被引入到中间件的设计中,进而提高中间件的定 制能力、运行时的可重配置及适应能力,较好地适应动态变化的分布式环境和应 用需求,已在移动计算、智能卡、多媒体等领域展现出良好的应用前景。 针对目前反射中间件的研究与实践存在的不足,本文在反射中间件架构设计 中引入切面技术与依赖注入,利于实现关注分离。由于关注分离是反射和开放实 现的前提,通过功能分解可以得到系统的关注点,这些关注可以是组件、切面或 服务。用a o p 进行关注分离,在需要的时候凭借d i 将依赖关系反向注入,因此 a o p d i 为实现反射系统的开放实现提供新的思路。 本文在分析、研究国内外研究现状的基础上,对反射式中间件的相关技术与 概念进行了研究,通过对比分析各种技术的特点,给出了本文的研究思路与实现 的技术与方法。在论述反射、a o p 和d i 三者关系的基础之上,提出了基于a o p 和 d i 模式的反射式中间件架构模型r m a b a d 。将微内核软总线、a o p 框架与d i 容器 等作为体系结构的核心,采用元编程机制来增强架构的反射能力,使用e j b 的b e a n 类提供事务隔离和远程访问,利用d i 容器将e j b 的业务逻辑委托给p o j o ,以便提 供一种轻便的e j b 访问方式。针对j m x 在管理组件间依赖关系方面的不足,使用d i 容器对j m x 进行扩展。在远程访问方面实现了分离调用器,借助a o p 和d i 的配合, 实现拦截器链与代理切换。通过在线拍卖系统实例,验证了r m a b a d 架构的反射 性与可行性。 关键词:反射;反射式中间件;面向切面编程;依赖注入;d m x 英文摘要 r e s e a r c ha n dd e s i g no nr e f l e c t i v em i d d l e w a r ea r c h i t e c t u r eb a s e do n a o p d i a b s t r a c t t h et r a d i t i o n a lm i d d l e w a r e se m p h a s i z ep a r t i c u l a r l yo ns o l v i n gt h ec o m p l e x p r o b l e m su n d e rd i s t r i b u t e da n dh e t e r o g e n e o u se n v i r o n m e n t ,t h ed e t a i l si ni m p l e m e n t i n g o ft h es y s t e mh i d eb yt h ea b s t r a c tw a yt of o r mt h e ”b l a c kb o x ”s t r u c t u r e t h eb l a c kb o x e n h a n c e st h ep o r t a b i l i t ya n dr e u s a b i l i t yo fp r o g r a m ,b u ti tl a c k st h ee s s e n t i a lf l e x i b i l i t y a n da d a p t a b i l i t y i no r d e rt oo v e r c o m ef l a w so ft h e ”b l a c kb o x ”,r e f l e c t i o nm e c h a n i s mi s i n t r o d u c e di n t ot h ed e s i g no fm i d d l e w a r e i te n h a n c e sm i d d l e w a r e sc u s t o m i z a b i l i t y , r e c o n f i g u r a b i l i t y a n da d a p t a b i l i t ya tr u n t i m e ,a d a p t st h ed y n a m i c a l l yv a r i a b l e d i s t r i b u t e de n v i r o n m e n ta n dt h ea p p l i c a t i o nr e q u i r e m e n t sw e l l i th a su n f o l d e dt h eg o o d a p p l i c a t i o n a lp r o s p e c ti nt h ef i e l do fm o b i l ec o m p u t i n g , s m a r tc a r da n dm u l t i m e d i aa n d s o0 n i nv i e wo ft h ei n s u f f i c i e n c i e si nt h er e s e a r c ha n dp r a c t i c eo nt h er e f l e c t i v e m i d d l e w a r ea tp r e s e n t ,t h i sa r t i c l ei n t r o d u c e st h ea s p e c tt e c h n o l o g ya n dd e p e n d e n c y i n j e c t i o ni n t ot h ed e s i g no fr e f l e c t i v em i d d l e w a r e sa r c h i t e c t u r e ,w h i c hi sg o o df o r s e p a r a t i n gt h ec o n c e r n s b e c a u s et h es e p a r a t i o no fc o n c e r n si st h ep r e m i s eo fr e f l e c t i o n a n do p e ni m p l e m e n t a t i o n ,p r o g r a m m e r sc a ng e tt h es y s t e m sc o n c e r n sb yt h ef u n c t i o n d e c o m p o s i t i o n ,w h i c hc a nb ec o m p o n e n t s ,a s p e c t so rs e r v i c e s u s i n ga o p t os e p a r a t e t h ec o n c e r n sa n dr e v e r s e l yi n j e c t i n gt h ed e p e n d e n c i e sa tt h er i g h tt i m e w i t hd i t h e r e f o r ea o p d ip r o v i d e st h en e wm e t h o df o rr e a l i z i n gt h er e f l e c t i v es y s t e m so p e n i m p l e m e n t a t i o n b a s e do nr e a d i n gt h ed o m e s t i ca n do v e r s e a sl i t e r a t u r e s ,t h i sp a p e rs u m m a r i z e st h e r e s e a r c hb a c k g r o u n da n ds i g n i f i c a n c eo ft h er e f l e c t i v em i d d l e w a r e ,t h ed o m e s t i ca n d o v e r s e a sr e s e a r c hd e v e l o p m e n t ,t h er e l a t i v et e c h n o l o g i e sa n dc o n c e p t sa n ds oo n b yt h e a n a l y s i sa n dc o m p a r i s o no fe a c hk i n do ft e c h n i q u e s c h a r a c t e r i s t i c ,t h er e s e a r c ht h i n k i n g a n dt h et e c h n o l o g ya n dm e t h o do ft h er e a l i z a t i o na r ep u tf o r w a r d o nt h eb a s i so f d i s s e r t a t i n gt h er e l a t i o n s h i pa m o n gt h er e f l e c t i o n ,r m a b a dw h i c hi s s h o r tf o r “r e f l e c t i v em i d d l e w a r ea r c h i t e c t u r eb a s e do na o pa n dd i ”,i sp r e s e n t e d i tt a k e s m i c r o k e r n e l ,a o pf r a m e w o r ka n dd ic o n t a i n e ra st h ec o r eo fa r c h i t e c t u r e ,u s e st h e m e t a - p r o g r a m m i n gm e c h a n i s m t os t r e n g t h e nt h er e f l e c t i v ep o w e r , u s e st h eb e a no fe j b 中文摘要 t os u p p o r tt r a n s a c t i o ni s o l a t i o na n dr e m o t ea c c e s s ,d e l e g a t e st h eb u s i n e s sl o g i co fe j b t op o j ow i t hd ic o n t a i n e ri no r d e rt op r o v i d ea l i g h tw a yt oa c c e s se j b i na l l u s i o nt o j m x si n s u f f i c i e n c i e so na s p e c to fm a n a g i n gt h ed e p e n d e n c er e l a t i o n s h i pa m o n gt h e c o m p o n e n t s ,r m a b a de x p a n d st h ej m xw i t ht h ed ic o n t a i n e r i ti m p l e m e n t st h e s e p a r a t i o ni n v o k e ro nt h ea s p e c to fr e m o t ea c c e s sa n dr e a l i z e st h ei n t e r c e p t o rc h a i na n d t h ea g e n ts w i t c h e rw i t ht h ea i do fa o pa n dd i w i t ht h ei n s t a n c eo fo n 1 i n ea u c t i o n s y s t e m ,t h er e f l e c t i o na n dt h ef e a s i b i l i t yo fr m a b a d a r ev a l i d a t e d k e yw o r d s :r e f l e c t i o n ;r e f l e c t i v em i d d l e w a r e ;a o p ;d i ;j m x 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成硕士学位论文“基王q 里生q ! 的厦射式虫闻鲑苤捡数硒究曼遮让 。除 论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已 在文中以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已 经公开发表或未公开发表的成果。 本声明的法律责任由本人承担。 论文作者签名: 学位论文版权使用授权书 伽j ,年弓月幻日 本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、 版权使用管理办法 ,同意大连海事大学保留并向国家有关部门或机构送交学位 论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将 本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或 扫描等复制手段保存和汇编学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于:保密口 不保密口( 请在以上方框内打“ ) 论文作者签名: 基于a o p 与d i 的反射式中间件架构的研究与设计 第1 章绪论 1 1 研究背景与意义 随着计算机日益快速的发展,人类社会的信息量极速剧增,人们迫切希望具 有不受人员、数据以及机器的物理分布限制的资源共享。此外,网络技术的发展 使计算机互连成为可能,由此产生了将计算任务分解到多台计算机执行的分布式 计算模式。随着分布式应用的普及,系统集成商基于性能、价格、服务等方面的 考虑,通常在同系统中集成了来自不同厂商的硬件设备、操作系统、数据库平台、 网络协议及不同的编程语言等,面对分布式应用的异构性,中间件应运而生。中 间件是指网络环境下位于操作系统( 系统软件) 和应用软件之间的一种分布式软 件,它为用户提供一种高层次的、独立于平台的编程模型,隐藏了复杂的底层细 节,将开发者从复杂的网络环境中解放出来,专注于业务逻辑1 1 j 。 传统中间件主要侧重解决异构和分布式情况下的复杂问题,系统的实现细节 通过抽象的方式隐藏起来,形成一个典型的“黑箱”结构。黑箱抽象虽然在很大 程度上提高了程序的可移植性和可重用性,但是缺乏必要的灵活性和适应性,无 法满足不同应用环境的需求。为解决这一问题,基于开放实现思想的反射( r e f l e c t i o n ) 技术被引入到中间件的设计中,能以可控的方式开放平台内部的实现,从而提高 中间件的定制能力和运行时的适应能力。许多学者认为,反射式中间件将成为下 一代中间件的代表。目前,反射式中间件已被运用到多种多样的应用环境中,如 多媒体、实时系统、嵌入式系统、手持设备、甚至移动网络环境等多个领域,并 表现出良好的应用前景。 面向对象编程( o o p ) 的出现极大提高了软件的可读性、可维护性和可重用性, 然而o o p 技术并没有解决软件开发中的可维护性和可重用性等问题。面向切面编 程( a s p e c t o r i e n t e dp r o g r a m m i n g ,简称a o p ) 是一种新型的软件设计思想,它不是 对传统o o p 思想的颠覆,而是对o o p 技术体系的完善和补充,是o o p 抽象层次 之上更高层次的抽象。a o p 概念已渗透到各种商业应用中,在很多领域提供了有 意义的原型,例如:应用服务器、操作系统内核、实时分布式事件通道、中间件、 分布式质量服务、多智能体系统结构、对象数据库【2 j 等。 在对反射式中间件架构的研究中引入a o p 技术,是本文的研究目标。a o p 是 第1 章绪论 开放实现和反射的具体体现,a o p 的出现为实现反射系统的开放实现提供了一种 新的思路:通过将与下层实现相关的非功能性属性开放出来,可做到关注分离 ( s e p a r a t i o no fc o n c e r n s ,简称s o c ) ,而关注分离又是反射和开放实现的前提。控 制反转( i n v e r s i o no fc o n t r o l ,简称i o c ) 设计模式能解决调用者和被调用者之间的关 系,依赖先被分离,然后在适当的时候动态地向某个对象提供它所需要的其他对 象,这是通过依赖注入( d e p e n d e n c yi n j e c t i o n ,简称d i ) 模式实现的。d i 的应用为 a o p 架构的实现奠定了基础,将a o p 和d i 这对互补性技术用于解决应用开发中 的复杂问题,能使开发商推出更广泛的服务,并从更高的效率和更快的发展中获 利。 1 2 国内外研究动向 随着反射性在计算机各个领域的广泛运用,人们也开始尝试将反射性应用到 中间件技术中。1 9 9 7 年,l e d o u x 尝试了将反射性引入中间件以调整远程调用,同 时s i n g h a i 在解决c o r b a 的容错与实时化问题时也引入了反射性概念。在 m i d d l e w a r e9 8 会议上,g s b l a i r 系统地阐述了将反射性引入中间件的必要性和可 行性。随后,反射性作为下一代中间件的主要特征之一,得到了越来越多的重视 与研究【1 1 。 尽管对中间件中反射技术的研究开始不久,但已引起了各国学者的关注。在 m i d d l e w a r e2 0 0 0 会议上,与会学者就针对反射式中间件( r e f l e c t i v em i d d l e w a r e ) 进 行了专题讨论,重点强调了反射式中间件在更好地适应动态变化环境、改善服务 质量( q o s ) 等方面的作用。国内各大高校和研究组织也进行了大量的研究工作,其 中,“北京大学贝尔实验室软件技术联合实验室 自主开发的p k u a s ( j 2 e e 应用 服务器) 和电子科技大学的r e c o m 等研究成果为该研究领域的佼佼者。越来越多 的开源项目也成功地引入了反射特性,如j b o s s 服务器。 目前,对反射式中间件的研究主要集中在对象中间件和移动计算中间件两个 方面。研究重点在加强分布式计算的q o s 上,尤其在多媒体方面。比较典型的研 究成果如下: ( 1 ) d y n a m i c t a o i l l i n o i s 大学的研究者最早开始这方面的研究【3 1 ,d y n a m i c t a o 是c o r b a 兼容的 基于a o p 与d i 的反射式中间件架构的研究与设计 反射o r b ,它支持运行期的重配置。通过对其内部结构的具体化,维持了0 r b 内 部组件及组件间的动态交互的显示自表示。其中,具体化是指通过一组被称为组 件配置器( c o n f i g u r a t o r ) 的实体实现的,一个组件配置器维护了某个组件与系统中其 它组件间的依赖关系。 ( 2 ) o p e n o r b l a n c a s t e r 大学的研究者们为构造开放的多媒体平台,开发了通用的反射结构 【4 ,5 1 。中间件平台的基层被看作是它所提供的一组服务,这些服务通常以对象的形 式建模和实现,由平台维护它们的配置。元层包含了具体化这些服务配置的编程 结构,并允许进行反射计算。 ( 3 ) o p e n c o r b a 法国e c o l ed e sm i n e sd en a n t e 的o p e n c o r b a 是一个反射的c o r b ao r b i 倒,它主 要依据反射语言n e o c l a s s t a l k 的元对象协议( m e t ao b j e c tp r o t o c o l ,m o p ) ,利用语 言的反射机制具体化o r b 的内部属性,并能够修改和调整运行行为。 目前,对于在一般的中间件设计中如何使用反射技术以提高系统可配置性的 研究不是很多,而且反射式中间件的研究主要集中在c o r b a 、c o m 、r m i 上,对 j 2 e e 平台的反射性研究也较少。现有的研究工作又存在不同程度上的缺陷,如 o p e n o r b 与o p e n c o r b a 不能提供构建化的平台、无系统自述的关联性,m c h a r m 没 有定义对元层的复杂度管理等。综上所述,在j 2 e e 体系下,如何使用反射式中间 件增强系统的可配置性,以弥补现有研究工作的不足是本课题的主要目的。 1 3 研究内容 本文主要针对目前反射式中间件研究中所存在的问题,提出一个基于面向切 面及依赖注入模式的架构,以增强系统的反射能力,提高系统的可配置性。基本 研究思路是:依据反射和元编程机制进行原型设计,在原型设计的基础上,实现 相关重要的组件,并将实现结果应用于某在线拍卖系统,加以验证。也就是说, 从理论和实践两个方面,对基于a o p 和d i 技术的反射式中间件架构进行较为深入 的研究,具体而言,主要研究内容包括如下几个方面: ( 1 ) 综合该领域的国内外的相关技术文献,在相关研究成果的基础上,借鉴 其成功的经验与技术方法,并针对其中出现的一些问题开展研究。 第1 章绪论 ( 2 ) 对中间件、反射、反射式中间件、a o p 、d i 等技术与概念进行对比分析, 以期发现各自的优势。重点研究各种技术互补的可能性,以及如何在反射式中间 件架构的研究中加以应用等问题。 ( 3 ) 在讨论反射、a o p 与d i - - 者关系的基础上,提出一个基于a o p 与d i 模式 的反射式中间件架构的原型,将微内核总线、d i 容器与a o p 框架作为体系结构的 核心,采用多层反射及元编程机制来增强架构的反射能力。此外,提供一种轻便 的e j b 访问方式。 ( 4 ) 针对j m x 在管理组件依赖关系方面的不足,使用d i 容器对其进行扩展。 在远程访问方面,实现分离调用器,并结合a o p 和d i 技术,实现拦截器链与代 理切换。 ( 5 ) 依据中间件架构原型,具体实现相关组件并通过在线拍卖系统这一运行 实例,验证所设计的架构的功能。 1 4 论文的组织结构 本论文主要包括6 部分,各章节论述的内容如下: 第一章绪论。本章主要阐述反射式中间件架构的研究背景、研究成果及其研 究意义,分析国内外在该领域的研究动态以及存在的相关问题,列出本文的研究 重点及主要研究思路。 第二章反射式中间件研究的相关基础。本章重点论述反射式中间件研究中所 涉及到的相关技术与概念,包括中间件、反射机制以及反射式中间件等。 第三章面向切面编程与依赖注入。本章在论述面向切面编程技术、依赖注入 模式的基本原理及技术特点的基础上,通过分析对比,指出如何恰当地在反射式 中间件的研究中使用这两种技术。 第四章反射式中间件架构的原型设计。在分析反射、a o p 、d i - - 者关系的基 础上,提出一个基于j 2 e e 的、提供a o p 框架及d i 模式的反射式中间件架构,重点 论述架构的原型设计,给出r m a b a d 的设计原则,并在该原则指导下,详细论述 反射式中间件架构的体系结构及相关技术。 第五章r m a b a d 的实现与应用。本章重点论述反射式中间件架构r m a b a d 的相关实现技术与方法,包括微内核、远程服务、a o p 的实现等。通过在实际可 基于a o p 与d i 的反射式中间件架构的研究与设计 运行系统中应用本文所设计的架构,以验证a o p 、d i 及反射的有效性,从理论和 实践上充分论述了本文所设计的方案的可行性。 第六章总结与展望。本章对论文期间所做的工作进行总结,给出研究结论并 展望反射式中间件研究的发展未来,提出有待于进一步研究的相关问题。 第2 章反射式中间件研究的相关基础 第2 章反射式中间件研究的相关基础 本章重点论述反射式中间件研究中所涉及到的相关技术与概念,包括中间件、 反射机制以及反射式中间件等。 2 1 中间件及其分类 2 1 1 中间件的定义 中间件的概念于上世纪9 0 年代初首先被提出,它是指一种处在系统软件( 操 作系统与网络软件) 与应用软件之间的软件,其作用是使远距离相隔的应用软件能 够协同工作,便于在应用层上实现分布式处理。 为了避免混淆,学术界对中间件给出了比较明确的定义,即中间件是一种软 件,它能使处于应用层中的各个应用成分之间实现跨网络的协同工作( 即互操作) , 允许各应用成分所涉及的系统结构、操作系统、通讯协议、数据库及其它应用服 务等各不相同。中间件所处的位置可以用图2 1 来形象地加以描述同。 应用软件 中间件 网络协议 操作系统 硬件平台 协同工作 应用软件 圃 中间件 网络协议 操作系统 硬件平台 网络 图2 1 中间件的位置 f i g 2 1t h el o c a t i o no fm i d d l e w a r e 由图2 1 可以看出,中间件是运行在基础网络环境之上的软件,它承接了各应 用软件与基础网络环境间的联系,使得处在不同运行环境下的各个应用系统之间 能够实现互操作。 2 1 2 中间件的作用及分类 简单而言,中间件的作用就是试图通过屏蔽各种复杂的技术细节使技术问题 简单化。具体说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一 基于a o p 与d i 的反射式中间件架构的研究与设计 个简单而统一的开发环境,减少了程序设计的复杂性,使得开发者能够将注意力 集中在业务上,不必再为程序在不同系统软件上的移植而重复地工作,从而大大 减少了他们在技术上的负担。所以,中间件带给应用系统的不只是简化开发,缩 短开发周期,增加系统的可维护性,减少管理工作量,降低项目的开发风险等, 而且还从整体上减少了总体费用的投入。另外,中间件作为新层次的基础软件, 其重要作用是将不同时期、在不同操作系统上开发的应用软件有效地集成起来, 相互之间如同一个天衣无缝的整体而协调工作,这是操作系统、数据库管理系统 等基础系统软件所无法做到的。 目前,针对不同的应用涌现出了各具特色的中间件产品。从不同的角度和层 次出发对中间件也存在着不同的分类。根据中间件在系统中所起的作用和采用的 技术不同,大致可把中间件分为:数据访问中间件、远程过程调用中间件、面向 消息中间件、面向对象中间件、事务处理中间件、网络中间件、终端仿真屏幕转 换中间件等【引。 2 2 反射机制 反射的概念最初f l j s m i t h 在1 9 8 2 年提 9 , 1 0 】。他认为:“既然一个计算过程凭 借着包含的一个组成过程( 解释器) 去形式化地操纵外部世界的表示,进而推理外 部世界;那么类似地,一个计算过程也可以设计成借助于含有一个组成过程( 解释 器) 去形式化地操纵其自身的操作和结构,进而推理其自身。”反射机制表明了一 个程序通过反射可以访问、推理并改变其自身。 s m i t h 的这一思想在i t 界,引发了大量的关于反射应用的研究。最初,相关工 作局限在编程语言的设计领域,特别是在l i s p 和面向对象这两方面,这些工作的成 果汇集在c o m m o nl i s po b j e c ts y s t e m ( c l o s ) 的设计中【1 1 1 。有些学者已经开始关注 反射机制在并发对象语言、基于逻辑的语言和基于规则的语言中的影响1 1 2 】。近年 来,反射的运用已扩展到窗口系鲥1 3 1 、操作系统【1 4 】和分布式系鲥1 5 】等领域。随着 反射应用的多样化,对于“反射 这一术语,已经难于给出其精确的定义,只能 从不同的角度加以描述。 2 2 1 概述 由于对反射机制缺乏相关的精确定义,因此,人们只能从反射机制设计的目 第2 章反射式中间件研究的相关基础 的及其作用等角度出发对其加以概括。 ( 1 ) 开放实现 所有的反射系统都以开放实现为目的。软件工程中的传统观点是通过抽象来 处理复杂问题的,但在开放实现中,实现细节由于特定的抽象而对用户是屏蔽的, 这导致应用组件的开发成为典型的“黑箱”模式,这种方式常被认为可以提高代 码的可重用性。但事实上,常常不可能或不期望对用户屏蔽所有的实现细节,原 因是:如果隐藏所有实现细节,就必须为应用确定实现的策略,而支持应用的系 统可能会包含一些极其重要的信息,只有使用某个特定系统模块才能更有效地支 持应用。因此,屏蔽所有实现细节在实际应用中未必是高效的,甚至是不切实际 的。开放实现的目的就是通过暴露模块的实现细节来解决这类问题,但前提条件 是必须有原则地将模块提供的功能与模块的内部实现区分开来。为区分起见,两 者分别被称为模块的基界面( 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 ) 。 基界面使得用户可以透明地使用系统功能而不需要考虑其内部实现细节,而 元界面则能够使用户具有控制内部实现的能力。当系统的原有功能不能很好地满 足用户需求时,用户可以通过元界面来定制内部结构使其适应当前用户的需求。 也就是说,开放实现将原来被基界面彻底屏蔽的内部实现,有选择、有约束地暴 露出来。可见,开放是“反射 系统的必要条件。 ( 2 ) 开放实现与反射 反射是系统的一种推理和作用于自身的能力。反射系统是指提供了针对于自 身行为的表示,这种表示可以被检查和调整,且同它所描述的系统行为是因果相 联( c a u s a l l yc o n n e c t e d ) 的一类系统。因果相联意味着对自表示( s e l f - r e p r e s e n t a t i o n ) 的改动将立即反映到系统的实际状态和行为中:反之亦然。这也是使用“反射 这个词的缘由。因此简单讲,反射系统就是支持因果相联的自表示( c a u s a l l y c o n n e c t e ds e l f - r e p r e s e n t a t i o n ,c c s r ) 系引1 6 1 。 2 2 2 分类 对反射的分类,可从以下几个不同的角度进行【1 7 】: ( 1 ) 过程性反射与声明性反射 根据系统自表示的不同特点,可将反射分为过程性反射( p r o c e d u r a lr e f l e c t i o n ) 基于a o p 与d i 的反射式中间件架构的研究与设计 与声明性反射( d e c l a r a t i v er e f l e c t i o n ) 。 在过程性反射中,系统的自表示是由实现系统的程序提供的。过程性反射自 动地保证了自表示与系统之间的一致性,因为自表示实际上就是用来实现系统的, 因此,因果相联也就不再是难题,即自表示既用于实现系统,又用于推理系统。 另一种反射被称为声明性反射,此时,自表示仅仅包括关于系统的声明而不包括 系统的实现,例如,有的声明可描述系统计算必须满足的时问和空间要求,但没 有说明如何才能满足这些要求。这种自表示不再是系统的过程性表示,而是系统 的状态和行为所必须满足的一组约束的集合。声明性反射比过程性反射更抽象, 它关注系统实现应该达到的目标,而不关注系统将如何达到这些目标,因此,声 明性反射对因果相联的要求较难实现。 ( 2 ) 结构反射与行为反射 针对反射编程语言,根据系统的哪些方面可由元实体检查和调整,可将反射 分为结构反射( s t r u c t u r a lr e f l e c t i o n ) 和行为反射( b e h a v i o r a lr e f l e c t i o n ) 1 s j 。 结构反射可以定义为语言的一种性能,即对正在执行的程序和它的抽象数据 类型进行完全的具体化。结构反射允许检查和调整计算系统的代码。最初的功能 性语言( 如l i s p ) 和逻辑语言( 如p r o l o g ) 都有一些声明语句可以修改程序的表达,这 是因为这些语言具有解释特性。解释型语言比较容易引入结构反射,而大部分的 面向对象语言( 如c + + ) 属于编译型的,由于在运行时没有代码的表示,所以难以实 现结构反射。但是,纯面向对象的语言( 如s m a l l t a l k 、j a v a 等) ,因为在运行时有 代码的表示( 且p c l a s s ) ,所以正是这些表示可用于实现结构反射【1 9 j 。结构反射在非 纯面向对象语言中可通过在编译时( 如o p e n c + + ) 1 2 0 】或在运行时引入代表( 具体化) 程序代码的数据结构来实现【2 1 1 ,但这种实现方式有一定的局限性。前一种方式中 所有的结构反射都为静态的,而后一种方式的局限性则取决于代码的哪些方面被 具体化。 行为反射是指语言提供了对其语义和对用于执行当前程序的数据的完全具体 化。行为反射允许检查和调整一个系统运行时的行为。通常对编程人员屏蔽的方 面被开放出来,如代表方法分派机制的数据结构、对象存储的方法等。 行为反射与结构反射的区别在于:行为反射通过执行程序可以改变下层系统 的某些方面;而结构反射只能增加或修改代码段,不能修改执行引擎、提供行为 9 第2 章反射式中间件研究的相关基础 反射语言等【2 2 ,2 3 1 。 2 2 3 面向对象的反射 面向对象的计算模型被广泛用于对反射语言及系统的研究中。k i c z a l e 等人指 出,面向对象的计算与反射有一个重要的协同性,那就是反射技术使开放一种语 言或一个系统的实现成为可能,但不应该暴露不必要的实现细节,也不应该影响 其可移植性;面向对象技术允许语言或系统实现的模型能被局部、渐进性地调整 【川。鉴于面向对象的概念在分布式系统尤其是中间件中的重要地位,有必要重点 论述面向对象系统中的反射问题。 对象本身可用其它对象来表示,后者被称为元对象( m e t a o b j e c t ) 。元对象的 计算( m e t a c o m p u t a t i o n ) 又称为元计算,可用于观测和修改它们的指示物 ( r e f e r e n t s ) ,即所代表的对象。元计算常常通过捕获( t r a p ) 它们的指示物,然后由 元对象执行正常的计算。也就是说,指示物的行为被元对象所捕获,后者执行元 计算,替换或封装指示物的行为。当然,元对象自身也可由其它对象来表示,即 它们是二重元对象( m e t a m e t a o b j e c t ) 的指示物。以此类推,这样的反射系统可以 是一种多层次结构,构成一个反射塔( r e f l e x i v et o w e r ) 。在图2 2 中,反射塔任意 相邻的两层间的界面被称为元对象协议( m e t ao b j e c tp r o t c o l ,m o p ) 1 2 5 , 2 6 】。 图2 2 反射塔 f i g 2 2r e f l e c t i o nt o w e r 元层与基层都由对象构成,基层的对象称为基对象( b a s e o b j e c t s ) ,它们对应 用领域中的实体进行计算;元层的对象称为元对象( m e t a o b j e c t s ) ,它们对其相邻 低层的对象( 指示物) 执行计算。元对象间相互协作,并通过元对象与基对象间的 元关联( m e t a l i n k ) ,监控与管理基对象的不同系统行为。基对象与元对象之间的 元关联未必是一一对应的,几个元对象可以共享同一个指示物,单个元对象也可 基于a o p 与d i 的反射式中间件架构的研究与设计 有几个指示物。 一次反射计算的过程可分为两个逻辑部分,即计算流上下文切换和元行为。计 算从基层的计算流开始,当基层实体执行某个行为时,该行为被元实体所捕获, 同时计算流通过换上操作( s h i f t u pa c t i o n ) 上升到元层,然后元实体执行它的元计 算。当它允许基层实体执行时,计算流又通过换下操作( s h i f t d o w na c t i o n ) 返回至 基层。上述过程可用图2 3 加以表示。 换上操作下操作 图2 3 反射过程 f i g 2 3t h ep r o c e s s o fr e f l e c t i o n 在反射模型中,一个重要概念就是具体化( r e i f i c a t i o n ) 。为了对相邻低层执行 计算,每层需要维护一组支持这个计算的数据结构,即因果相联的自表示,而创 建这种自表示的过程就称作具体化。具体化就是将原本隐式的方面显式化。当然, 相邻低层的哪些方面被具体化,取决于反射模型( 如结构、通信、状态与行为等) 。 在任何情况下,包含自表示的数据结构与系统被具体化的那些方面是因果相联的。 在相邻层之间保持这种因果相联的关系是反射基础设施( r e f l e c t i v ei n f r a s t r u c t u r e ) 的责任,元对象的设计者和编程人员不必知道如何实现因果相联关系等细节。 反射模型的一个关键特性是透明性( t r a n s p a r e n c y ) 。在反射的上下文中,透明 是指位于任意一层的对象完全不知道其上层对象的存在或工作状况,也就是说, 每个元层被加到其指示物层之上,无需改动指示物层本身。反射系统在元层和其 指示物层之间执行因果相联是以对元层编程人员和指示物层编程人员都透明的方 式实现的,这一特性被称为反射透明性( r e f l e c t i o nt r a n s p a r e n c y ) 。 运用反射技术可以提高系统的灵活性以适应环境及需求的变化。由于具有透 明性,一个系统中对象的结构和行为都可以无需改动原来的系统代码而被改动、 替代或加以丰富。这种通过额外的元层来实现系统进化的方法,有的需要重新编 译;而有的则可以动态地进行。 在系统设计中采用反射技术,还可以分离功能性属性与非功能性属性。一种 第2 章反射式中间件研究的相关基础 典型的方式是:基层对象用来满足应用程序的功能性需求,元层对象则用于保证 非功能性属性( 如持久性、容错性、分布性等) 。依据这种对系统的划分,可把基层 对象称为功能性对象( f u n c t i o no b j e c t s ) ,而把元层对象称为非功能性对象 ( n o n f u n c t i o no b j e c t s ) 。功能性对象对现实世界的实体进行建模,而非功能性对象 则对功能性对象的属性进行建模。 使用基元层的优势就在于通过关注分离( s e p a r a t i o no fc o n c e r n s ,s o c ) 增强了 系统的可修改性。根据系统要修改部分涉及的是功能性属性还是非功能性属性, 可只改动功能性属性或非功能性属性。例如,一个信用卡账号的数据信息发生改 变,因为涉及的是功能性属性,所以需要改动功能性类a c c o u n t s ( 信用卡账号类) ; 如果要求系统具有更好的持久性,因为涉及的是非功能性属性,则改动非功能性 类p e r s i s t e n tm e t ao b j e c t ( 持久性元对象类,该类提供了将对象存入文件、从文件中 恢复等操作) 。关注分离从两方面提高了系统的可重用性:一方面,同样的功能性 对象( 如一个a c c o u n t s 对象) ,既可以通过与一些元对象相关联而具备某些额外属 性,也可以独立使用。一个对象要具备额外的属性( 如容错性、持久性、事务性等) , 通常需要额外的开销。但是,通过反射技术,能使这些特性不被包含在该对象的 代码中,而是被分离在多个对象中。当某个额外属性不需要时,相应的元对象就 没有必要被实例化。若要求系统具有持久性,如果不采用反射方法,则典型的方 法是引入p e r s i s t e n to b j e c t 类,其他需要持久性的类则需要继承类p e r s i s t e n to b j e c t , 相应地,它的实例就成了具备持久性的对象。显然,这种方法将非功能性代码与 功能性代码交织在一起,使得逆向操作( 如通过取消与p e r s i s t e n to b j e c t 的继承关系 而消去持久性的操作) 较难实现。另一方面,非功能性的属性由元对象实现,且独 立于使用这些元对象的功能性对象,所以,同样的元对象可以被重用以便为不同 的功能性对象附加相同的非功能性属性,也就是说,通过反射的方式可提供对持 久性、事务性、容错、权限验证等属性的支持。 2 3 反射式中间件 2 3 1 反射式中间件的产生及特点 当前的中间件,无论c o r b a 、d c o m 还是j a v ar m i ,基本上都采用“黑箱” 抽象原则,缺少必要的灵活性和适应性。由于中间件处理的是复杂的分布式应用 基于a o p 与d i 的反射式中间件架构的研究与设计 问题,因此常常需要面对变化的运行环境和不同的用户需求。中间件已被运用到 多种多样的应用环境中,如多媒体、实时系统、嵌入式系统、手持设备以及移动 网络环境。当一个便携式计算机从局域网环境移动到无线环境时,其可用带宽或 传输出错率一定会发生明显的变化。这时,理想的状况是希望中间件能切换到一 种节约带宽的机制,如对调用消息进行压缩等,但大多数中间件不支持这种适应 性,而且应用往往受限于仅能使用中间件所提供的机制。 分布式环境中的不同应用常常有不同的服务质量要求,如安全性、可靠性、 负载平衡等,而中间件要么对此支持很少,要么就将各种属性交汇在一起。例如, c o r b a 的对象服务中,每个对象服务都为核心o r b 拓展了额外的属性,但无论这 些服务使用与否,o r b 都必须包含对所有服务的数据结构和协议的支持。这样就 使得o r b 的实现效率较低,用户不得不涉及一些事实上并不需要的属性。由于缺 乏中间件的支持,应用程序往往不得不自己实现这种适应性,结果往往是这种适 应性要么被忽略,要么就使得适应性的实现与应用程序紧密耦合,因而不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论