已阅读5页,还剩60页未读, 继续免费阅读
(计算机应用技术专业论文)net组件动态重配置技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 动态重配置允许一个系统在运行时从一种配置转变为另种配置, 系统不必停止运行、重启以适应配置的改变。一些重要的软件系统,许 多情况下在任何时候都不能中断服务,动态重配置功能对它们具有极其 重要的意义。 本文分析了近期文献中动态重配置的研究情况,讨论了组件动态重 配置需要解决的组件之间的交互问题以及动态重配置对系统产生的影 响,i ! :2 计和实现了一种n e t 环境下支持组件动态重配置的组件框架原型, ,i :对该原型进行了验证和性能测试。本文设计的动态重配置框架比较有 特色的地方在于通过拦截器对组件之间的交互进行监控,并通过拦截器 阻塞组件之间的交互,从而可以有效地驱动组件进入重配置状态。通过 m 塞目标组件和其它组件之间新建的调用,允许目标组件和其它组件正 谯进行的调用继续完成,保证了组件之间的一致性。 关键字;动态重配置n e t 组件拦截器 作者:段通晓 指导老师:吕强 a b s t r a c t d y n a m i cr e c o n f i g u r a t i o n a l l o w sa s y s t e m t oe v o l v ef r o mo n e c o n f i g u r a t i o nt oa n o t h e ra tr u n t i m e ,w h i l et h es y s t e md o e sn o th a v e t ob e t a k e no f f - l i n e ,r e b o o t e dt oa c c o m m o d a t ec h a n g e s m a n yi m p o r t a n ts o f t w a r e s y s t e m sm u s t r u nc o n t i n u o u s l ya n dc a n n ts t o ps e r v i c e sa ta n yt i m ei nm o s t c a s e s ;t h e r e f o r e ,d y n a m i cr e c o n f i g u r a t i o n i so fg r e a ti m p o r t a n c et ot h e s e s y s t e m s t h i st h e s i s a n a l y s e sr e c e n tr e s e a r c h e so fd y n a m i cr e c o n f i g u r a t i o n i n s o m ea r t i c l e s ;d i s c u s s e st h ei n v o c a t i o np r o b l e mb e t w e e nc o m p o n e n t sw h i c h s h o u l db er e s o l v e db yd y n a m i cr e c o n f i g u r a t i o no fc o m p o n e n t a sw e l la st h e g r e a ti m p a c tt ot h es y s t e mi n t r o d u c e db yd y n a m i cr e c o n f i g u r a t i o n ;d e s i g n s a n d i m p l e m e n t s af r a m e w o r k p r o t o t y p e w h i c h s u p p o r t sd y n a m i c r e c o n f i g u r a t i o n o fc o m p o n e n ti n n e t , v a l i d a t e s t h ec o r r e c t n e s so ft h e p r o t o t y p e a n dt e s t st h e p e r f o r m a n c e o ft h e p r o t o t y p e t h ed y n a m i c r e c o n f i g u r a t i o nf l - a m e w o r kd e s i g n e di nt h i s t h e s i sm o n i t o r st h ei n v o c a t i o n s b e t w e e n c o m p o n e n t s t h r o u g hi n t e r c e p t o r s a n db l o c k s t h ei n v o c a t i o n s t h r o u g hi n t e r c e p t o r s ,a s ar e s u l td r i v e st h ec o m p o n e n tt o ar e c o n f i g u r a b l e s t a t ee f f e c t i v e l y , w h i c hi st h em a i nf e a t u r eo ft h et h e s i s b yb l o c k i n gt h e i n v o c a t i o n sb e t w e e nt a r g e tc o m p o n e n ta n d o t h e r c o m p o n e n t s ,a l l o w i n g o n g o i n g i n v o c a t i o n sb e t w e e nt a r g e tc o m p o n e n ta n do t h e rc o m p o n e n t s t o c o m p l e t e ,t h ec o n s i s t e n c y o ft h ec o m p o n e n t si sg u a r a n t e e d k e y w o r d s d y n a m i cr e c o n f i g u r a t i o n n e t c o m p o n e n t i n t e r c e p t o r i i d u a n t o n g x i a o d i r e c t e db yl vq i a n g 苏州大学学位论文独创性声明及使用授权声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工作所 取得的成果。除文中已经注明引用的内容外,本沦文不含其他个人或集体已经发表或 撰写过的研究成果,也不含为获得苏州大学或其它教育机构的学位证书而使用过的材 料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人承 担本声明的法律责任。 研究生签名:丛鱼堕日期: 学位沦文使用授权声明 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文合作部、中国 社科院文献信息情报中心有权保留本人所送交学位论文的复印件和电子文档,可以采 用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一 致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布( 包括刊登) 论 文的= 牟:部或部分内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 研究生签名:丛鱼堕日期:兰丝! ! 尘 导师签名如期:丝! 堡丛! n e t 组件动态熏配鬻技术的研究与实现 第1 章绪论 第1 章绪论 1 1基于组件的软件开发 随着计算机技术的飞速发展,人们对软件产品的质量和生产速度都 有了更高的要求。从传统的结构化开发到八十年代的面向对象开发,软 件开发的速度和质量都有了飞跃式的进步。但随着软件规模的不断扩大, 人们希望软件的复用程度能够得到进一步的提高,并且可以象组装计算 机一样实现软件的“即插即用”。九十年代出现的“基于组件的软件开发” 目的就是通过集成现有的组件来构建大型的软件系统,通过增强系统的 灵活性和可维护性来减少软件开发费用,缩短开发周期,降低维护成本。 关于软件组件的定义比较多,目前还没有一个统一的定义。通常把 组件描述为可以明确标识和管理,具有一定独立功能的软件单元。它具 有如下特点:( 1 ) 即插即用,组件可以方便地集成于系统中,不用修改 代码,也不用重新编译。( 2 ) 以接口为核心,组件的接口和实现是分离 的。组件通过接口实现与其他组件或系统的交互,组件的具体实现被封 装在内部,组装者只关心接口。不必知道实现细节。( 3 ) 组件的接口必 须严格地标准化,目前主要的标准有o m g 组织的c o r b a ,s u n 的 j a v a b e a n s 和e j b ,m i c r o s o f t 的c o m d c o m ,c o m + 和。n e t 。总之,组件 在功能上是离散的、被精确定义的:组件对自己拥有的方法都提供标准 而清晰的接口;组件既可以单独使用,也可以与其他组件一起组装成一 个完整的应用系统。 分布式组件技术是随着网络技术发展起来的,为网络计算平台上软 件的开发提供了强有力的解决方案。计算环境从集中式发展到分布式, 计算方式从以主机为中心的集中计算模式转变为以网络为中心的分布式 计算模式,分布式组件技术成为分布式环境下建立应用系统集成框架和 标准组件的核心技术。分布式组件技术是一种应用集成技术,它是面向 对象技术和分布式技术的结合,目标是使得网络中任一结点上的应用可 以透明地访问存在于网络中任意结点中使用任何语言编写的远程组件, 箜上里羔堡n 日t 组件动态重配簧技术的研究与实现 可以象在本地地址空间一样对远程组件进行操作,消除了网络分布性、 协议多样性等所带来的开发复杂度。通过将所有分布式处理封装于分布 式组件底层基础设施中,应用开发人员使用提供的接口可以得到透明的 组件访问。 分布透明性是分布式组件系统最显著的特点,它主要包括以下几个 方面l l 】;( 1 ) 位置透明性,即组件在分布式环境中的位置是透明的。用户 无需知道服务的位置。( 2 ) 存取透明性,用户对远程组件和对本地组件 所采取的操作是一致的。( 3 ) 迁移透明性,组件在分布式环境中的重定 位是透明的,用户无需知道组件在网络之间的移动。( 4 ) 并发透明性, 对分布式环境中组件的共享访问是透明的,用户不必处理并发访问的问 题,由系统负责维持分布式系统中组件备份的一致性。 基于组件的软件开发从根本上改变了软件的生产方式,与传统开发 方法相比,它具有很明显的优势 2 1 :( 1 ) 提高了组件的重用率。开发者可 以将原有软件运用组件技术封装起来,通过标准的组件接口将旧的程序 代码进行包装制作成可以重用的组件,从而可以对原有软件进行复用。 ( 2 ) 降低了对系统开发者的要求,使他们更好地关注业务系统。( 3 ) 使 开发的系统更加灵活,更加便于维护和升级。组件的模块化程度高,模 块耦合度低,开发者在对软件进行改进时,往往只需增加新的接口即可。 ( 4 ) 易于学习和使用。组件的开发一般由组件设计、生产和组装等过程 组成,不同岗位的开发者分工明确、术有专攻,大量的开发人员可以快 速投入基于组件的开发过程中。 1 2 动态重配置技术 社会发展和经济增长带来了日趋复杂的软件需求,而信息交流范围 的扩大化更使得用户的需求以前所未有的频率发生着变动,这就要求软 件系统必须具有足够的灵活性以适应现实的需要。传统的软件系统重配 置是静态的,进行调整操作时软件系统必须处于停止运行状态,或者虽 然允许系统动态运行时进行调整,但所作的各项操作只有在软件系统重 n e t 纰件动态重配置技术的埘究j 实现 第1 章绪论 新启动后才能生效。对于一些重要的软件系统,例如电子商务系统和生 命维持系统,许多情况下在任何时候都不能中断服务。电子商务如果中 断服务会导致商业损失,生命维持系统如果中断服务会使人的生命受到 威胁。这些系统的调整和更新必须在不中断服务的情况下完成,动态重 配置功能对它们具有极其重要的意义。动态系统重配置允许系统运行时 进行调整,而且调整的结果立刻生效,无须系统停止运行或重新启动。 由此可见,研究如何有效地调整软件系统,如何控制调整对系统总 体产生的影响,获得具有高度灵活性、可复用性和与环境无关的软件产 品,具有现实的意义。设计之初就从软件系统重配置的角度出发,对系 统的灵活性和适应能力作相应的规划,将大大地降低系统维护阶段的费 用消耗,从而降低系统的总成本。积极主动地为系统需求变化作预先准 备,这就是软件系统重配置技术在实际应用中的切入点。 系统重配置技术的研究几乎与计算机科学具有同样的历史,不过在 研究之初,受硬件条件和软件编制思想的限制,并没有形成明确而独立 的研究目标与方法。2 0 世纪8 0 年代以来,随着计算机科学总体的发展, 尤其是分布式处理技术的出现,系统重配置技术的研究逐步走向正规并 具有广泛的空间。大批学者投入这一方向的研究,取得了一系列的成果。 从1 9 9 0 年开始,i e e e 专门为分布式系统的重配置问题举办两年一届的 国际会议( i c c d s ) ,探讨可重配置分布式系统中以动态系统重配置为核心 的相关问题。 国外学者在基于组件的动态重配置技术作了大量研究。现有的组件 模型,包括c o r b a 组件和j a v a 组件等,几乎没有对动态重配置提供有 力的支持3 1 。因此很多学者是从扩展标准的c o r b a 规范和j a v ar m i 规 范着手研究组件的动态重配置。 国内在动态重配置方面有一定的研究,如西北工业大学的课题“复 杂大系统控制过程控制与优化关键问题及高性能软件研究”川、东北大学 的课题“基于组件技术的开发平台”f 5 1 和南京大学的课题“面向图的软 件体系结构描述和实现技术”【6 l 中对动态重配置都有所涉及。 n e t 组件动态重配置技术的研究与实现 1 3 本文的主要工作和组织 2 0 0 2 年微软公司正式推出n e t ,作为构建下一代分布式应用的基础 框架。在n e t 平台中,组件有了很多新的特性,组件的开发和部署得到 了极大的简化。根据2 0 0 2 年g a r t n e rg r o u p 对n e t 的调查显示,n e t 已 经迅速地进入实际的应用领域中,并呈快速扩张之势。作为一种新的组 件模型,n e t 组件模型还在不断完善和发展中,目前针对n e t 组件进 行动态重配置的研究相当少,研究,n e t 组件的动态重配置具有极其重要 的的价值,有助于提高n e t 环境下分布式程序的灵活性、可靠性和可扩 展性。 本文介绍了近期文献中动态重配置的研究情况,讨论了组件动态重 配置需要解决的组件之间的交互问题以及动态重配置对系统产生的影 响,分析了几种典型的动态重配置方法 以n e tm m o t i n g 框架为基础, 结合微软n e t 组件的特性,引入拦截器模式,设计了一种n e t 环境下 支持组件动态重配置的组件框架原型,在v i s u a ls t u d i o n e t 开发环境下 用c 实现,并对该原型进行了验证和性能测试。 本文共分五章。第一章概要介绍了基于组件的软件开发和动态重配 置技术。第二章简单介绍了c o r b a 、j a v a r m i 、c o m d c o b i c o m + 、n e t r c m o t i n g 等几种具有代表性的组件规范,着重介绍了n e tr c m o t i n g 规范, 作为研究组件动态重配置的基础。第三章介绍了近期文献中动态重配置 的研究情况,讨论了组件动态重配置需要解决的组件之间的交互问题以 及动态重配置对系统产生的影响,分析了几种典型的动态重配置方法。 第四章详细介绍了n e t 环境下支持组件动态重配置的组件框架原型的设 计和实现,并通过实验对动态重配置框架原型进行了验证和性能测试。 第五章对论文的工作进行了总结,讨论了进一步工作的方向。 n e t 组件动态重配置技术的研究与实现 第2 章组件规范概述 第2 章组件规范概述 目前最具代表性的组件规范有o m g 组织的c o r b a ,s u n 的r m i , m i c r o s o f t 的c o m d c o m c o m + 和n e tr e m o t i n g 。它们之间有很多相似 的地方,也各有自己的特色。 2 1c o r b a 组件规范 c o r b a t t i 是由o m g 组织提出的应用软件体系结构和对象技术规范, 其核心是一套标准的语言、接口和协议。 2 1 1c o r b a 的组件及接口 o r b 是c o r b a 的核心,它负责在分布式环境中透明地向对象发送 和接收请求,实现了应用组件之间的互操作。o r b 与其它组件和接口共 同组成c o r b a 体系结构,如图2 - 1 所示。 幽2 - 1c o r b a 体系结构 ( 1 ) i d ls t u b s 和s k e l e t o n s i d l 是一种接口定义语言,描述了对象接口、数据类型和方法定义, 通过它实现了对象接口与对象的分离。客户端的i d l s t u b s 提供了访问对 象服务的静态接口,而服务器端的s k e l e t o n 则包含了服务对象的静态接 口并负责连接服务对象中的具体方法。 ( 2 ) d i i ( d y n a m i ci n v o c a t i o ni n t e r f a c e ) d i i 使得客户端开发人员在运行时可以动态地创建和发送对服务的 第2 市组件规范概述 n e t 组件动态晕配置技术的研究j j 实现 请求,包括查找定义了服务对象接口的元数据,在请求中添加参数,删 除请求,发送远程调用等。 ( 3 ) 接e l 池 接口池主要包含了用i d l 定义的服务对象接口信息,为动态调用提 供相应的接口信息,包括接口描述、对象中的方法以及参数。 ( 4 ) 对象适配器 对象适配器接收o r b 传来的服务请求,实例化服务对象,产生并解 释服务对象的引用,根据服务请求选择并激活正确的服务对象,再把服 务结果送到o r b 。 ( 5 ) 动态s k e l e t o n 接口( d y n a m i c s k e l e t o ni n t e r f a c e ) 当客户向o r b 发出的请求不能在该o r b 中找到需要的s k e l e t o n ,就 发出标准的d s i 请求,收到请求的o r b 如果可以实现所需激活的操作, 就完成相应的激活并返回结果,否则向前传递d s i 请求。 2 1 2c o r b a 的特点 ( 1 ) 它实现了系统异构平台之间的统一,客户端与服务器可以在不同的平 台上、用不同的语言来编写应用,具有良好的开放性和灵活性。 ( 2 ) 它通过对象引用技术来唯一确定分布式环境下的对象实例,实现分布 式对象处理功能。 ( 3 ) 一个对象实例可以被多个客户端应用所调用,也可调用其他的对象实 例,实现了对象的可重用性和互操作性。 ( 4 ) c o r b a 提供的公共对象服务功能很强,其中基于事件服务的主动服 务p u s h 和p u l l 技术是处理实时系统的一种很好的技术。 2 2j a v ar m i 规范 j a v a 分布式对象组件模型是基于r m l ( r c m o t em e t h o di n v o c a t i o n ) 6 r l 制。r m i 【8 1 是一种j a v a 虚拟机之间对象互相调用对方方法、启动对方进 程的一种机制。 n e t 组件动态重酗暨技术的研究4 实现 鲻2 章组件规范概述 2 2 1r m i 体系结构 r m i 包括s t u b s k e l e t o n 层、远程引用层、传输层,如图2 2 所示。 客户机服务器 应用层应用层 ii s t u b s s k e l e t o n s 远程引用层r m i 层远程引用层 传输层传输层 i : t c p i pt c p i p t物理调用h逻辑调用 图2 - 2 r m i 体系结构 ( 1 ) s t u b s k e l e t o n 层 s t u b s k e l e t o n 层通过引导流传输数据,引导流将被传输的j a v a 对象以 拷贝方式传输到远程地址空间。远程对象的s t u b 是远程对象在客户机端 的代理,实现所有的由远程对象支持的接口。远程对象的s k e l e t o n 是服务 器端的一个实体,它包含向实际远程对象调用的方法。 ( 2 ) 远程引用层 远程引用层负责执行特定的独立于客户机s t u b 和服务器s k e l e t o n 的 远程引用协议,通过一种面向流的连接将数据传送到传输层e ( 3 ) 传输层 r m i 的传输层负责建立并管理与远程地址空间的连接,监视连接是 否活动,监听调用请求,维护记录驻留在该地址空间的远程对象表,为 调用建立连接,为远程调用查找发布器,向发布器传递连接。 第2 帝组件规范概述 n e t 组件动态重配置技术的研究与实现 2 2 2 r m i 的优点 ( 1 ) 丽向对象 r m i 直接跨网传递对象,可将完整的对象作为参数和返回值进行传 递,不需要额外的客户程序将对象分解成基本数据类型。 ( 2 ) 可移动 r m i 可将对象从客户机移动到服务器,或者从服务器移到客户机。 ( 3 ) 动态类装载 r m i 的动态类装载使得客户机和服务器可以在运行时通过网络装载 所需要的类。 ( 4 ) 分布式垃圾收集 r m i 的分布式垃圾收集功能允许用户根据自己的需要定义服务器对 象,并且明确这些对象不再被客户机引用时被删除。 ( 5 ) 安全 r m i 使用j a v a 内置的安全机制保证下载执行程序时用户系统的安 全,可保护系统和网络免遭潜在的恶意程序的破坏。 2 3c o m d c o m i c o m + 组件规范 2 3 1c o m 组件规范 c o m 9 1 是一种以组件为发布单元的对象模型,这种模型使组件以一 种统一的方式进行交互。 2 - 3 1 1c o m 结构 c o m 主要是由对象和接口两部分组成。对象通过接口为客户提供各 种形式的服务。对于c o m 对象来说,接口是它与外界交互的唯一途径, 客户程序用一个指向接口数据结构的指针来调用接口成员函数。 c o m 定义的每一个接口都必须从i u n k n o w n 继承过来,其原因在于 n e t f l l 件动态函刚簧技术的研究i 实现 第2 章组件规范概述 h n k n o w n 接口提供了两个非常重要的特征:生存期控制和接口查询。 c o m 采用了“引用计数技术”来解决内存管理的问题,通过引用计 数来决定c o m 对象是否继续生存下去,c o m 对象的客户程序可以通过 接1 3 指针很好地控制对象的生存期。 2 3 1 2 c o m 特性 ( 1 ) 语言无关性 c o m 对象的定义不依赖于特定的语言,只要它们都能生成符合c o m 规范的可执行代码即可。 ( 2 ) 进程透明特性 c o m 所提供的服务组件对象在实现时有两种进程模型,进程内对象 和进程外对象,但这种区别对于客户机来说是透明的。 ( 3 ) 可重用性 c o m 有两种重用机制:包容方式和聚合方式。组件对象的重用性建 立在组件对象的行为方式上,而不是具体的实现上。 2 3 2d c o m 组件规范 分布式组件对象模型d c o m t l o l 是c o m 的扩展,它可以支持不同计 算机上组件对象与客户程序之间或者组件对象之间的相互通讯。对于客 户程序而言,组件程序所处的位置是透明的。 2 3 2 1d c o m 的结构 c o m 组件有两种进程运行模型:进程内组件和进程外组件。进程外 组件又包括本地进程外组件和远程组件,其中远程组件就是d c o m 。 d c o m 用网络协议来代替本地进程之间的通讯,无论客户还是组件都不 知道连接是通过网络进行的。 当调用d c o m 组件时,在注册表中找到组件的位置,然后通过r p c 笫2 章组件规范概述 n e t 组件动态取酣置技术的耐究与实现 在服务器上创建远程对象,调用服务,最后返回结果给客户端。 代理d l l 和存根d l l 除了完成r p c 调用外,还需要对参数和返回 值进行列集和散集操作。 当客户程序调用组件对象的成员函数时,它实际上是调用本进程内 代理对象的对应成员函数,代理对象负责把客户的参数从堆栈中读出, 列集并通过网络传输。当远程机器上的存根代码接收到这些列集数据后, 用这些数据重新建立堆栈。组件对象对堆栈中的返回值和输出参数进行 列集处理,并通过网络传输到客户机器中,由代理对象把结果散集到客 户堆栈中。最后返回到客户程序。 2 3 2 2d c o m 的特点 ( 1 ) 位置透明性 d c o m 允许不同的组件对象运行在不同的服务器上,客户程序如同 在本机上使用c o m 组件一样使用d c o m 组件。 ( 2 ) 可配置性 用d c o m 建立的分布式软件系统可以在不改变代码的情况下很方便 地进行重新配置,包括服务器的变化、客户程序的自动安装等。 ( 3 ) 安全性 d c o m 通过让开发者和管理员为每个组件设置安全性环境而使安全 性透明。 ( 4 ) 协议无关性 使用d c o m 建立的分布式应用系统支持包括t c p ,i p 、u d p 、i p x s p x 和n e t b i o s 在内的多种传输协议,d c o m 提供了基于这些无连接和面向 连接的一个安全性框架。 2 3 3c o m + 组件规范 c o m + 【ll l 把c o m 、d c o m 和m t s ( m i c r o s o f t t r a n s a c t i o ns e r v e r ) 三者 n e t 纽件动态重配置技术的研究与实现 第2 章纽件刹范概述 有机地统一起来,形成了一个概念新、功能强的组件体系结构,真正适 合于企业应用平台。 c o m + 的对象引用与环境相关,不能简单媳把对象引用从一个环境传 递到另一个环境。当客户从一个环境调用另一个环境中的对象时中间 必须经过代理对象和存根代码,由代理对象拦截调用,负责进行环境切 换,保证客户代码和对象分别在自己的环境中执行。 2 3 3 1c o m + 队列组件模型 c o m + 除了支持基于r p c 连接的运行方式,它还支持基于消息的通 讯过程。 队列组件并没有使用直接的r p c 连接,而是采用了底层的消息队列 机制,使客户与组件的生存周期分离在不同的时间点上。客户程序不再 直接调用组件对象,它利用消息机制与组件对象进行通讯。所有该组件 的调用请求记录在一个永久队列中,该队列保存在客户机上。当客户机 连接到网络上,从永久队列中获得调用信息。执行真正的调用操作。 2 3 3 2c o m + 事件模型 c o m + 事件模型采用了多通道的发布,订阅事件机制,它允许多个客 户去“订阅”事件。这些事件由各种组件对象“发布”。当发布者激发事 件时,c o m + 事件服务对事件数据库中有关的订阅信息进行检查,然后通 知对应的订阅者。 c o m + 事件模型用事件类作为发布者和订阅者之间的中间对象,发布 者必须通过事件类发布信息。当发布者要激发事件时,它创建一个事件 类对象,调用相应的事件方法,然后释放对象的接口。c o m + 事件服务会 决定如何通知订阅者,决定什么时候通知订阅者。订阅者只要通过c o m + 事件服务创建一个订阅对象,并注册到事件数据库中,以后它就会接收 到来自发布者的事件通知。 鹕2 市g i l 件龇范概述 n e t 组件动态重d 鼠技术的研究i 实现 2 4 n e t r e m o t i n g 规范 2 4 1 n e t 组件 在n e t 平台中,组件以a s s e m b l y 的形式出现,a s s e m b l y 提供了标识、 作用域、安全和版本管理。a s s e m b l y 由清单、元数据、i l 代码和资源组 成。清单描述了a s s e m b l y 的名称、版本、地区信息,a s s e m b l y 中的类型 列表。元数据描述了a s s e m b l y 内定义的类型,包含接口、类、基类、方 法签名、属性、事件、成员变量等。代码以中间语言的形式进行存储。 资源中包含了只读存储的数据,比如字符串、图标、图片和声音。元数 据描述a s s e m b l y 静态的特性,中间语言描述a s s e m b l y 的动态特性。 元数据为n e t 组件提供了丰富的自描述特性,我们可以在代码运行 时通过反射( r e f l e c t i o n ) 机制从元数据中获得组件类型等重要信息。反射还 能使我们在获得类型信息的基础上,在代码运行时进行类型的动态创建 与方法的动态调用,甚至动态创建并执行i l 代码。动态调用为,n e t 组 件提供了迟绑定功能,它使得组件在运行时的配置变得极为方便。 n e t 组件除了具有大多数组件的特点,如组件的二进制兼容性、接 口与实现的分离、对象位置透明性、安全性和语言独立性,还具有以下 一些新的特性【1 2 】:( 1 ) n e t 组件都是从s y s t e m o b j e c t 类派生,都是 s y s t e m o b j e c t 类的多态表现。( 2 ) n e t 组件没有类工厂,由运行时环境 把类型声明解析成包含该类型的a s s e m b l y 。( 3 ) n e t 组件不使用引用计数 管理对象的生命周期,由无用单元回收器自动清除对象。( 4 ) n e t 组件没 有描述接1 3 和定制类型的i d l 文件或类型库,类型定义嵌在a s s e m b l y 中 作为元数据。( 5 ) n e t 组件不依靠注册表管理,安装n e t 组件只要把它 复制到应用程序的目录下直接使用。n e t 严格维护版本控制,允许同一 组件的新旧版本在同一台机器上同时运行,这就解决了d l l h e l l 问题。 n e t 组件动态重配置技术的研究与实现 第2 章组件_ l | l 范概述 2 4 2 n e t r e m o t i n g n e t r e m o t i n g f j 3 】是n e t 框架构建分布式应用的一种典型方案,它实 质上是建立在公共语言环境之上的进程间的通信,较d c o m 更容易实现、 更容易配置和更安全,是d c o m 的替代技术。 n e tr e m o t i n g 提供了一种允许对象通过应用程序域与另一对象进行 交互的框架。这种框架提供了多种服务,包括激活和生存期支持,以及 负责与远程应用程序进行消息传输的通讯通道,如图2 - 3 所示。 2 4 2 a 远程对象 豳2 - 3 n e tr e m o t i n g 体系结构 任何位于调用方应用程序域之外的对象,即使在同一台计算机上执 行,也被认为是远程对象。在应用程序域内部,原始数据类型按数值传 递,而所有的对象按引用传递。对象作为参数传递时,框架将该对象序 列化并传输到目标应用程序域,对象将在该目标应用程序域中被重新构 造。 当某个客户端激活一个远程对象时,它将连接到该远程对象的代理。 第2 章组件规范概述 n e t 组件动态重配置技术的_ | i j f 究与实现 对该代理的所有操作都被适当地重新定向,以便n e t 运行时环境能够正 确拦截和转发调用。如果代理和远程对象不在同一个应用程序域中,则 堆栈中的所有方法调用参数会被转换为消息并被传输到远程应用程序 域,这些消息将在该远程应用程序域中被转换为原来的堆栈帧。 2 4 2 2 代理对象 代理对象是在客户端激活远程对象时创建的。作为远程对象的代表, 代理对象确保对代理进行的所有调用都能够转发到正确的远程对象实 例。当某个客户端激活一个远程对象时,n e t 运行时环境将创建 t r a n s p a r e n t p r o x y 类的一个本地实例,该实例上的所有方法调用时都被拦 截。如果对象在同一个应用程序域中,简单方法调用将被路由到实际对 象;如果对象位于不同的应用程序域中,将调用i n v o k e 方法把它打包到 i m e s s a g e 对象并转发到r e a l p r o x y 类中。 2 4 2 。3 通道 远程对象之间通过通道传输消息。当客户端调用某个远程对象上的 方法时,与该调用相关的参数以及其它信息会通过通道传输到远程对象。 调用的结果会以同样的方式返回客户端。客户端可以选择“服务器”中 注册的任一通道,以实现客户对象与远程对象之间的通讯。开发人员可 以选择符合需要的通道,也可以自定义通道或创建新通道。 通道注册必须在对象注册之前进行,通道按应用程序域注册。当进 程结束时,该进程注册的所有通道将被自动清除。客户端可以使用任何 已注册的通道与远程对象通讯,远程处理框架会确保该对象连接到正确 的通道。 大多数通道既实现了接收器接口,又实现了发送器接口,可以在两 个方向上通讯。当客户端调用代理上的某个方法时,远程处理框架会拦 截该调用并将其转为要发送到r e a l p r o x y 类( 或一个实现r e a l p r o x y 类 的实例) 的消息。r e a l p r o x y 将消息转发到消息接收器,消息接收器负责 n e t 纰件动态熏配置技术的耐究l j 实现 第2 章组件规范概述 与远程对象注册的通道之间建立连接,并通过通道将消息从调度位置传 输到远程对象本身。 n e t r e m o t i n g 包含h t t p 和t c p 两种通道,为分布式应用程序提供 传输机制。h 1 v r p 通道使用s o a p 协议与远程对象传输消息。所有消息 在流过s o a p 格式化程序时都被转换为x m l 格式并被序列化,所需的 s o a p 头也会被添加到该流中。t c p 通道使用二进制格式化程序将所有 的消息序列化为二进制流,并使用t c p 协议将其传输到目标u r i 。 2 4 2 4 激活 远程处理框架支持远程对象的服务器激活和客户端激活。服务器激 活适用于多个客户端调用方法位于同一对象实例上、且对象在函数调用 之间维持状态的情况。客户端激活对象从客户端实例化,并且客户端通 过使用基于租用的专用系统来管理远程对象的生存期。 服务器端激活分为两种模式;s i n g l e t o n 模式和s i n g l e c a l l 模式。 s i n g l e t o n 模式下只有一个实例处于活动状态,客户端首次访问时激活该 实例,该实例会处理所有后来的客户端访问请求,不管是同一客户端还 是其它客户端。s i n g l e t o n 实例可以在方法调用中维持状态。s i n g l e c a l l 模 式下,客户端的每个方法调用,都会激活一个新的实例。 在可以接受客户端访问之前,所有的远程对象都必须在远程处理框 架中注册。注册了远程对象后,远程处理框架将为该对象创建一个对象 引用,然后从程序集中提取与该对象相关的必要元数据,这些信息将与 u r i 和程序集名称一起存储在对象引用中。 远程处理框架从元数据获得了创建代理所需的足够信息,只有在客 户端调用代理上的某个方法时才会建立网络连接。当调用抵达服务器时, 远程处理框架从消息中提取u r i ,定位与u r i 匹配的对象引用,然后 将对象实例化,并将方法调用转发至对象。 第2 章组件舭 ! i :i 溉述 n e t 组l 件动态厦配置技术的研究峙实现 2 4 2 5 对象的租用生存期 每个应用程序域都包含一个用于管理其租用情况的租用管理器。所 有的租用都会被定期检查,以确定租用是否已过期。如果租用过期,则 会调用该租用的发起者,使它们有机会更新租用。如果所有的发起者都 不准备更新租用,则租用管理器会删除该租用并将该对象作为垃圾回收。 通过租用来管理远程对象的生存期可以作为引用计数的一种替代方 法,与引用计数和连接客户相比,租用降低了网络的繁忙程度。 n e t 纰件动态蓬酏管挫术的研究实现第3 章组件动态晕配置的研究 第3 章组件动态重配置的研究 3 1 组件动态重配置 动态重配置指的是允许一个系统在运行时而不是在设计时从一种配 置转变为另一种配置,对系统的运行产生尽可能小的影响f 1 4 l 。这样的话, 系统就不必停止运行、重启以适应配置的改变。在基于组件的系统中, 动态重配置动态调整和扩展组件提供的功能而不影响其它组件提供的服 务,使分布式系统的灵活性、适应性和可扩展性得到了增强。在基于组 件的系统中,系统配置可以描述为组件的集合以及组件之间的联系,动 态重配置操作包括组件的动态生成、动态移除、动态替换和动态迁移。 本文讨论的动态重配置主要指组件的动态替换,如图3 1 所示。 幽3 - i 纽件的动态替换 3 1 1 动态重配置的基本模型 动态重配置的基本模型如图3 2 所示。 第4 章纰件幼态厦配置框架的址计,实现 n e t 组件动态蘑配置技术的研究i 实现 重配置活动 图3 2 动态重配置基本模型 在动态重配置模型中,重配置活动提出了重配置的要求,配置信息 指的是组件之间的关系。重配置管理控制了分布式系统的重配置过程, 它接受重配置要求,获取配置信息,使系统从旧的配置转变为新的配置, 并生成更新后的配置信息【1 4 l 。 对正在运行的系统进行重配置会影响组件之间正在进行的交互,重 配置管理必须确保与重配置组件交互的其它组件不会因为重配置而导致 功能丧失,确保整个系统不会因为重配置而无法正常运行。保持系统的 一致性是重配置的一个必要条件,重配置以后的系统必须处于正确的状 态。如果系统满足结构一致性的要求,系统中的组件处于相互一致的状 态,就认为系统是正确的【1 5 】。 重配置可能影响整个系统的结构一致性。如果用新版本组件替换旧 版本组件,客户在替换之前以某种方式调用旧版本的组件,替换之后应 该以同样的方式调用新版本的组件。为了使重配置前后整个系统保持结 构一致性,新版本的组件要求和原来组件的接e l 定义一致,这样的话, 客户可以通过同样的接口获取新组件提供的服务。 在基于组件的系统中,动态重配置主要有两种解决方案:一种是由 组件自己完成,一种是由组件框架完成。如果动态重配置由组件自己管 理的话,组件的开发将变得异常复杂,需要组件开发人员熟悉动态重配 n e t 组件力态最削霄技术的研究j 实现 蚺3 帝 1 l 件功态重削霄的州究 置技术,这对普通的组件开发人员将是一个艰巨的任务:而且由多人开 发的组什来队作完成组件的动态重配置,很难保证不会影响整个系统的 一致性。反过来,动态重配置由组件框架来管理,虽然组件框架的设计 复杂,但是蘑配置对憋个系统的影响将会降到最低,整个系统的一致性 得到了最大的保舐;该方案要求组件满足组件框架的接口规范,并不会 给组件丌发人员带来太大的麻烦。 3 1 2 组件的一致性 组件动态重配置会影响目标组件和其它组件之间的交互,分析和处 理动态重配置期间组件之间的交互是动态重配置研究中的关键问题。如 粜分札式系统组竹之问要成功地进行交互的话,它们必须处一i :相互一致 的状态。约l 什之f i , j 的交_ e i :是唯一影响组件一致性的因素。考虑组件a 调 ;- i j 2 t t f b 的情犹,如果a 与b 对交互的结果有同样的认定的话,a 剩b 或者都认定调用已成功完成,或者都认定调用失败,a 和b 就被认为处 于相互一致的状态。如果初始化a 对b 的调用后用c 取代b ,对于要求 纰什处j 二棚l :致状态的系统,或者取消调用然后通知a 以保持同步性; 或者b 收到请求,处理之后返回响应,然后被c 代替;或者b 被c 代替, f _ ic 处理a 的请求后返回响应。 为了保b f 重配置后的相互一致性,大多数重配置方法认为只有在系 统处1 j 二重配置安全状态以后才能进行重配置。当一个组件满足下列条件: 客户组件对目标组件不再有新的调用请求,目标组件已响应客户组件发 小的调 请求,川。以认为该组件到达重配置状态。根据如何保持系统的 寿 互一致性,重配置方法可分为髓大类 1 5 l :观察系统运行到达重配置安 个状态和驱动系统进入重配置安全状态,如图3 3 所示。在前一种方法中, 安全状态的到达依赖组件的行为。对于组件持续交互的系统,无法保证 重配置的完成。如粜交;! j l - ,直在进行,重配置纠么时候,1 :始将不可预计。 红驱动系统进入安全状态的方法中,由重配置算法保证安全状态的到达。 辩4 章l l l 件动态霹酏簧框架的砒计。j 实现n e t 纽件动态霞配留擞术的研究与实现 重配置方浊 。 小保持棚! i 致性 保持釜 f r | :鬓囊的相 。 检测安全状态驱动进入安全状态 。 正在进行的交互完重配置结束厉再先 成之后才开始重刚成原来正在进行g j 置交互 幽3 3 重配置方法的分类 现有的驱动系统进入安全状态的方法又分为两类f 1 5 】:客户组件和目 标组件之间正在进行的交互完成后再开始重配置;重配置结束后再完成 原来组件之问正在进行的交互。这两利重| | 己置方法都要保证正存进行的 交白:最终能够完成,或者重配置开始之前,或者重配置完成之后。如果 组件之问正在进行的交互在重配置期闯挂起,等到重配置结束以后再恢 复的话,组件开发人员不得不提供转移重配置组件控制状态的方法,允 许被挂起的交互在重配置结束以后继续完成。控制状态包括调用堆栈的 状态、程序计数器和线程上下文信息,这些信息与组件的具体实现逻辑 密切相关,真正实现两个组件之间控制状态的转移有一定的难度。在基 于j a v a 组件动态重配置的研究中,有学者提出修改j v m 来实现组件之间 控捌状态的转移 1 6 l 。 在我们的动态重配置方法中,允许目标组件和其它组件之间正在进 行的交互完成,通过阻塞目标组件和其它组件之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026银行远程营销面试题目及答案
- 2026应急能力面试题及答案
- 2026齿轮技术面试题及答案解析
- 晋升副主任医师个人专业技术工作总结
- 小学五年级信息科技《Scratch创意编程-涂色小火箭》教学设计
- 初中地理七年级下册《澳大利亚的自然环境与经济发展》教学设计
- 初中七年级德育《合理饮食 护航成长》主题班会教学设计
- 八年级语文《散文两篇》教学设计(暑期预习)
- 初中九年级地理中考专题复习课教学设计:成因分析类综合题的破题逻辑与表达规范
- 初中体育与健康八年级《体育精神》教学设计
- 2026党课考试题及答案
- 教师日常心理滋养 守护长期职业健康课件
- T∕CWEA 41-2026 水利工程质量检测记录与报告编写导则
- 连云港市东海县机关事业单位招聘笔试真题及答案
- 世界麻醉医师协会(WFSA)2025 版急诊气道管理指南(中文版)
- AI在网络舆情智能监测与分析中的应用
- 注册消防工程师继续教育2025年部分题目与答案(126题)
- 会场布置与活动物料制作服务方案
- 山东2025年高级会计师《高级会计实务》考试真题(完整版)
- 2026年临床用血考核评价实施细则
- 石家庄新天智慧能源有限公司招聘笔试题库2026
评论
0/150
提交评论