(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf_第1页
(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf_第2页
(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf_第3页
(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf_第4页
(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf_第5页
已阅读5页,还剩72页未读 继续免费阅读

(计算机应用技术专业论文)反射式中间件技术在电信运营系统中的应用.pdf.pdf 免费下载

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

文档简介

西安建筑科黄大学硕士学位论立 s 自s 目g i m u ! 1 1 i 一! m m i ! ! ! ! 自e s ! 反射式中间件技术在电信运营系统中的应用 摘要 中阕件技术的广泛运角使得分布式应用系统丌发得到进一步发展。 然而,如今不断涌现的新的应用领域对中脚件技术提出了新的要求。传统的 中间件己无法适应这样的多样性。细究其原因主要是因为传统的中间件技术均采 用“黑箱抽象”开发原则,将服务的实现细节完全封闭,人们无法去定制服务内 容。 反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。在软件 设计中融入反射机制是为了使其具有更好的开放性和可重配置性。 本文阐述了反射的基本概念及其实现原理,并介绍了当前比较流行的反射式 中间件,其中重点介绍了基于 2 e e 平台的北大p f f u a s 中间件服务器最后,将 p k u a s 应用到电信九七系统的服务端程序设计中,设计完成了该服务程序的中间 件系统框架。在该框架下,通过修改配置文件可以灵活方便地调整系统的结构和 功能,实现了九七系统的动态部署和实时监控可以在系统运行过程中动态的替 换和更改服务构件从而使系统具有更好的开放性和灵活性,实现了系统的在线 演化解决了老九七系统基于”黑箱机制”结构固化,重配性差的弊端 关键词:反射,中间件,北大应用服务器,电信九七,元层,基层 a p p l i c a t i o no f r e f l e c t i v em i d l l e w a r ei nt e l e c o mb u s i n e s s s y s t e m a b s t r a c t t h ec o m p r e h e n s i v eo s eo fm i d d l e w a r eh a se n h a n c e dt h ed i s t r i b u t e da p p l i c a t i o n s y s t e m sd e v e l o p m e n t h o w e v e r ,w i t ht h ee m e r g e n c eo fs o m en e wd o m a i n s ,s u c ha st e l e c o m m u n i c a t i o n a n dm o b i l ec o m p u t i n g ,m a n yn e wf e a t u r e sh a v eb e e nr e q u i r e d ,w h i c ht r a d i t i o n a l m i d d l e w a r es c a r c e l yh a v ea n dc a n n o tf i tt h ed i v e r s i t ye i t h e r t h er e a s o ni st h a tt h e t r a d i t i o n a lm i d d l e w a r et e c h n i q u ea l la d o p tt h e ”b l a c kb o xa b s t r a c t i o n ”d e v e l o p m e n t p r i n c i p l e ,w h i c hb l o c ko u tt h er e a l i z i n gd e t a i l so f s e r v ec o m p l e t e l y s op o e p l ec a n t c u s t o m i z et h es e r v i c ec o n t e n t s t h et e r mr e f l e c t i o nr e f e r st ot h ea b i l i t yo ft h ep r o g r a mw h i c hc a n r e p r e s e n t ,e x a m a n do p e r a t eo nt h es t a t ea n db e h a v i o ro fi t s e l f i no r d e rt om a k et h es o f t w a r ew o r k w i t hf l e x i b i l i t ya n dr e c o n f i g u r a t i o n w et a k er e f l e c t i o nm e c h a n i s mi n t oi t t h i sp a p e re x p a t i a t e st h eb i s i cc o n c e p t i o na n dt h er e a l i z i n gp r i n c i p l eo fr e f l e c t i o n a n dt h ep o p u l a rr e f l e c t i v em i d d l e w a r e ,e m p h a s i z et h ep k u a sm i d d l e w a r es e r v e ro f p e k i n gu n i v e r s i t yo nt h eb a s eo fj 2 e ef l a t f i n a l l yp k u a si su s e dt oc o n s t r u c tt h e f r a m e w o r ko ft h et e l e c o m m u n i c a t i o n9 7s e r v e rp r o g r a m a n dr e a l i a z e st h em i d d l e w a r e s y s t e mf r a m eo ft h es e r v e rp r o g r a m t h es t u c t u r ea n df u o i o nc a nb ef l e x i b l l ya n d e x p e d i e n t l ya d j u s t e dt h r o u g l lm o d i f 舛n gt h ec o n f i g u r a t i o nf i l e s ,r e a l i z e st h ed y n a m i c d e p l o y m e n ta n dr e a lt i m e o b s e r v a t i o no ft e l e c o m9 7s y s t e m a n dt h es e r v i n g c o m p o n e n tc a nb ed y n a m i cr e p l a c e da n dm o d i f i e di nt h er u n n i n gp r o c e s so ft h e s y s t e m s ot h es y s t m ec a nh a v eb e t t e ro p e n n i n ga n df l e x i b l ef e a t u r e a n dt h eo n l i n e e v o l v e m e n to ft h es y s t e mc a nb er e a l i z e d t h el i m i t a t i o no ft h eo l dt e l e c o m9 7s y s t e m o nt h eb a s eo f b l a c kb o xp r i n c i p l e ”t h a th a st h er i g e s c e n ts t u c t u r ea n dt h ew o r s e f e c o n f i 卫u r a t i o nc a nb er e s o l v e d k e yw o r d s :r e f l e c t i o n ,m i d d l e w a r e ,p k u a s ,t e l e c o m9 7 ,m e t a _ l e v e l , b a s el e v e l 声明 本人郑重声明我所呈交的论文是我个人在- 9 指导下进行的研究工作及取 得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含本人或其他人在其它单位 已申请学位或为其它用途使用过的成果。与我一同工作的同志对本研究所做的 所有贡献均已在论文中作了明确的说明并表示了致谢。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 论文怍者签名: 五喇n 日期:wt 、 关于论文使用授权的说明 本人完全了解西安建筑科技大学有关保留、使用学位论文的规定,印:学 校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的 全部或部分内容,可以采用影印、缩印或者其它复制手段傈存论文。 ( 保密的论文在论文解密后应遵守此规定) 论文作者签名五硝n 导师签名:日期: 注:请将此页附在论文酋页 西安建筑科技j 凡学顺l 学位论文 第一章绪论 1 1 课题背景及意义 随着i t 技术以及i n t e r n e t 的迅速发展,网络已进入我们的生活,分布式计 算已在i n t e r n e t i n t r a n e t 上得到了广泛的应用,传统的c s 结构更明显表现出 局限性,正逐渐被b s 结构所取代。基于b s 结构,以组件开发,利用浏览器作 为最终用户界面的解决方案已成为今后企业应用软件开发的方向,一种满足这种 需要的新的企业解决方案应运而生,这便是j 2 e e 。企业级应用被广泛采用,企 业级应用技术在不断发展,它的应用模式更在不断变化。归纳起来,主要有以下 几种发展趋势: 1 从传统的c s 模式向三层、多层分布式应用模式转变。 2 对象、组件技术的不断发展。 3 大量采用中间件技术。 根据企业级应用的发展趋势,s u n 公司提出了一个j a v ap 1 a t f o r mf o r t h e e n t e r p r i s e ( j p e ) 解决方案,为企业级应用的发展提供了坚实的基础。随着近年 来科技的发展,企业分布式技术日趋成熟,其中多层b s 构架和s u n 公司推出 的j 2 e e 技术被证明是成功的,己被应用于越来越多的企业系统建设中。目前分 布式企业应用最前沿的体系结构是多层b s 构架,该构架把表示逻辑,业务逻辑, 数据库等操作分离开来,各层相对独立,它是基于组件开发和应用服务器技术的 分布式应用。这种以应用服务器技术为特点的多层分布式计算模型( m u l t i t i e r s d i s t r i b u t e dm o d e l ) 1 1 ,适应了企业应用的发展要求,使企业计算具有良好的可扩 缩性、可靠性、稳定性、安全性等特点。同时,通过组件( c o m p o n e n t ) 技术进行 代码重用f 2 1 1 3 1 ,简化了系统开发的周期和效率,大大降低了企业应用系统丌发 的复杂度。 早在1 9 9 7 年,中国电信推出了“九七工程” 4 3 5 ,希望利用先进的技术 手段和管理方法,彻底提高电信业务的服务质量和综合管理水平,实现本地网市 内电话业务数据的集中管理和各生产部门的信息共享“九七工程”主要的设计 目的就是综合管理电信行业的客户资料和电信企业的各种号线资源,面向社会提 供各种电信业务服务然而,随着我国加入w t o ,随着电信业务的飞速发展以及 电信市场竞争的日趋激烈,对“九七”系统也提出了更高的要求。由于建网时 技术和观念的局限使得该系统存在着种种的不足,尤其是体系结构的不开放,使 得它很难满足发展的要求。所以,从2 0 0 1 年起,陕西电信开始对“九七”系统 进行改造,其中利用中间件技术实现“九七”系统由封闭独立向开放的分布式计 算环境过渡是关键任务之一。 而同时国外的相关产品并不适合中国电信行业的特点,客户化工作繁重且 价格昂贵,因此利用新的软件技术建设本地网统一、业务综合、技术先进、功能 齐全的业务管理系统已经成为电信企业的当务之急。 目前普遍采用中间件技术作为分布式环境下异构资源的共享与集成问题的 曲簧建筑科杖凡学坝j 学位论文 解决方案 6 。中洲件就是分布式系统中的操作系统。不断涌现的新的应用领域 对中问件标准提出了新的要求,比如说,实时系统、嵌入系统、电信领域和移动 计算等。传统的中间件已无法适应这样的多样性。主要原因是因为传统的中b j 件 技术,无论是c o i 疆a ,d c o m 还是j a v ar m i 都采用了“黑盒抽象”开发原则 7 , 将服务的实现细节完全封闭,人们无法去定制服务内容。而且模型的规则和约定 往往是在其实现途径中早己被强制规定好了,因此在框架安装配置好后,系统就 基本被固化,难以实现再次配置。这样的系统缺乏必要的灵活性和适应能力。 鉴于此,人们把语言系统中的反射技术引入了中间件领域n 5 【1 6 。本文的 目的就是为了解决传统中间件系统固化,难以重配的缺点。在现有中间件的”照盒 抽象”的基础上,将反射技术和开放实现应用到当前的中问件领域中以克服传统 中间件系统的单一性和不灵活性,从而可以更好的支持新的应用领域,例如多媒 体,实时系统,移动系统,电信领域等,实现应用系统的灵活性和可重配性要求 目前反射式中间件仍在不断的研究当中,已经有了一些基于反射机制的中间 件产品,他们实现反射的手段各有不同,但都是基于开放和原因连接的。反射中 间件基于开放实现的设计思想,利用反射技术的自检查自调整的特性,可以实现 对系统自身的灵活配置。 1 2 研究现状 将反射技术应用到中间件系统的设计中的研究才n 1 日 l 起步,已经引起了各 国研究者的关注。2 0 0 0 年4 月在纽约举行的m i d d l e w a r e2 0 0 0 会议上 1 0 ,与 会学者就反射中间件进行了专题讨论。同时,人们对反射中间件的工程应用也进 行了广泛深入的研究。目前,国内外开展昀反射中间件碗目主要有d y n a m i e t a o 、 o p e n o r b 、f l e x i n e t 、o p e n c o r b a 、p k u a s 和r e c o m 等。 i l l i n o is 大学的研究者景早开始这方面的研究d y n a m i c t a o 是在华盛顿大 学的实时o r b 软件t a o 的基础上研制的种反射式c o r b a 软件,其反射能力体现 在对系统服务的配置与重配置,即,通过配最管理器将特定的策略( 如安全策略、 调度策略等) 及其实现机制关联起来 1 7 。o p e n o r r 是l a n c a s t e r 大学的研究 者为构造开放的多媒体平台而开发的通用反射结构 1 1 。f l e x j n e t 是a n s a ( 先进 网络系统体系) 项目的一个部分,主要用来展示面向组件的概念和有效的构造可 重配置和可扩展的中间件平台。o p e n c o r b a 是法国c o l ed e sm i n e sd en a n t e s 大学采用反射式语言n e o c l a s s t a l k 实现的反射式c o r b a 。通过元类 ( m e t a c l a s s e s ) ,o p e n c o r b a 将c o r b ao r b 的内部特性分离并单独实现,从而 允许系统在运行过程中监铡并调整这些内部功能单元,如,监视并调整远程对象 调用的行为,在服务器进行类型检查等 1 2 。国内目前开展的反射中间件项目乇 要有,由四川i 电子科技大学计算机科学与工程学院的杨思忠博士主持的r e c o m 是 个基于反射的分布式对象中间件原型系统 8 ,北京大学的贝尔实验室杨芙清 教授等自主研发基于j 2 e e 平台的中间件服务器p k u a s 1 :j , 在反射式中问件系统实现方面,1 9 前的工作大多集中于c o r b a ( c o m m o no b j e c t r e q u e s tb r o k e ra r c h i t e e t u r e ) ,个别考虑了r m i ( r e m o t em e t h o di n v o e a t i o n ) 和c 。m ( c o m p o n e n to b j e c tm o d e l ) ,欠缺对j 2 e e 反射性的研究 1 5 ,本文则采 用了国内外首个反射式j 2 e e 应用服务器一p k u a s 1 3 。利用标准的j a v a 管理 用了国内外首个反射式j 2 e e 应用服务器一p k u a s 1 3 。利用标准的j a v a 管理 2 两篮建筑科技大学硕士学位论文 框架实现了基于微内核的构件化平台结构,在此基础上,实现了基于软件体系结 构的中间件反射方法所需的反射机制。本文以p k u a s 实时监控工具为例探讨如何 利用基于软件体系结构的反射体系管理整个电信运营系统,并给出了p k u a s 与其 他几种反射式中间件的比较。 1 3 本论文的工作和内容安排 本文的主要研究工作概括如下: 本文首先介绍了反射技术及其产生背景,并将反射机制应用于中间件技术中, 以解决传统中间件基于”黑箱机制”结构固化,重配性差的缺点针对当前流行 的反射中间件规范进行分析和比较,并详细介绍了一个反射式中间件服务器 p k u a s 的内部结构和实现原理,并将其应用到陕西省电信九七系统的升级改造中, 实现了系统的动态适应和在线演化,提高了九七系统的灵活性和可重用性 全文内容组织如下: 第一章绪论介绍了本文的技术背景及研究意义,同时简单地介绍了本文的工 作及内容组织。 第二章介绍了反射技术的基本概念。 第三章主要介绍了反射机制在中间件中的应用并对当前比较流行的中间件 作了比较,着重介绍了反射式应用服务器p k u a s 。 第四章叙述了电信”九七”系统改造过程中,采用了j 2 e e 规范和反射式中间 件技术,实现了系统在运行时的实时监控和在线演化,从而使系统具有更好的可 配置性和可重用性。 第五章结束语,对全文进行总结,并说明有待进一步研究的问题。 2 1 传统设计方法 2 1 1 黑箱抽象 第二章反射技术 软件设计一般遵循黑箱抽象( b l a c k b o xa b s t r a c t ) 的原则 1 1 9 ,也就是 只向用户提供使用模块功能的接口,而将功能的实现细节隐藏起来。这一方法在 处理软件重用、移植和计算中已经得到了广泛的应用。 黑箱抽象就是这样一种原则,使用黑箱抽象将系统分为若干个功能模块,每 个模块只将功能接口暴露给用户而屏蔽其内部实现。模块( m o d u l e ) 用来局部化和 隐藏内部设计细节,用户程序( u s e rp r o g r a m ) 通过模块接口( i n t e r f a c e ) 使用模 块的功能。如图2 - 1 所示,其中黑色矩形表示功能模块,而上边的横线表示接口。 图2 - 1 黑箱模型 黑箱抽象的目的是简化用户代码,因为用户只需使用模块提供的接口,而不 用关心功能的内部实现细节;同时也通过减少模块和用户程序的关联性,保证了 模块的移植性和重用性。 但是在某些情况下,黑箱抽象并不能很好的达到它的目的。因为如果功能模 块的设计者不知道用户是怎样使用该模块的,那就无法提供一个最适合用户的模 块实现策略,因为通常只有用户才知道怎样实现功能模块才能更好的适应他的应 用。所以设计者只能考虑最一般的情况,按相对通用的策略去设计模块,然后将 这种策略固化在模块实现中。黑箱抽象强迫模块的使用者接受设计者指定的默认 策略,然而当用户无法接受模块的部分默认策略,又希望使用该模块的部分功能 时,就会产生冲突。这时用户就希望通过某种策略对模块进行调整。 d 2 1 2 解决方法 为了解决这个问题,客户程序的编写者不得不采用一些折中的方法。有两种 形式:一种方法是冗余编码( h e m a t o m a so fd u p l i c a t i o n ) ,一种是混和编码 ( c o d i n gb e t w e e nt h e1i n e s ) 4 2 ,如图2 2 所示。 f a ) 图2 - 2 冗余编码和混合编码 1 ) 冗余编码 代码冗余( 图2 2 a ) 是在黑箱之上,利用所提供的开放接口,重新实现满足 自己需要的功能。这种重实现,使编程人员根据已知应用程序的属性,确定不同的 映射决策,以保证性能满足他们的特定需要但是对应用程序而言,这是一种代码 的冗余,因为用户实现库中可能重写了大量底层库中己经实现的代码,而且这种 方案也仅仅解决了针对这个具体应用的冲突问题,对于其它的应用也许还要开发 其它的功能库。 2 ) 混和编码 混和编码( 图2 2 b ) 方式的目的是获取更好的性能,需要客户编程人员要对抽 象实现者的映射决策和选择有一定的了解。采用这种方法有赖于对底层系统实现 和上层应用的较深认识。但是,混和代码通常比较晦涩难懂,因为系统自身的操 作和如何使用下层结构之间没有清楚的分开,而是混和在一起,使得代码难于移 植和维护。 2 2 开放实现 所有反射系统最初的动机便是开放实现( o p e ni m p l e m e n t a t i o n s ) 2 3 3 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 ) 3 2 ,如 图2 3 所示。 5 西安建筑科技大学颁上学位论文 f c :巾s 丸几t :k 霪二黪 且0 足 h n 咭l 矗i c 譬 冠最、t 如d t_ 1 、蠢簿一+ 脊脊瓣 潴 聱潦 b ;_ i $ e h l l e le l c e 蜊禺州,w 一“ 一 m e t a p r o g r a m m e r a p p l i c a t i o n p r o g r a m m e r m l o :m e t a l e v e lo b j e c tb l o :b a s e - l e v e lo b j e c t m o p ;m e t a o ”e c tp r o t o c o l 图2 - 3 元接口与基接口 在面向对象的系统中,元接口也经常被认为是元对象协议( m o p ) 3 2 。由上 图可见,一个基本反射系统必须提供以下两个层次: ( 1 ) 元层次( m e t a l e v e l ) ,该层次提供系统内部相关的信息,包括类型结构、方 法调用机制等等; ( 2 ) 应用层( b a s e l e v e l ) ,这一层构建于元层次的基础之上,外部系统可以通过 元层次提供的信息和操纵方法来动态改变这一层的行为。 因此,m e t ap r o g r a m m e r 可以增加或改变系统语义以满足a p p l i c a t i o n p r o g r a m m e r s 新的需求。 设计可重用模块的困难集中在对“满足广泛的客户需求”和“满足特定客户 需求”的平衡上:而影响这种平衡的一个关键因素是模块的内部实现策略,上面 讨论的黑箱抽象就是一种重要的实现策略。 虽然黑箱抽象有很多很好的特性,如可降低开发成本、局部修改性好等,它 屏蔽了内部实现细节,为用户提供了清晰的使用界面。但是基于黑箱抽象设计的 模块一般是面向广泛用户需求,并以典型的方法实现功能,由于模块实现策略是 固定的,这样的实现策略可能不能满足特定用户的需求。 研究发现,将所有的实现细节隐藏在模块接口后边是很不现实的,其中有些 细节是关键性实现策略,它会影响最终的实现性能,所以模块的实现细节应该向 客户开放,使客户也可以控制这些细节。如果能够让用户去控制模块的实现策略, 那么一个模块就会更具重用性。现在越来越多的系统在设计时,倾向于让客户自 己能够选择模块实现策略,以满足自己的需要。这种方法称为开放实现( o p e n m p l e m e n z a t i o n ) 所谓开放实现( o p e ni m p e m e n t a t i o n ) 是指将系统的内部实现开放出来,向 用户提供有约束的访问,以检查和控制系统的内部实现。 开放实现实际上是在黑箱抽象基础上的改进。黑箱抽象隐藏了所有的内部实 6 两立建筑科技大学硕:l 学位论文 现细节,而开放实现则允许由用户去选择或修改其模块的实现策略。但是丌放实 现并非意味着将所有的内部细节全部暴露给用户,因为这样将无法提供给用户一 个有效的友好的使用界面。通过适度的内部开放,开放实现在保持黑箱抽象的不 透明性和客户所需的性能要求之间取得平衡。 基于这个要求,开放实现要提供两类界面接口:基界面( 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 4 所示, 图2 4 开放实现抽象模型 基界面就是模块的功能界面,用户通过基界面使用模块功能:元界面也就是 模块的开放界面,用户可以通过元界面调整基界面所隐藏的细节实现。可以看出, 开放实现并非完全抛弃黑箱实现,而是保留了黑箱实现的优势。开放实现既要保 证对大多数用户提供典型的实现策略,也要保证对特定的用户使用特定的策略。 2 3 从开放实现到反射 然而,光是开放还是不够的。当一个系统的内在结构与其所表述的应用域, 两者之间任何一个的变化均会引起另一者的变化,人们称这种关系为因果连接 ( c a u s a lc o n n e c t i o n ) 1 5 。这样一种内在结构成为系统精确的自描述,于是系 统可以根据自己的运行情况来修改自己,以适应新的要求。因此,反射系统同时 具有内省和自适应功能。 在此基础之上,自描述还必须是完整的解释系统过程的展示。总的来说,一 个反射系统( 见图2 - 5 ) 应提供一个元接口用以开放其内在结构和操作,而这些内 在结构和操作又必须是完整的,并且与系统计算流程的自描述又是因果相连的。 在这个意义上,反射是程序的种能力,它可以使程序在运行时通过内省运行需 求,使用具体化( r e i f i c a t i o n ) 手段自己调解( i n t e r c e s s i o n ) 自己,动态获得新 的行为能力。具有反射能力的语言或系统,能够把对程序部分功能的定义延缓到 运行时确定,也就是可以让最终用户定制系统程序,进行系统级编程。这种特性 使得程序似乎具有了某种生命,使程序的演化( e v o l u t i o i 3 ) 成为可能。 西安建筑科技夫学硕i 一学位论文 图2 - 5 反射系统 开放实现和反射是密切相关的。两者的最终目的都是使系统更为灵活,以适 应用户的不同要求或环境的变化。开放实现强调系统与用户之间的关系,基系统 应该有原则的和受约束的将自身实现开放给客户。而反射强调的是系统自身的一 种能力。如果要将实现开放出来,反射涉及的就是如何才能将自身实现有针对性 的、有控制的开放。 其次,开放实现是一种思想,是一种方法论,与之相对的是黑箱实现。而反 射是一种系统设计的技术,种实现开放实现的技术。 最后,而这又很强的互补性,可以互相促进。所有的反射系统的目的都是丌 放实现,而开放实现是反射系统的必要非充分条件 2 4 反射 2 4 1 反射的定义 2 4 1 1 反射技术的提出 反射的概念最早是由b s m i t h 于1 9 8 2 年第一次提出的 4 5 ,最初的动机是在 语言或系统内部提供访问底层实现的约束方法。b s m i t h 在他的博士论文中给出 了一个通用的反射性定义:“反射性是实体具有的按照描述、操作和处理实体所 面临的主要问题域的相同方式来描述、操作和处理实体自身的一种能力”。该定 义在编程语言中被d g b o b r o w 等人解释为1 4 3 】:“反射性是程序具有在运行时 刻操纵一组数据的能力,这组数据描述了该程序的运行状态。数据操纵包含程序 观察并推理自身状态( 又称为观测) ,以及程序改变自身的运行或语义( 又称为 调整) ”。m a c s 在她的博士论文 4 4 1 中也给出了一组相关的定义:“计算系统 ( c o m p u t a t i o n a l s y s t e m ) 用来推理现实世界的一部分( 称为该系统的领域) 并基 于此进行些动作。计算系统可与其领域因果关联( c a u s a l c o n n e c t i o n ) ,即, 一方的改变将直接影响另一方。元系统( m e t a s y s t e m ) 是指将另一个计算系统作 为领域的计算系统,作为领域的计算系统被称为目标系统。元系统拥有目标系统 的一种表示,元系统的程序执行特定于目标系统的元计算,因而称为元程序。反 射性是指计算系统推理并操作自身的能力,而反射系统是指以自身为目标系统的 元系统 在讨论反射前需要先了解一下原因连接( c a u s a lc o n n e c t j o n ) 。根据m a e s 的 理论 4 4 ,如果一个系统是原因连接的,那么内部结构和所表示的领域以这样一 西安建筑科技大学硕士学位论文 种方式连接:任何一个改变都将导致另一个的改变。例如对于一个三维空间中的 图形对象,表示这个对象的内部结构包括该对象的三维坐标,这样的一个系统是 原因连接的,如果满足: 1 改变坐标将引起该对象的位置变化: 2 移动该图形对象将引起相应对象的三维坐标的变化。 这样的系统的内部结构可以称为自表示的原因连接,c a u s a l l yc o n n e c t e d s e l fr e p r e s e n t a t i o n ( c c s r ) 。此类系统有这样的好处:第一,通过自表示可以 提供系统准确的表示:第二,反射的系统可以修改自身。 2 4 1 2 反射的含义 目前没有关于反射的精确定义,学术界对反射本质的共识是:反射是一种描 述、控制和适应计算系统的行为的通用方法,它用系统自身的术语对系统的重要 特性或参数进行描述及操纵。p a t t i em a t e s 认为一个反射的系统就是能够进行 自描述( s e l fr e p r e s e n t a t i o n ) 、可以根据内部变化进行计算并修改相应描述来 改变其表现特征的系统,并且这个系统应该是原因连接的。其关键涵义是:程序 可以访问、推理和改变自己的解释。反射计算的基础是开放工程的方法。 由此,可以从两个方面来理解反射:监视自身的行为,监视自身需要能够表 示自身的行为信息:改变自身的行为,改变自身即对自身进行推理。 所有反射系统的动机是开放实现( o p e ni m p l e m e n t a t i o n ) 。软件工程的传统 观点是通过抽象来处理复杂性,使实现细节对用户隐藏。这就是典型的开发应用 构件的黑盒方法,其目的是为了重用。黑盒方法存在实际上不可能做到对用户隐 藏所有的实现细节。其原因在于通过抽象来隐藏实现细节时,必须代替应用做出 实现决策。然而应用本身也许有更重要的更有效的实现决策信息。开放实现的目 标是通过暴露模块的实现细节来解决问题,这就需要将系统功能和底层实现分离 开来。而前者( 系统功能) 被看作模块的基接口,后者( 底层实现) 看作元接口。元 接口提供元层访问接口。这里的开放是反射系统必要的但不是充分的条件 3 0 3 1 。 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。它 首先被程序语言的设计领域所采用,然后被引入到计算机的其它领域如操作系 统、分布式系统等。将反射引入到中间件,其最初的基本思想、基本概念等均可 应用到反射中间件中 综合上述观点可知,一个反射系统具有两个组成部分 1 3 ,如图3 - 6 所示: 一部分对系统的问题域建模并对其进行推理和操纵,以解决问题;另一部分对系 统自身建模并对其进行推理和操纵,使系统适应某些变化。而且,两个部分采用 同样的实现机理。从实现角度看,前一部分组成基层实体,后一部分组成元层实 体,基层实体与元层实体之间具有因果关联( c a u s a lc o n n e c t i o n ) ,即,基层 实体状态或行为的任何变化均立即导致相应元层实体的变化,反之亦然。因此, 本文对反射性的定义是: 9 两安建筑科技太学硕一i :学位论史 0 0 m 珧h a t 湎 a b ts y s l c m h c l l :”1 7 ”i :i | 1 0 1 ,t 。 “。”。”i ,l 。t t l 。l 。, 。i i 。;:、。“。” h l m | 1 1 0 1 1 f 1 1 1 m m a n i p “阶m n c :一一。乙 4 图2 - 6 反射系统的基本模型 孱。巴 in h 、t :1 i r n 1 1 t c l l 1 1 么t t 2 ;。 釜r 川“玎,f 、伊 l 。、“ 反射是系统能够推理( r e a s o l qa b o u t ) 并作用于( a c tu p o n ) 自身的能力。反 射的系统提供对自身行为的表示,这种表示易于检查和调整,并与其描述的后台 行为因果相关。当对系统自表示有任何修改时,就会立即改变系统相应状态和行 为,这种系统对内部结构的表示被称为因果相关的自表示( c a u s a l l yc o n n e c t e d s e l fr e p r e s e n t a t i o n ,c c s r ) 1 5 。1 9 8 7 年c m a e s 提出反射系统定义:反射系 统是存在因果相联的自表示的系统,它与开放实现是密切相关的,通过元界面提 供对内部结构和操作的开放访问。这些内部结构和操作应该提供对计算进程完全 的因果相关的自表示。 这里有两个重要概念:因果相关( c a u s a l l yc o n n e c t e d ) 和完全性 ( c o m p l e t e n e s s ) 1 5 。所谓因果相关是指系统的内部结构和它表示的范围相互 联系,如果任何一个发生变化则导致另一方发生变化。也就是说,当系统自表示 发生变化时,会立即作用到系统的状态上。因果相关首先需要系统提供对自身进 行精确描述的自表示( s e l fr e p r e s e n t a t i o n ) ,其次系统要能够根据自表示通过 目身计算修改自身行为。 对于一个完整的反射系统而言,仅仅因果相关是不够的,内部表示必须提供 一个完整的解释处理自表示的模型,也就是所说的完全性。 例如,对于类似j a v a 的解释型语言,其解释器是具有反射性的,假定其解 释器的c c s r 提供了对方法分配、垃圾回收、类装载的表示。通过修改c c s r ,就 可以调整程序执行的相应的语义。比如,在每个方法调用前插入对调试函数的调 用,就可以增加调试功能:也可以在类加载前,增加安全检查模块等。 2 4 2 反射体系结构 反射体系结构分为两层:元层和基层。元层定义了设计模式中的不同状态的 转换控制,而基层包含应用的特殊信息,包括应用类及其方法,类之间的关系等。 在系统运行中,元层通过设计模式来控制基层行为。 图2 7 是使用u m l 描述的反射系统基层和元层之间交互的顺序图。 1 0 oi*镕目i 润0 p 辩 n 豁 cs 甜 w“ 帅 m 艮 r 0 西安建筑科技大学颁十学位论文 曼量皇曼曼曼曼岂蔓詈曼曼皇! 曼量曼舅薯皇皇曼曼皇曼皇曼皇曼曼曼寡皇曼置邕囊l i i 曼量皇皇! ! ! ! 曼曼曼 降一旦 当一个对象请求操作时,元对象控制器将操作发送到元对象。元对象具体化 相关的基层对象。而在元层,则执行与具体化的对象有关的元操作。基层对象的 改变由元操作来实现。最后元对象将结果返回给元控制器。 元对象控制器委托给元状态模式来决定系统每一个对象的状态和行为。元状 态决定每一个与执行有关的状态的行为。元对象负责监督和控制基层对象的行 为,元对象和m o p 实现改变对象的行为。 2 4 3 反射的实现原理 在面向对象的系统中,计算的基本单元是对象,通过对象之间的交互,系统 执行特定的任务。反射系统的目标之一是将元级和基础级分离。根据反射的两个 方面,在面向对象的反射系统中,系统逻辑上划分为两层,并且区分基对象和元 对象。第一层为基层,描述系统计算及应用功能。该层上的实体为基对象。第二 层为元层,描述系统如何实现,该层上的实体为元对象,提供应用系统具体化表 示和元接口,主要描述基对象的内部结构和行为信息,元对象的类是元类。即元 对象可以跟踪、控制基对象的特定方面( 结构和行为) 。 反射系统中,应用程序的静态表示特性和动态执行特性一样,可通过描述计 算行为的程序表达来控制,这样的程序称为元程序( l e t a p r o g r a m ) 9 ,即程序 的程序。元程序与应用程序可以用同样的语言编写。元程序在整个系统的软件层 次称为元级( 层) ,相应直接执行应用功能的程序则运行在基础级( 层) 。开放动态 体系中多数应用的调整大多发生在元级。 基层和元层之间通过原因连接实现。通过原因连接,元层的变化反映到相应 的基层。要对基层对象执行情况进行监视,需要将基层应用系统的结构或语义行 为抽象到元层,再实际定义为具体的语言元素,这个过程称为具体化 ( r e i f i c a t i o n ) 9 。如j a v ar e f l e c t i o l la p i 中的m e t h o d 就是对象方法的一个 具体化。 两层之间的接口集合称为元对象协议m o p ( m e t ao b j e c t p r o t o c 0 1 ) 3 0 3 1 。不同的反射系统有不同的元对象协议,大致来讲,元对象 两蜜建筑科技大学硕一k 学位论文 协议主要建立以下交互: 1 连接元层和基层的对象。这种连接可以是静态也可以是动态的,对象可以 是一对一的也可以多个元对象对应一个基对象: 2 具体化基层对象的结构和行为特征,提供屏蔽程序的行为、结构、数据、 关系信息的手段: 3 执行:通过拦截和具体化机制,使得可以对用户来说透明地使元层计算和 基层计算交互: 4 修改:元对象能够改变基对象的行为和结构。 这种两层结构可以推广到更多层,其中每一层被更高的一层元层反射。 2 4 4 反射的特征 拽纾系统讲珏 味闲造孩 祥扶晦j j 钡域n u 题 图2 - 8 反射的两层结构 反射具有以下主要特征: 1 透明性 由于反射系统在逻辑上分为两层或更多层,每一层上的对象独立于其他层e 的对象。元层与基层的交互对于用户来说是透明的。 2 分离 反射系统中最大的特点就是分离,即基层和元层分离。每一层执行不同的功 能。 3 扩展性 反射的系统具有可扩展性。 4 粒度 基层系统被反射的粒度是实现中很重要的因素:粒度不够,系统灵活性自然 不好:但反射的太多,性能就一定会受影响。因此,决定反射粒度需要在灵活性 和性能间作折衷。但一个好的反射系统总是把粒度控制权交给用户,以下是一些 不同粒度的反射: 1 表达式:针对基层程序中的表达式或语句做最细致的反射。 2 对象实例:每个基层对象实例可以关联到不同的元对象,因此,同样类的 不同对象实例可能具有完全不同的特性,尽管这些实例的基层代码是一样的。 3 对象类:每个基类使用自己的m o p 。这样,该类对象的元级行为由此m o p 操纵。 4 对象组:用同样的m o p 操纵一组对象。 5 全部:对所有基层程序进行反射,这样做的效率很低。 2 4 5 反射的两种类型 基础级反射系统有两类信息可具体化:结构和行为,分别对应结构反射和行 为反射。【2 5 j 2 8 1 结构反射 结构反射指元对象提供对基层应用的结构化信息、状态空间等检查和访问的 机制。元级信息包括:对象所属的类、派生结构、当前运行方法、或消息传输的 协议等。 实际的例子有:j a v ar e f l e c t i o n 提供对象结构信息的反射a p i :c o r b am o f 规定如何描述对象接口语义的元级接口并提供向i d l 映射的机制等。 2 行为反射 行为反射指元对象可以检测、访问基础应用中的一些涉及行为关键语义的事 件,甚至对事件进行修改,而这一切应当对基层应用是透明的。典型的事件有: 方法进入执行和完毕、方法在对象中的分派、消息到达、对象被激活等。实际的 例子有:c o r b a 2 2 中定义的拦截、j a v a 语言的类加载方法等。 行为反射中,对象方法能否被反射取决于方法是否在元对象上激活。一个方 法如果由改变缺省方法的元对象以扩展方式激活和执行,那么该方法就是反射的 方法。根据缺省方法激活的方法就不是反射的。因此,每次一个对象接收到反射 的方法调用,反射机制捕捉消息,并将控制传递到元层,如果对象接收到的非反 射方法的消息,反射机制不将控制重定向到元层,而直接使用缺省的系统消息控 带i i 。 图2 - 9 元对象的消息传递控制 2 4 6 反射技术的应用 反射技术的研究已经从最初的编程语言,扩展到操作系统、分布式系统以及 中间件领域。反射技术在中间件中的研究已经成为中间件研究的新方向。 2 4 7 反射的操作系统 操作系统的开放需求由来已久。在操作系统实

温馨提示

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

评论

0/150

提交评论