(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf_第1页
(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf_第2页
(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf_第3页
(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf_第4页
(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机软件与理论专业论文)反射中间件研究及其在金融计算平台中的应用.pdf.pdf 免费下载

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

文档简介

摘要 交易中间件和消息中间件在金融计算平台中的应用较为广泛,它们屏蔽了 底层环境的异构性和复杂性,基于这种架构的应用实现中,一个模块应该呈现 其功能而隐藏其本身的实现,体现了可移植性、可重用性等基本对策和理念。 尽管这种做法有许多优点,但事实表明,有时候它并不能满足各种客户的不同 需求,同时存在灵活性和适应性的先天性不足,特别是在金融计算平台上,由 于业务十分复杂,逻辑多变,因此需要中间件系统具有更大的可定制能力、灵 活性和适应性。 为此,我们建议在中间件系统设计中应用反射机制,所谓反射是指所研究 的对象“感知自己、自行推理和作用于自身”的一种能力,反射包括对象的反射 和消息的反射,本文提出了用元数据描述表来实现消息的反射机制,使得面向 消息中间件传送的消息不再是一个字节流,而是一个可以支持因果相联自表示 的消息对象,它能对数据进行类型和数值有效性检查,并且具备应对业务数据 变更的适应能力。 为了满足金融计算的业务逻辑的定制需要,应在面向消息反射中间件的基 础上实现对象的反射机制。在此反射中间件上执行的每一次计算首先从客户的 运行空间切换到反射协议栈,转换为可插入的元对象的操作,通过调用绑定协 议,再切换到具体的服务对象的实现,计算得出结果后以相反方向返回,从而 完成一次计算操作。 根据业务需要,修改元数据描述表,可以让消息对自身数据的含义有不同 的描述,并以相应的格式进行报文编码解码,从而实现客户对消息的定制能力, 另外,中间件的实现采用微内核结构,其服务的实现也应该是可定制的,用户 自己实现的业务逻辑也是通过发布服务的方式来实现,借助可插入的反射协议 栈,中间件自身和用户应用的业务逻辑都是可以灵活地被定制的。 本文实现了一个面向消息的反射中间件并在金融计算平台上得到应用。 关键字:中间件,反射,舍融计算 摘要 a b s t r a c t 1 m n s a c t j o nm i d d i e w a r ca n dm e s 姐g co r i e n tm i d d l e w 盯ea r ea p p l i e dw i d e l yo n s y s t 锄o fm o n e t a t yc o m p u t a t i 叩;t h e yh 王d et h ec o i n p l e x i t ya n dt h ev a r i a n c co ft h e 岫d e d y i n ge n v i i o m e n t ht h es y s t 啪b a s c do nt h e s es 协l c t u r e s ,am o d e ls h o u l d p f c s e mi t sf i i n c t i o nw h i kl l i d et h e 岫d e r l y i n gi m p l e m e n t a t i o n ,w h i c hi sd e s i g n c df o r p o n 曲i l i t y 粕dr e u s a b i l i t y ;i ns p i t eo fm 硒ya d v 蛆t a g e so ft l i i ss t r a t e g y f a c t ss h o w t h a ti ti sd i 佑c t i l tt om e e td i m r e n td 锄a n d so fv a r i o u sd i e n t s ,t h c ya r ci n h e r e n t l y s h o no ff l e x i b i l j t ya | 1 da d 印t a b i l i t y e s p e c j a l l yo ns y s t e mo fm o n e l a r yc o m p u l a l i o n , t h cb u s i n e s si sv e f y m p l j c a t c da n dt l l el o 百ci sc h 柚g c a b l e ;s oi ti sn e 。e s s a r yf o r m i d d l e w a r es y s t e mt ob em o r ec u s t o m i z a b l e ,n e x 谗l ea n da d a p t a b l e f o rt l l a tr e a s o n ,a p p l y i n gt h er e n e xm e c h a n i s mt ot h ed c s i g no fm 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 dr e f l e c t i o ni sa n 曲i l i t y0 fs y s t e mt or e a s o na b o u ta l i da c tu p o n i t s e l f 1 1 l ec o n c c p t i o no fr e n e c t i o ni n c l u d e st l l er c n e c t i o no fo b j e d sa n dt h a to f m e s s a g e s i nt l l i st h e s i s ,t h em e t a - d a t ad e s c r i b et a b l ei su s e dt oi m p l e m e n tt i i er e n e x m c c h a n i s mo fm c s s a g c ,w h i c hm a k em e s s a g ei sn ol o n g c rab y t e s t r c 锄,b u ta m e s s a g eo b j e c t s t l l a ts u p p o nc a u s a l l yc o l l n e c t e ds e l f ”p r e s e n t a t j 咖,t y p ec h e c ka n d v a l i d i t yc h e c l 【,i ta l s 0h a v et h ea d a p t a b i l i t yf b rb u s y l l e s sd a t am o d j f i c a t i o n t om e e td e m a n d so f b u s y l l e s s1 0 舀cc u s t o m i z a t i o no fm o n e t a r yc o m ”t a 蛞o n ,t h e r e 】既c xm e c h a i i i s mo fo b j e c t ss h o u l db ei m p l e m e n t e db a s e do nt h em e s s a g e - o r i e n t e d r e n e c t i v em i d d l e w a t e e v e f yc o m p u t a t i o np e r f o 加e do nt h i sr e n e c t i v em i d d l e w a r c s w i t c ht 0t h er e n e c t i v ep m t o c o ls t a c kf r o mt h em n t i m es p a c eo fc l i e n tt 0t r a _ i i s f b 加s t ot h eo p e t a t i o no fp l u g g a b l eo b j e c t s ;t h e ns w i t c ht ot h es p e c i f i cs e i c eo b j e c tb y r p cb i n d i n gp r o t o c o l s ;r e t u mt h er e s u l t sb yo p p o s i t ed i r e c t i o nt o c o m p l e t et h e c o m p u t a t i o n a c c o f d i n gt ol h en e e do fb u s y n e s s ,m o d j f yt h em e t a d a l ad e s c r j b et a b l e ,f b e n m e s s a g eo b j e c t sh a v ed i f f 色r e n td e s c r i b eo ni t s e l fa n de n c o d j n g d e c o d i n gt h em e s s a g e a c c o r d i n 舀yt h e n t h em e s s a g ec a nb ec u s t o m i z e d b y c l i e n t s 1 n a d d i t i o n , t h e 摘要 i m p l e m e n t a t i o no fm i d d l e w a r ei sd e s i g n e da s m i c m k e m e ls t n l c t u r e ;w h i c hi s c u s t o m i z a b l e ;s oi ti sf o rb u s y n e s sl o g i co b j e c to fd i c n t ,b o t ht l i em i d d l e w 盯ei t s e l f a n dt h ed i c n tl o 舀cc a i l b ec i i s t o m i z e db yt h e 讲u g g a b l ep r o t o c o ls t a c k w eh a v ei m p l e m e n t e dam e s s a g e 耐e n tr e n e c t i v em i d d l e w a r ea i l da p p l i e di ti n t h es y s t e m0 fm o n c t a r yc o m p u t a t i o n k e y 、7 1 7 0 r d s :m i d d l c w a r c ,r e n e c t i o n ,m o n e t 盯yc o m p u t a t i o n - 1 1 1 i j t ,气,量 郑重声明 本人的学位论文是在导师指导下独立撰写并完成的,学位论文没有剽窃、 抄袭等违反学术道德、学术规范的侵权行为,否则,本人愿意承担由此产生的 一切法律责任和法律后果,特此郑重声明。 学位论文作者c 签名,:洳俨稂钽 2 0 0 2 年5 月1 8 日 第一章引言 1 1 问题的提出 第一章引言 1 1 1 背景以及市场需求 近年来,随着我国金融改革进一步的深入和完善,国内金融市场取得了很 大的发展,建立了相对完善的金融市场框架、培育出了金融市场的基础格局, 这种培育不只是简单地成立各类与国际金融市场相对应的股票、债券、基金、 外汇、黄金、期货等市场名称或形式,更重要的在于形成了统一互联的多层次市 场架构和严格有效的市场规则,有一定的市场规模和种类繁多的市场产品,这样 发挥出资本市场整体功能,也提升了金融市场的效率和作用。 从1 9 9 0 年1 0 月国务院成立中国郑州粮食批发市场,开始期货交易试点以 来,由于国务院对支持、鼓励今后我国资本市场的态度,我国期货市场从2 0 0 1 年走出低谷后,成交量和成交金额节节攀升。 伴随着期货市场的迅速发展,自1 9 9 5 年始,中国开始期权交易的研究。1 0 年来,中国期权市场研究从三方面迈出了坚实步伐,即期权制度体系建设、期 权市场需求开发和期权技术系统设计。这是中国交易所从三方面向期权市场发 起的金融战略冲锋,也是中国期权市场发展的“三部曲”,更是中国期货业机制 创新的重要举措。 可以说,中国期权市场在孕育、研究阶段的发展已经从三方面迈出坚实步 伐,即期权制度体系建设、期权市场需求开发和期权技术系统设计,并且总结 出“计算机系统是平台、保证会结算是核心、交易所规则是保障、做市商制度 是关键、交易者培训是基础”等一整套期权研究经验。 期权交易是在期货交易基础上产生的一种全新的衍生品和有效的风险管理 工具。它是一种在未来特定时| 、日j 以特定价格买进或卖出一定数量特定标的的权 利,是一种权利金交易。和期货交易相比,期权交易具有以f 特殊功能: 第一章引言 对交易风险实现更加严格的监控 更好地实现价格发现功能 规避风险的需要 市场创新需要期权 在此市场背景下,期权电子交易系统的研发提上日程,由于期权品种数量 较多,因此对系统要求也较高。同时,由于业务的复杂程度增加以及对性能的 要求,普通的c l i e n t s e r v e f 模式已经不能够满足需要。 实时的电子化交易系统,一方面对响应速度、系统容量、吞吐量要求较高, 另一方面业务变更比较频繁,每一次业务的一个小小的变更往往会导致重写大 量代码,重新测试,并且系统越来越复杂,以致很快就无法继续维护。因此必 须基于中间件来开发这一系统。 1 1 2 中间件系统现状 作为分布式应用的开发与运行的主流平台,分布式中间件屏蔽了底层环境 的异构性和复杂性,允许分布式应用以“黑盒”方式复用其中封装的支撑机制, 中间件是构建分布式应用中的一个重要角色,是分布式系统结构的“脊柱”。 根据中间件系统采用的技术不同,中问件被分为:面向消息中间件 ( m e s s a g c o f i c n 把dm i d d l e w a f e ,m o m ) ,事务处理中间件( t r 锄s a c t i o np m c c s s i g m o n i t o r ,t p m ) ,面向对象中间件( o b j c c t o r i e n t e d m i d d l e w a r e ,0 0 m ) 。 著名的中间件产品有:i b m 的m q s e f i e s 消息中i 、日j 件、微软的消息队列服务、 清华紫光的t h m t 、联想集团的l x b x 以及南天电子信息产业集团的o f p 0 p e n t p 等。各大厂商开发的中间件基本上都实现了以下功能: 用接口把软件功能的实现封装起来形成软件组件,使之能在跨平台和软 件环境上共享,在异构环境中实现对象互操作,并协调操作的一致性和 完整性: 屏蔽分布式环境中各种网络协议、硬件体系结构、操作系统及数据库等 方面的差异性; 第一章引言 通过提供应用级协议和格式来访问应用服务,支持一个或多个应用模 型和管理程序来实现复杂应用。 近年来,随着一些新的应用领域,例如多媒体、实时系统、c s c w ( c o m p u t e r s u p p o n e dc 0 0 p e r a l i v ew b r k ,计算机支持的协同工作) 和移动系统等的飞速发展, 有许多新的应用,如果能够了解底层环境的状态和细节并随之做相应调整的话, 会取得更好的效果,因此客观上要求中间件能动态地进行变化以适应于外界环 境的改变,并提供一种对应用程序可见的能动态控制和改变系统的机制。 “反射性( r c n e c t i o n ) ”的概念首先在人工智能领域出现,然后被引入计算机 的其他领域将反射性引入中间件能够以可控的方式开放平台内部的实现,从 而提高了中间件的定制能力和运行时的适应能力,g s b l a i r 在文【1 】中详细阐 述了反射与中间件的结合,并且提出了反射是下一代中间件的主要特征。此后, 反射得到了越来越多研究人员的重视,成为中问件研究领域的一大热点。由于 组件在装载和替换等方面较方便,目前的反射中间件本身大多是基于组件风格 的,可替换组件通常是网络协议,安全策略,加密算法等,而且主要集中在分 布式对象平台上,如各种应用反射机制的c o r b a 、c o m 、o r b 、r m i 研制等, 它们大多数使用面向对象的方法提供反射功能,从而提高系统的开放性和可定 制性。 1 1 3 存在的问题 交易中间件和消息中间件在金融计算平台中的应用较为广泛,他们屏蔽了 底层环境的异构性和复杂性,在这种架构下的实现中,一个模块应该呈现其功 能而隐藏其本身的实现,尽管这种做法有许多优点,但事实表明,它同时存在 灵活性和适应性的先天性不足。 远程交易系统基本的需求是实现信息的交换比如订单委托的录入,成交回 报以及行情的发布等,都是以消息传递为基础。因此应该在面向消息的中间件 平台上二构建这个系统。 m o m 支持在多个分饰式应用环境的各种计算进程之问。以同步或异步方式 第一章引言 进行多种用途的消息交换( 传递或排队) 。消息的发送接收双方保持一种松耦合关 系即发送方不用等待接收方的回应、接收方也不必也即处理发送方的请求,可 以把消息安全地发送到一个或者多个目的地。但是,m o m 也有一些局限性: 首先,m o m 缺乏类型安全检查,大多数中间件系统只能发送或接收普通的 消息包,这需要客户编程人员自己编码和解析数据,增大了出现系统缺陷的几 率,需要更长的开发周期。 其次,m o m 在实现上典型地都是专有产品,这意味着m o m 实现之间存在 不兼容的问题。不利于系统的灵活性,可维护性,可移植性。 另外,m o m 以消息队列操作为核心,开发人员进行消息传递时,必须清楚 地意识到消息的发送和提取分别针对那些队列,当队列过多时就产生了队列管 理的问题。 最后,目前反射中间件在数据的反射和数据服务的定制研究方面比较薄弱, 传统中间件产品虽然能满足分布式系统的要求,但是在实际应用中,内建的服务 往往不能完全满足需要,在系统定制方面仍需客户编程人员做大量工作,其次 由于交易系统的业务逻辑变更也较频繁,原有代码的升级,替换工作量较大。 1 2 解决问题 1 2 1 思路 反射包括数据的反射,对象的反射,因此借助对数据的反射能力,m o m 可 以进行消息的类型安全检查,消息队列的自动发现,通过反射,可以定制新的 数据组织形式。 借助面向对象的思想,使得m o m 也有描述远程过程调用和分布式对象的 能力。通过反射,这些分布式对象可以被订制,并且具备m o m 的松散耦合特 性。 第一章弓f 言 1 2 2 理论依据 反射的概念是由s m 油在1 9 8 2 年首次提出的,是指程序可以访问、检测和 修改它本身状态或行为的一种能力【3 4 】。 系统具备反射能力,意味着它可以暴露内部的实现结构,亦即元数据给用 户,用户可以在运行时通过修改元数据达到动态改变系统行为的目的;同时系 统的改变也会动态反映到元数据【1 l 上来。 反射能力是通过元对象协议( m e 协- o b j e c tp r m o 1 m o p ) 提供的【1 凋。m o p 在元层定义了现有服务。元层操作的例子包含改变消息传送的语义,在方法调 用前后的插入动作等。 对元层的访问是通过具体化限e j n c a 曲) 过程来实现的。具体化能有效地使 某些内部表示明了化,因此能从程序中进行访问。相反的过程称为吸收,它改 变或覆盖元信息的某些方面。 反射的思想提出后,许多研究人员通过应用反射机制来实现运行期间可定 制( c u s t o m i z a b l c ) 、可重配置( r e c o n f i g l l r a b l c ) 的体系结构,提高中间件的开放性和 灵活性,由此产生了反射中间件( r e n e c t i v em i d d l c w a r e ) 【1 _ 5 1 。 最初关于反射的研究仅限于编程语言设计领域,并在l j s p 和面向对象方面 取得了进展。其中的l 凰如i e a d + + ,o p e n c + + ,m c t a x a 和o p e l l j a v a 等就是 基于反射机制的语言。后来研究领域逐渐扩展到操作系统,尤其到现在,更多 地出现在分布系统中。 通过对面向消息中间件的反射机制的研究,在期权电子交易系统的研发中 引入面向消息的反射中间件,既适合交易系统的以消息传递为主的基本需求, 又满足了对复杂业务的支持,以及对业务的扩展需要。 1 2 3 目标 为m o m 增加反射能力的目标为: 当缺省的实现满足需要的时候,作为常规m o m 提供基本功能。 第一章引言 通过数据的反射,客户编程人员可以定义新的消息队列格式,提供类型 安全检查,不必关心数据对象的远程传输过程细节。 在此基础上实现可定制的分布式对象架构,使得m o m 可以描述系统各 部分的接口,客户编程人员可以对这一接口进行编程,不必关心其服务 代码的实现。 基于这种思路,面向消息的反射中间件为客户编程人员提供两方面的可定 制界面:数据的订制,服务对象的订制,他们又分别呈现出双重界面:基界面 ( b a s e i n t e r f 如e ) 和元界面( m e t a - j i l t e r f 她e 1 。 1 2 4 设计原则 在设计m o m 反射中间件时应遵循以下原则: 基于面向对象思想,使抽象和实现分离。在设计中间件系统时首先定义 抽象功能,然后逐步实现细节。 概念分离,客户可以使用元界面定制某些功能,但没有必要了解其内部 实现,只有这样,服务才能被重新订制或者替换。 渐增性,客户仅仅希望修改某一部分而不需要从头再做一个完整的实 现。可以使用面向对象思想的继承机制实现。 健壮性,客户方面的代码逻辑错误可以被识别,并给与出错信息,不会 影响系统的正常运行。 开放性,中间件的设计必须充分考虑到基层和反射层的扩充性,便于后 续的扩充,订制。 因果相连,所谓因果相连,是指对反射系统自描述的改变能够立即反映 到系统底层的实际状态和行为上的情况,反之亦然。故此反射系统是支 持因果相连的自表示( c a u s a l l yc o n n e c t e ds e l 瓜印r e s e n t a l i o n ,c c s r ) 系 统。 第一章引言 1 3 所做工作 很多领域的系统,特别是实时的电子化交易系统,方面对响应速度、系 统容量和吞吐量要求高,另一方面业务变更比较频繁,往往每一次业务的一个 小小的变更会导致大量代码需要重写,重新测试,系统越来越复杂,以致很快 就无法继续维护。 为了解决这些问题,做了以下工作: 本文把反射机制引入消息中间件中,提出了一种面向消息的反射模型, 及其设计思想和设计原则。这种反射模型借助元数据描述表 ( m e t a d a t a 1 a b l e 简写m d t ) 来实现消息反射机制。 基于m d t ,实现了一个面向消息的反射中间件( m d t - r e m o m ) ,并在金 融交易平台上初步应用,解决了系统业务变更带来的维护难问题,并且 在中间件系统上进行了通信优化,增加了负载均衡技术,经过一定时间 的运行和维护,效果良好,获得了客户和专家的认可。 提出借助元数据描述表,把通用数据包对象灵活地应用到中间件系统 中,作为中间件的反射元数据对象,这种通用数据包对象可以包容所有 通信协议和数据格式,比如与x m l 的互相转化。 在面向消息的反射中间件的基础上,提出了对象反射的结构模型和服务 定制机制。为面向消息的反射中间件的进一步发展做了一些研究工作。 1 4 应用结果 通过在实际系统中的应用,以及模拟交易大赛的运行检验,面向消息的反 射中间件在应用方面取得非常良好效果,期权电子交易系统先后获得省科技进 步二等奖和国家科技进步奖。 消息的反射机制为交易系统的业务升级带来了巨大便利。例如:由于增加 了组合订单和组合行情,对发御组合行情这项工作,如果在原来的系统实现 中,需要增加底层网络胁议,并且编写相应编码和解码工作。以及数据的安全 第一章引言 传输等工作。而通过反射机制,我们仅仅需要在元数据描述表增加组合行情的 数据格式。为系统指定一个消息队列,客户端和行情发布者就可以直接操作这 一队列,这机制体现了以下几方面的好处: 开发周期短,由于不需要重新编写底层代码,编程人员可以把主要精力 放在业务相关代码的编写上。相应新业务的测试周期也要大大缩短。 出错几率大大降低,一方面业务的变更仅仅需要编写业务相关的小部分 代码,另一方面面向消息的反射中间件提供了数据的类型检查机制,使 得代码编写的错误能及早发现。 中间件的通信实现采用前摄器模式,充分发挥了硬件性能,提高了系统 的数据吞吐量。 中问件系统增加前置机和基于负反馈的负载均衡机制,增加了大客户连 接数,保证了系统的高可用性。 另一方面,面向消息的反射中间件也有一些不足,由于引入了反射机制, 系统的运行需要额外的负担,比如类型检查,元数据的管理和组织等,与不引 入反射机制的系统相比会损失一些性能,但是通过优化的通信技术和前置机负 载均衡技术,系统完全能满足系统的实时性需要,并且比老版本的系统支持更 多的客户端和更大的数据吞吐量,在老版本的系统中增加优化通信以及负载均 衡等技术,需用付出较大的工作量,并且通用性不够。 1 5 其它应用领域和研究动向 随着企业各种应用的迅速增加以及更多地把自己的业务转向电子商务,企 业应用集成( e n t e r p r i s ea p p l i c a t i o ni i l t e 铲a t i o n ,e a i ) 技术对企业的重要性也日益 显现。越来越多的企业开始采用e 舢技术将企业内部的应用软件与外部客户和 供应商的应用软件进行链接,实现数据流和业务运作的自动化,从而达到业务 的实时与快速。而传统的消息中间什m e s s a g e o u e u e 主要用于解决不同应用系统 之间的可靠消息通信的| 、u 题,无法适应在企业应用集成所要求的多个系统之问 服务互联,消息交换,多种消息格式的相互转换、多种通信协议支持等新的要 第一章引言 求。面向消息的反射中间件的出现能很好地解决这些问题。 反射中间件的研究方兴未艾,m i d d l e w a r e2 0 0 0 会议专门就此进行了专题讨 论,反射技术在移动计算、无线网络、实时、多媒体环境中的运用得到了特别 的关注。另外,相关理论、技术也亟待进一步的探索。 反射中间件提供了传统中间件所缺乏的灵活性和适应性,而且它关注分离。 不同的反射中间件之所以采用了不同的反射结构模型,一个重要原因是它们面 向各自特定的应用领域。如,d y n a m i c l a o 着眼于构造实时的分布式系统,而 o p e n o r b 针对的是分布式多媒体平台。通过反射技术,还可以灵活地为中间件 引入其它的一些行为属性,如安全性、可靠性、负载平衡等。 使用反射也存在一些缺点。首先,反射可能会导致额外的性能开销。特别 是需要额外的代码去确定系统行为的精确解释( 因为这些行为会发生变化) 。另外 一个缺点是在允许程序员可以访问下层系统实现的同时,必须保证系统的完整 性和一致性。 通过区分不同的抽象分层,反射技术有助于关注分离,即将系统的功能性 属性及不同的非功能性属性分离开来。但是,当将这些分离的属性组合起来时, 如何保持各属性最初的语义值得深究。比如,为了提高分布式系统的安全性而 引入加密算法时,有可能会影响系统原本的实时性。 另外,如何从软件工程的角度,提供支持反射中间件开发的原则、标记、 方法和工具等,也引起了一些研究人员的关注。 第二章反射和反射中间件 2 1 反射 第二章反射和反射中间件 反射的概念最初由s m i m 在1 9 8 2 年提出【3 4 】,bs m i l h 提出一种假设,即系 统对外界提供某种解释器( i n t e i p r c t e r ) ,通过访问这个解释器感知到外界环境的变 化,并进行相应的调整;这就是最初的反射的概念。 p a n im s 首次将反射引入到了面向对象编程领域【3 s 】。抽象地讲,反射是系 统的一种推理和作用于自身的能力。反射系统,是指这样一种系统:它提供了 关于自身行为的表示,这种表示可以被检测和调整,且与系统的行为是因果相 联的( c a u s a l l yc o 咖e c t e d ) 。因果相联,意味着对自表示( s e i f - r e p r e s e n t a t i o n ) 的改动 将立即反映在系统的实际状态和行为中( 这也是使用“反射”这个词的由来) ,反 之亦然。因此可简言之,反射系统是支持因果相联的自表示( 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 c s r ) 的系统,c c s r 这一定义最早是由v h i eu n i v e r s i t e i t b n l s s e l 大学的p m a e s 在其博士论文【3 5 i 中提出的。 2 2 反射系统 就如在传统o o p 中对象代表了现实世界中的实体一样,对象本身也可用其 它对象来表现,后者又称为元对象( m e t a o b j e c t ) 【j j 。元对象的计算( 又称为元计算, m e t a c o m p u t a t i o n ) 用于观测和修改它们的指示物( r e f e f e n t s ,即所代表的对象) 。元 计算常常是通过捕获它们的指示物的正常的计算、由元对象执行的;换句话说, 指示物的行为被元对象所捕获,后者执行元计算,要么替换要么封装指示物的 行为。当然,元对象自身也可再由其它对象来表现,即它们是二重元对象 ( m e t a m e t a o b j e c l ) 的指示物,以此类推。 这样,一个反射系统可以是一种多层结构,组成了一个反射塔f r e f l e c c j v e t o w c r 呐。在基层的对象称为基对象( b a s e o b i e c t s ) ,它们对应用领域中的实体进 1 0 第二章反射和反射中间件 行计算:其它层,即元层( m e t a 1 e v e l ) 的对象,对其相邻低层( 指示物层) 的对象执 行计算。基对象与元对象之间不。定是一一对应的关联:几个元对象可以共享 同一个指示物,单个元对象也可有几个指示物。反射塔的相邻层之矧的界面通 常称为元对象协议( m e t a - 0 b j e c tp r o t o c o l 或m o p ) 。m o p 有时含义更广,可以泛 指一个面向对象的反射系统的组织结构、机制等,可以说,m o p 是反射技术中 的一个比较模糊、通用的概念。 在所有反射模型中,一个基本概念就是具体化i f i c a t i o n ) l2 1 。为了执行相邻 低层的计算,每一层维护一组支持这个计算的数据结构,即前述的因果相联的 自表示,而创建这种自表示的过程就称为具体化。具体化就是将系统原本隐式 的方面显式化。当然,相邻低层的哪些方面被具体化,取决于反射模型f 如:结 构、状态和行为、通信等) 。在任一种情况下,包含自表示的数据结构与系统被 具体化的那些方面是因果相联的。在相邻层之间保持这种因果相联关系是反射 基础设旖的责任,而元对象的设计者和编程人员不必知道因果相联关系等实现 细节。 由基于对象实例的元对象实现的反射称为行为性反射,采用行为性反射的 例子有a p t e m s 、o p e n c + + v 1m o p 等;而由作用于对象类的元对象实现的反射 称为结构性反射,比如3 一k r s 、c l o s 和o p e n c + + v 2 m o p 等。 j ( 量) ( 窭) 儿对强 啊、 班测、解释和托蠕4 ( 廿功能 m ) 一钉为r i :山省钉为n 柠m 荜小嵯结构州山备 结构一柠驯 应用行为干1 j 结构( 功能n 射【制) 1 领珍领碜莲鞣予 l 反刳技术通过扩展i i i 向刈缘的语。i 或编滞器求实现加入编潜器,n :编i 第二章反射和反射中间件 过程中将应用源代码同元对象代码混合编译,通过反射逻辑修改应用对象类, 比如进行属性替代或二次峰状,因此在不改变编程语言和底层软件平台的基础 上,反射技术扩展了编程语言和软件平台的功能。 元对象具有良好的可配置性,可扩展性和可重用性,同一个元对象能够适 应不同的应用需要,而同一个应用也能够获得不同元对象的支持,比如安全元 对象( s m o ) 和审计元对象( a m 0 ) 在同一应用中协同工作。因此利用元对象技术的 软件设计具有更加开放的特点,有利于程序员与编程语言、软件平台的交互, 提高了软件设计的质量和效率。 2 3 反射中间件 2 3 1 中间件 中间件是构建分布式应用中的一个重要角色,位置处于操作系统和应用程 序之间。目前一些主要的中间件技术有o m g 的c 0 r b a ,s u n 公司基于j a v a 的j 2 e e ,微软公司的n l 强等,它们屏蔽了网络通信、远程方法调用、命名、 字节流传输、调度等与底层操作系统相关的接口细节,隐藏了底层软硬件平台 的不同,增加了可移植性,便于构建复杂的分布式应用程序。总的来说,中间 件的主要目标是对上层应用程序提供一个统一的编程模型,隐藏底层操作系统 和硬件平台的异构性和分布性。 反射的思想提出后,许多研究人员通过应用反射机制来实现运行期间可定 制( c u s t o m i z a b l e ) 、可重配置( r c c o n f i g i l f a b l e ) 的体系结构,出现了反射式分布系统。 反射式分布系统的研究和反射中间件的研究比较接近,目的都是为了实现 分布应用支撑平台的监控与调整,区别在于前者针对于特定系统,后者一般符 合某个通用标准,因此反射在分布系统中的应用对于反射中间件的研究和发展 起了重要的推动作用。 第二章反射和反射中间件 2 3 2 反射中间件的基本结构 通常,一个简单的反射性中间件体系由二层塔式结构( 实体基层和元对象层) 构成【4 吲。反射体系通常具有3 个基本元素:元模型、元数据、元协议。 元模型通过层次结构定义了系统中各个实体之间的反射关系,即上层实体 反射下层实体。其中。最底层称为基层,基层中的实体实现了系统的业务功能。 其上层称为元层,元层中的实体实现了系统的反射功能。元层实体封装的数据 称为元数据,描述了系统的运行状态与行为。而元协议则是访问和操纵元数据 的一组规则,具体表现为元层实体对外提供的操作。 作为反射体系的核心,元数据决定了反射的内容,而元模型定义了内容的 组织方式,元协议定义了内容的表现方式。 2 3 3 著名反射中间件介绍 较著名的反射中间件有d y i l a m i c t a o l 圳,0 p e n o r b f 3 7 1 ,f 1 e x i r i e t f 3 8 1 , o p e n c o r b a f 矧,0 u a n e n a r c ,m c h a r m f 6 j 等。 d y n 锄i c l = a 0 由u i u c 开发是在现有的名为1 a o 的0 r b 口基础之上扩 展的,它允许对0 r b 内部引擎和运行的程序进行动态重配置。 d y n a l l l i c l a o 包含两个主要特点: 运行期问,不用重启就可以重新配置和替换一个底层的0 r b 组件。 运行期间,上载o r b 新策略和服务,代码采用d u 。或j a v ab v t cc o d e 。 在d y n a m i c l a o 中使用一系列的组件配置器( c o m p o n e n t c o n f i g u r a t o r ) 管 理组之间的依赖关系。 0 p e n o r b 由l a n c e s t e ru n i v e r s i t y 开发其开发目的是成为具有高度可配置 以及动态重配置的中间件甲台,为动态要求较高的程序提供支持。 o p e n o r b 采用一种与语言无关的反射体系结构,使用对象图描述复合组件 第二章反射和反射中间件 之间的关系,支持结构性、行为性反射。 o p c n0 r b 的可配置的特性是通过组件框架的使用来实现的,动态可重配置 性则是通过反射的扩展来实现的。系统分为基层( b a s e l c v e l ) 和元层( m e t a l c v e l ) ,基层由实现中间件基本服务的组件组成。元层对外暴露底层的实现,可 以对底层实现进行检查和改变。 o p e n c o 肋a 由法国e e m a l i o n a c 0 1 ed c sm j n e sd en 锄t c s 大学开发,是基于 c o r b a 的一种加入了反射特性的实现,它采用n c o a 觞s t a l k 开发,这是一种类 似于s m a l h a l k ,具有反射性质的语言。 o p e n c o r b a 基于元类( m e t 岔c l a s s e s ) 的概念,实现了对象的类定义,以及 类的元类的动态替换,通过替换c o b r a 的元类提供反射功能。 o p e n c o r & 气的s t u b 代码是由i d l 编译器自动生成是服务器对象在本地 的映像。负责发送客户端调用请求以及接收应答,它是i d l 接口的描述,不含 实现代码,客户对代理的调用会转发到与其关联的元类,该元类才实际上实现 c 0 r b a s t u b 的功能。用户还可以扩展其它的元类以实现不同的功能。在服务器 端,o r b 对s k c l e t o n 的调用会转发给与其关联的元类,然后s k e l e t o 将请求发 送给目标对象实现,用户通过替换或者增加元类可以改变服务器端的行为。 m c h a r m 是由u l l i v e r s i t hd e 西is t u d id im i l a n o 的c 越z o l a 等提出和开发的 个面向消息和通信的反射式r m i 。 c a z z o i a 认为,消息是中f 盼阵中反射的重点,应该独立于客户和服务器进行 监测和行为调整,消息的反射应知道整体视图以考察各个消息问的关系。 m c h a r m 实现了发布订阅( p u b l i s h s u b s c i b l e ) 通信方式,客户向某主题发 送消息,消息由m u l t i c h a n n e l 转发到同主题的所有订阅者。m u l t i _ c h a i l l l e l 可以 监测消息,并根据接收到的消息进行相应的行为调整,而m u l t i c h a n n e l 负责接 收和转发同主题的所有消息,因此具有消息的整体视图。 第二章反射和反射中间件 f 1 e x j n c t 由英国的a n s a 开发,是一个针对移动j a v a 环境的可配置o r b 开 发平台,主要着眼于中间件配置重配簧以及应用部署等问题,它通过反射机 制提供了一种基于组件的自盒复用方式。 f l e x i n e t 定义了一个开放的分布式绑定伪j d d i n 曲框架,并用模块的方式进行 组织,它提供一个元对象协议( m e t a _ 0 b j e c tp m t o c 0 1 ) ,允许对模块进行重配置, 以改变这些绑定的属性,从而达到动态和自适应的目的。 q u a n e 聊a r e 是一个具有反射特性的中间件平台,支持包括c 0 r b a 、j a v a r m i 和m p l 在内的多种中间件标准。它使用组件框架,各种o r b 都是用组件的 形式实现,用户可以通过个反射接口将定制组件插入到组件框架中,以增强 系统的开放性。 2 4 小结 本章介绍了前人在反射机制和反射中间件所做的研究工作。 反射是系统的一种推理和作用于自身的能力。 反射系统,是指这样一种系统:它提供了关于自身行为的表示,这种表示 可以被检测和调整,且与系统的行为是因果相联的。 一个反射系统可以是一种多层结构,组成了一个反射塔“e n e c l i v et o w e r ) 。在 基层的对象称为基对象( b a s e o b j e c t s ) ,它们对应用领域中的实体进行计算:其它 层,即元层( m e t a 1 e v e l ) 的对象,对其相邻低层( 指示物层) 的对象执行计算。 反射塔的相邻层之间的界面通常称为元对象协议。 作为反射体系的核心,元数据决定了反射的内容,而元模型定义了内容的 组织方式,元协议定义了内容的表现方式。 第三章m d t _ r e m o m :一个面向消息的反射中间件 第三章m d t r e m o m :一个面向消 息的反射中间件 3 1 设计思路 w j l t e rc a z z o i a 在文【6 】中描述了一个面向消息和通信的反射式r m i 。他认为 消息是中间件中反射的重点,并且文献【7 】和文献【8 】中对消息通信的反射研究都 已经做了些工作,本文则对他们的工作进行了扩展和补充。 在面向消息的中间件系统中,传输消息是最为核心的任务,但是到底正在 传输的是什么数据,中间件系统并不能获得相应信息,故而不能进行数据检查, 因为数据格式是由客户在后期规定,中间件系统传输的是编码后的数据。 本文引入元数据描述表,此表定义了中间件系统所提供的所有元数据,基 于此中间件构造的系统传输所有数据都是这些元数据的组合。通过这个元数据 描述表,中间件就能获得所处理的数据的相关信息,进而检查是否合法。 另外在客户端的编程接口,客户能使用一个通用数据包对象,访问他所需 要的元数据,当客户需要增加传输新的数据时,仅仅向元数据描述表中增加一 条记录,在客户端就可以用通用数据包对象访问新增的数据。另外一个消息队 列所传输的消息的格式也可以通过元数据描述表进行定义。从而方便客户的各 种操作,而不必关心其编码解码的相应工作。 类似地,通过增加服务定义描述表,客户便可以进行服务的发布以及与服 务对象进行绑定。分布式系统的远程调用都需要通过消息的发送和接收来完成, 在具备反射功能的消息队列上实现r p c 调用必然具备在运行时

温馨提示

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

评论

0/150

提交评论