本版版主招募中

 
标题: 下一代中间件体系结构——反射中间件
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:38  资料  个人空间  短消息  加为好友 
反射中间件(Reflective Middleware),顾名思义,是一种实现了反射机制(reflection)的中间件系统。同一般的中间件相比,其本质区别就在于是否在中间件系统中采用了反射机制。通过实现反射机制,反射中间件可以克服传统中间件系统的单一性和不灵活性,从而可以更好的支持新的应用领域,例如多媒体,实时系统,CSCW(Computer Supported Cooperative Work,计算机支持的协同工作)和移动系统等。具体说,反射中间件是指在中间件系统工程中采用反射机制,以达到开放性(openness)、可配置性(configurability)和可重配置性(reconfigurability)要求的体系结构。反射中间件被认为是下一代中间件的体系结构。
随着中间件技术的发展,当前的中间件系统结构已经趋于完善,那么为什么又要在中间件平台引入反射机制呢?





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:39  资料  个人空间  短消息  加为好友 
传统中间件平台的不足
根据反射中间件的概念,本文将目前中间件的发展分为两个阶段,传统中间件阶段和反射中间件阶段。当前,主要的中间件平台包括CORBA,DCOM和基于Java的系列技术,如RMI,JINI,JNDI,JTA等等,它们都可以划归为传统中间件一类。这些平台提供了一种面向对象的编程模式,以实现分布式应用和服务的开发。同时,随着这些平台的发展,也相应出现了一些面向企业的基于组件的编程模式,如EJB(Enterprise JavaBeans)、COM+和 CORBA组件模型(CORBA标准第三版中所通过的组件标准,CORBA Component Model)等等。EJB(Enterprise JavaBeans)、COM+和 CORBA组件代表了中间件平台的最新发展趋势。这些平台能够为第三方的开发、合成和并行的组件开发提供底层支持,并提供一些非函数化的服务(例如事务、安全性、并发、资源管理等等),基于分布式组件技术的应用也是建立在这些中间件平台之上的。但是,如果这些分布式应用能够深入到中间件平台内部的话就会带来更多的好处,例如,中间件系统可以通过少量的配置来适应一个嵌入设备,而通过相对多一些的配置来添加质量服务管理工具以保证多媒体服务。也就是说,我们希望在一定范围内能够对中间件平台内部进行控制,以实现更灵活的应用。中间件平台应该既具有可配置性(configurability)也具有可重配置性(reconfigurability),并且这种配置应该既能够支持静态也支持动态的配置(运行中的配置)。传统的中间件平台是一个黑箱模式的体系框架结构,它并不能满足这种需求。为了达到这个目的,传统的中间件平台必须引入某种新的机制来实现具有开放性的中间件系统,这种机制就是反射机制。然而,要建立反射机制,传统的中间件平台必须开放一些服务,提供相应的API,甚至是变革平台框架的某些核心。为了达到这个目的,这些主导的中间件平台,也在某些方面进行了改进。例如OMG为CORBA的一些支撑服务(如事务和安全性服务等)提供了内部接口;而Portable Object Adapter的采用也使得CORBA应用系统的设计变得更为开放;RM-ODP(ISO/ITU-T Reference Model for Open Distributed Processing)框架则通过区分对待计算和设计过程来解决这个问题。然而,或是由于最初设计思想的束缚,或是因为既成系统的调整具有很大困难,这些传统的中间件平台只是对一些特定的问题进行了解决,现在仍然不能满足开放性的要求,这也是导致基于反射的下一代中间件框架结构提出的一个直接原因,也促使了像OpenORB这样的反射中间件平台的出现和发展。但是,我们必须看到,这些传统的中间件平台也正在实现其反射机制,它们的实力是毋庸置疑的。





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:39  资料  个人空间  短消息  加为好友 
新应用 新挑战
不仅如此,随着新的应用形式的出现以及传统应用环境的改变,中间件系统不断面临着一些新的挑战,例如群件、多媒体、实时以及移动(手机、PDA等)系统所提出的需求,这些应用客观上需要一种更合理的中间件体系为其提供更好的服务支撑。这些应用系统都具有一个共同的特点,它们都需要根据运行环境的改变而改变。为了适应运行环境的改变,在许多情况下这些应用系统希望能够通过定制或配置底层的中间件系统来实现灵活性,因为对于这些应用系统来讲,由它们来实现适应各种环境改变的部分往往会带来不必要的重复性开发和付出较大的代价,有时甚至是不易实现的。例如,移动系统需要监测和适应连接的变化;移动环境中的分布式多媒体应用必须根据用户连接方式的改变而提供相应的服务,比如,改变流量等等。显然,这些应用的特点也决定了中间件平台不仅要支持配置,而且还必须支持动态的重新配置。现在,EJB以及.NET等技术所采用的以XML文档配置和部署应用的方法可以用来实现对中间件的配置,然而这种方法并不能很好的满足以上应用对中间件配置的需要,更不能满足动态重新配置的要求(微软的.NET还在公共语言运行库中实现了一定的反射功能)。针对这种情况,目前,国际上提出了反射中间件的解决方案,并有多个公开的研究计划,例如Sirac、LegORB、QuO、AMIDST、TOS等,还有Dependable Computing and Fault Tolerance Research Group,Friends - Framework for Integrated Engineering and Deployment of Services,Object-Oriented Systems and Languages Group at EMN, France等多个研究团体和个人。





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:40  资料  个人空间  短消息  加为好友 
反射的概念
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。
反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。可以看出,同一般的反射概念相比,计算机科学领域的反射不单单指反射本身,还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统)都希望使系统的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不一定采用了反射机制,开放性是反射系统的必要条件。一般来说,反射系统除了满足开放性条件外还必须满足原因连接(Causally-connected)。所谓原因连接是指对反射系统自描述的改变能够立即反映到系统底层的实际状态和行为上的情况,反之亦然。 开放性和原因连接是反射系统的两大基本要素。显然,它们也是反射中间件的基本属性。





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:40  资料  个人空间  短消息  加为好友 
反射中间件的开放性
中间件是一种支持分布式应用的重要组件框架结构[1] ,为应用提供统一的编程模型,处理异构、分布问题。中间件的特殊地位决定了中间件在专用的基础上必须具有一定的通用性,支持一定范围的应用。传统的中间件主要侧重于解决异构和分布情况下的复杂问题,在这种思想指导下,系统的实现细节通过抽象的方式隐藏了起来,形成了一个典型的黑箱结构。然而,并不是在所有情况下对用户封装实现的细节都是合理的。为了隐藏实现细节,中间件在假设的基础上代替应用程序来完成了某些功能。然而,这些功能往往并不能满足应用的需求,或者有些功能应用并不需要。所以在某些情况下,隐藏实现的细节,反而会给应用系统的实现带来困难,不利于应用系统更好的实现。这也就使得实现开放性称为了反射中间件的一个最基本的目标。从某种意义上来讲,中间件对底层实现的开放,意味着原先由中间件替应用程序所实现的一些底层功能现在必须由应用自己来考虑了。那么,这是否意味着中间件对这些功能的实现可以比原来简化了呢,答案是否定的。首先,我们说的是对底层实现的公开,并不是要将这些底层功能移到应用系统中来实现;其次,为了能够方便应用系统的调用和设置,这些底层功能开放之后,必须提供必要的交互函数和一些设置接口。所以,公开底层实现并不等于简化了中间件的实现,相反,在许多情况下中间件的开发难度加大了。





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-10-6 19:40  资料  个人空间  短消息  加为好友 
反射中间件必须原因连接
在前面我们已经提到,开放性只是反射系统的必要条件。为了实现反射性,反射中间件还必须实现原因连接。对于原因连接,Maes[2]是这样解释的,“内部结构及其所代表的域具有这样一种联系,即无论二者中的哪一个发生变化,都会导致另外一个相应的变化”。反射中间件通过原因连接来保证系统自描述的正确性,并能根据自己本身的行为状态来对自己进行相应的调整,实现自适应性。
从系统的角度来看,我们可以将反射中间件看成一种采用反射机制实现了的开放式的中间件系统,反射中间件既满足通常的中间件定义,同时必须满足开放系统的要求。另外,对于反射中间件来讲,仅实现开放性还是不够的,目前国际上有些研究将完整性也作为反射中间件的一个基本因素之一,本文就不在这里讨论了。
综上,随着技术和应用的发展,今天的中间件应该能够满足底层环境和特殊应用所提出的大量需要。但还需要进一步,就是说中间件不仅要支持静态而且要支持动态的配置修改。这一切,正是反射中间件所能提供的功能。从某种意义上讲,传统的中间件可以看成一种非开放式的中间件系统,是一种支持分布式应用的重要组件框架结构[1],为用户提供一个高层次的平台无关的编程模式和编程接口,并为用户屏蔽异构和分布式计算中的各种问题。反射中间件则是在传统的中间件基础上发展而来的,是一种采用开放工程(open engineering)方法的系统,与传统的中间件系统相比,其最大的区别与革新就是系统中实现了反射机制。我们有理由相信,反射中间件将会带来中间件技术的一场变革。
参考文献:
[1]. Blair G.S., Coulson G., Robin P. ,Papathomas M., “An Architecture for Next Generation Middleware". Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing (Middleware'98), Davies N.A.J., Raymond K. & Seitz J. (Eds.), The Lake District, UK, pp. 191-206, 15-18 September 1998.
[2]. Maes, P., "Concepts and Experiments in ComputationalReflection", In Proceedings of OOPSLA'87, Vol. 22 of ACM SIGPLAN Notices, pp147-155, ACM Press, 1987.
[3]. Costa F. Duran, H. Parlavantzas, N. Saikoski, K. Blair, G.S. , Coulson G, "The Role of Reflective Middleware in Supporting the Engineering of Dynamic Applications". Lecture Notesin Computer Science 1826, Springer-Verlag, 2000
[4]. Nikos Parlavantzas, Geoff Coulson, Mike Clarke, Gordon Blair, "Towards a Reflective Component Based Middleware Architecture". Workshop on Reflection and Metalevel Architectures, June 13, 2000, Sophia Antipolis and Cannes, France.
[5]. G. S. Blair, G. Coulson, A. Andersen, L. Blair, M. Clarke, F. Costa, H. Duran, N. Parlavantzas, K. Saikoski, "A principled approach to supporting adaptation in distributed mobile environments, " 5th International Symposium on Software Engineering for Paralleland Distributed Systems (PDSE-2000), (Limerick, Ireland), June 2000





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
 



当前时区 GMT+8, 现在时间是 2008-7-7 10:47
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.072000 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver - WAP