(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf_第1页
(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf_第2页
(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf_第3页
(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf_第4页
(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf_第5页
已阅读5页,还剩70页未读 继续免费阅读

(计算机软件与理论专业论文)支持软件动态组合的web构件模型的研究和应用.pdf.pdf 免费下载

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

文档简介

上海大学硕士学位论文 摘要 随着i n t e r n e t 的发展,w e b 系统凭借其开发、维护、费用等多方面的优势 迅速发展起来,已经成为软件的发展趋势。在与软件体系结构,特别是动态软 件体系结构的结合中,形成了种可以不断扩展,实时跟进需求,不间断提供 服务的理想软件系统。在这样的背景下,本文结合上海市教委项目与8 6 3 子项 目,提出了一种w e b 构件模型,以及该构件模型的构件描述模型,使用x m l 进行形式化描述,并在w c b s g o m ( w 曲c o m p o n e n t b a s e ds o f t w a r e g r a p h i c s o r i e n t e dm o d e l ,w c b s g o m ) 平台实现其部署,通过反射机制完成整 个系统映射。 该模型是对i n t e m e t 环境下,构件模型和描述的一种探索,对于支持动态配 置的w e b 系统开发模式实现方式的一种尝试,下面是本文所做的主要工作和创 新点: ( 1 ) 基于外生连接子的思想,提出一种w e b 构件模型,该构件模型将控 制与计算功能的实现相分离,适合于w e b 应用系统开发,并能够支持基于体系 结构的动态配置。 ( 2 ) 根据本文所提的w e b 构件模型,给出一种w e b 构件描述模型,从构 件本体,构件接口,构件状态,构件开发信息四个方面对构件进行描述,并使 用x m l 语言对构件进行了形式化的描述。 ( 3 ) 扩展并设计实现一种基于图的w e b 构件组装框架模型w c b s g o m , 采用层式图的组装结构,通过反射机制,实现图到可用软件系统的转变。 关键词:构件,w e b 构件,动态体系结构,w e b 应用 v 上海大学硕士学位论文 a bs t r a c t a l o n gw i t ht h ei n t c r n c td e v e l o p m e n t ,w e bs y s t e m sg r o wr a p i d l yi nb o t h q u a n t i t ya n dq u a l i t y , a n da l m o s th a sb e c o m eat e n d e n c yo fs o f t w a r ed e v e l o p m e n t , b e c a u s eo fi t s a d v a n t a g eo fd e v e l o p m e n t ,m a i n t e n a n c e ,e x p e n s ea n ds o m eo t h e r a s p e c t s i nc o m b i n ew i t hs o f t w a r ea r c h i t e c t u r e ,s p e c i a lt h ed y n a m i cs o f t w a r e a r c h i t e c t u r e ,a ni d e a ls o f t w a r em o d e lc o m e st oo u rm i n d t h i si d e a ls o f t w a r ec a l lb e e x p a n d e dp e r p e t u a l l y , f o l l o wu pt h e d e m a n do fr e a lt i m e ,a n dp r o v i d es e r v i c e u n i n t e r r u p t e d l y i nt h i sc o n t e x t ,w ep r o p o s eo n ew e bc o m p o n e n tw h i c hb a s e do nt h e p r o j e c to fs h a n g h a ie d u c a t i o n a lc o m m i t t e ea n d8 6 3s u b i t e m s w ea l s op r o p o s et h e d e s c r i p t i o nm o d e lo ft h i sw e bc o m p o n e n ta n d u s ex m lt oc a r r yo nf o r m a l d e s c r i p t i o n f i n a l l y , w e r e a l i z ei t s d e p l o y m e n t i nt h ew c b s g o m ( w e b c o m p o n e n t b a s e d s o f t w a r e g r a p h i c s o r i e n t e dm o d e l ,w c b s g o m ) p l a t f o r m w h i c hi ss p e c i a l l yd e s i g n e df o rt h i sc o m p o n e n tm o d e l t h i sc o m p o n e n tm o d e li sd e s i g n e df o rt h ei n t e r a c te n v i r o n m e n t w em a k eo n e e x p l o r a t i o n i n c o m p o n e n td e s i g na n dd e s c r i p t i o nu s i n gan e wt e c h n o l o g y - - - - e x o g e n o u sc o n n e c t o r a n dw ea l s op r o p o s eap l a t f o r mt oc a i t yo u tt h er e a lw e b s y s t e mw i t ht h i sw e bc o m p o n e n t o u rp r i m et a s k sa n di n n o v a t i o n sa r ed i s p l a y e da s b e l o w 1 b a s e do nt h ee x o g e n o u sc o n n e c t o r st h o u g h t ,o n ek i n do fw e bc o m p o n e n t m o d e li s p r o p o s e d t h i sc o m p o n e n tm o d e ls e p a r a t e s c o n t r o lf r o mf u n c t i o n c o m p u t a t i o n i ti se a s yt od e v e l o paw e ba p p l i c a t i o ns y s t e mb yu s i n gt h ep r o p o s e d w e bc o m p o n e n tm o d e l ,w h i c h s u p p o r t sd y n a m i cd e p l o y m e n tb a s e do n t h e a r c h i t e c t u r e 2 w ep r o p o s eo n ed e s c r i p t i o nm o d e lf o rt h ew e bc o m p o n e n tm o d e lp r o p o s e d i nt h i sp a p e r t h i sd e s c r i p t i o nm o d e ld e p i c t sw e bc o m p o n e n tf r o mf o u ra s p e c t s , i n c l u d i n gc o m p o n e n to n t o l o g y , c o m p o n e n ti n t e r f a c e ,c o m p o n e n ts t a t e ,d e v e l o p m e n t i n f o r m a t i o n a n dt h e nw eg i v ea na p p r o a c ht od e s c r i p tw e bc o m p o n e n ti nf o r m a l v i 上海大学硕士学位论文 w a y w i t hx m l l a n g u a g e 3 w ee x p a n dac o m p o n e n t b a s e ds o f t w a r eg r a p h i c s o r i e n t e dp r o g r a m m i n g c b s g o pm o d e lt ow c b s g o m ,w h i c hm e a n sw e bc o m p o n e n t b a s e ds o f t w a r e g r a p h i c s o r i e n t e dm o d e l i no r d e r t or e a l i z et h er e a ls y s t e m ,w eu s e al e v e lg r a p ht o d i s p l a yt h ea r c h i t e c t u r eo fs y s t e ma n dr e l a t i o n so fw e bc o m p o n e n t s t h er e f l e c t i o n m e c h a n i s mi su s e dt oc o m p l e t et h et r a n s f o r m a t i o nf r o mg r a p ht oc o d e k e y w o r d s :c o m p o n e n t ,w e bc o m p o n e n t ,d y n a m i ca r c h i t e c t u r e ,w e ba p p l i c a t i o n v 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发 表或撰写过的研究成果。参与同一工作的其他同志对本研究所做的 任何贡献均已在论文中作了明确的说明并表示了谢意。 本论文使用授权说明 本人完全了解上海大学有关保留、使用学位论文的规定,即: 学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签名:墨叠 导师签名:遂支日期:趁纽:芝:绰 i i 上海大学硕士学位论文 第一章绪论 1 1 研究背景 软件技术的发展成就了软件开发从“数据结构+ 算法= 程序”的设计模式到 “构件开发+ 软件体系结构= 软件系统”的组装模式。软件规模的不断扩大,让 软件的开发人员更加关注软件的质量、效率、维护性和扩展性,基于构件的软 件工程( c o m p o n e n tb a s e ds o f t w a r ee n g i n e e r i n g ,简称c b d e ) 被认为是解决上 述问题的有效方法。基于构件的软件工程是在软件复用和软件构件技术的基础 上发展起来的一种软件系统开发方法。软件复用是避免重复开发,充分利用已 有劳动成果进行应用开发的方案。构件技术的出现和发展使其成为软件复用的 基础和核心。软件构件技术是以构件作为研究对象,以构件的制作、管理、组 织以及与之相关的一系列活动作为主要的研究内容的技术,核心还是构件的组 装技术。 随着i n t e m e t 技术的日益成熟,应用系统逐步向i n t e m e t 方向转化,并从传 统的桌面应用系统发展成为w e b 应用系统,w e b 应用系统的社会需求量急剧增 长。为了降低w 曲应用系统的开发难度,加速其开发过程,提高w e b 系统的质 量,包括m i c r o s o f t 、s u n 在内的各大软件公司和机构纷纷推出了各自的w 曲应 用系统开发技术和相应的开发平台。m i c r o s o f t 的n e t 和s u n 的j 2 e e 都取得了 不错的效果和市场业绩,但仍存在许多问题。首先是人们对新技术的学习和理 解程度有限,使得这些平台没有百分百的发挥其功效;其次,开发人员没能在 这样的平台中充分利用已有的系统开发成果,没有达到很好的重用;第三,这 些平台没有从根本上解决系统开发周期长,费用高以及质量不可靠等问题;最 后,系统维护,升级等动态性相关问题没有得到充分的重视或理想的解决。 如何将构件技术,基于构件的软件开发方法应用到w e b 系统的开发中来, 是解决w e b 系统开发的质量和效率问题的有效方式,也是提升w 曲系统品质 系统的可维护性,可拓展性,动态演化性的重要手段。 构件技术,特别是构件组装技术的研究在理论和应用之间还有很大一段差 距。构件的技术在未来的很长一段时间还是人们研究的重点。本文研究了当前 上海大学硕1 :学位论文 主要的构件模型,并在外生连接子的基础上进一步拓展,提出了适合于w e b 应 用系统的w e b 构件模型。 1 2 研究内容 基于构件的软件开发是软件工程的一个重要的研究分支,旨在提高软件生 产效率、提高软件质量、降低软件开发成本。当前对基于构件的软件开发,主 要集中在以下几个方面: ( 1 ) 基于构件软件工程方法的概念模型和过程模型; ( 2 ) 构件模型:研究构件的本质特征及构件间的关系,尤其是构件的形式 化理论模型; ( 3 ) 构件获取:有目的地从事构件生产和从已有系统中挖掘提取构件; ( 4 ) 构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组 装问题; ( 5 ) 构件库( 构件分类与检索) :研究构件分类策略、组织模式及检索策 略,建立构件库系统,支持构件的有效管理; ( 6 ) 构件组装与演化:在构件模型的基础上研究构件组装机制,包括源代 码级的组装和基于构件对象互操作性的运行级组装; ( 7 ) 标准化:构件模型的标准化和构件库系统的标准化; ( 8 ) 构件系统的安全性问题和实时( r e a l t i m e ) 问题; ( 9 ) 非技术因素对c b s d ( c o m p o n e n t b a s e ds o f t w a r ed e v e l o p m e n t ,基于 构件的软件开发) 的影响法律法规、商业实践、组织结构等方面的挑战和策略。 本文的主要工作涉及构件模型、构件描述、以及构件组装和演化等几个方 面。在外生连接子的基础之上,提出了一种新的w e b 构件模型。该构件模型是 针对w e b 应用设计的,满足动态体系结构需要。文中详述了该构件模型的结构, 描述以及构件组装和动态调整。 整个工作过程的几个关键问题:1 ) 构件描述的一致性( 或相似性) 。构件 粒度和功能上的差异不应该导致构件表现和用户认识上的差异,亦即无论构件 大小、构件应用领域、构件在系统中可能位置、以及复合构件与原子构件等的 不同,都不会造成构件表现形式的不同,对用户而言,都是以一种统一的、标 2 上海大学硕士学位论文 准的描述形式给定和显示。2 ) 构件的w e b 化问题。在i n t e r n e t 环境中的构件, 不仅被本地程序所使用,还要被i n t e r a c t 中更多的客户使用( 使用方式可以是下 载到本地或直接远程调用) ,这就需要考虑到构件的定位,以及定位后对不同的 请求的回应问题。3 ) 构件组装问题。本文提出的w e b 构件模型,所有的组装 问题都被限定在了连接子中,简单并有效地表达连接,执行组合是该模型的一 个重要问题。这里不仅仪涉及配置阶段的静态组装,还涉及系统运行时构件的 动态组装和系统配置问题,更是给组装提出了更高的要求。 1 3 本文组织结构 本文的组织结构如下: 第一章绪论 首先介绍本文的研究背景,然后对本文主要研究内容和组织结构进行了阐 述。 第二章构件技术 首先介绍了构件的概念,从构件定义,构件的基本特点,以及构件在系统 创建和使用过程的不同阶段的划分,即构件生存期;然后介绍了几种主要的构 件模型和外生连接子的方法,并进行了对比。 第三章动态体系结构 对动态体系结构进行了简单介绍,从动态体系结构的分类,相关技术方面 对动态体系结构进行了探讨,重点介绍了几种动态体系结构。 第四章支持动态体系结构的w e b 构件模型 给出了w e b 构件的实现模型和描述模型。运用外生连接子的思想设计w e b 构件, 给出了相关的定义和实现模型。提出了w e b 构件的描述模型,并采用x m l 对 其进行了形式化的描述。 第五章w c b s g o m 配置模型的设计与实现 设计w c b s g o m ,详细介绍了模型的概念,整体框架以及功能特点,讨论 w c b s g o m 模型设计和实现中的一些关键技术。 第六章应用 3 上海大学硕士学位论文 以上海市科研信息管理平台的应用为例,利用自建的w e b 构件和 w c b s g o m 平台模拟实现上海市科研信息管理平台子系统中一个模块,验证了 w e b 构件模型的合理性和正确性,检验了w e b 构件模型对动态配置的支持。 第七章总结与展望 对全文进行总结,归纳目前所做的工作和其中存在的不足,以及未来的研 究方向。 4 上海大学硕十学位论文 第二章构件技术 本文主要研究支持动态体系结构配置的w e b 构件模型、描述方法、构件间 依赖描述以及w e b 构件的组装问题,因此,本章首先介绍构件的概念及其研究 现状。 2 1 构件的概念 计算机软件领域的构件的概念最早出现在1 9 6 8 年n a t o 软件工程会议上, 但是软件复用的思想是在更早的时候开始的,从代码段,函数,对象等思想一 路走过来,到现在的构件。 早期的复用技术受技术和社会环境的限制,复用程度不高。直到面向对象 的技术发展成为主流技术,软件复用才得到了大幅提高。基于构件的软件开发 最初的思想源于面向对象程序设计,面向对象程序设计中的模块化设计,封装, 继承,层次结构,规范和实现的分离等技术为构件技术的产生做了充分的准备。 到目前为止,工业界和学术界都应经有了比较成型的构件应用案例。 2 1 1 构件的定义 在不断追求软件复用的道路上,研究人员相继提出了若干软件构件的定义, 其中有代表性的包括: ( 1 ) 1 9 9 6 年e c o o p 会议上提出的定义:软件构件是一个具有规范接口和 确定的上下文依赖的组装单元,软件构件能够被独立地部署和被第三方组装。 ( 2 ) s z y p e r s k i 1 1 在1 9 9 8 年给出的定义:软件构件是可单独生产、获取、部 署的二进制单元,它们之间可以互相作用构成一个功能系统。 ( 3 ) c m u s e i 的f e l i xb a c h r n a n 2 1 等人在2 0 0 5 年5 月的一份关于基于构件的 软件工程的报告中给出的定义:构件是一个不透明的功能实现,能够被第三方 组装,符合一个构件模型。 ( 4 ) o m g ( o b j e c tm a n a g e m e n tg r o u p ,对象管理组织) 【3 】的定义:构件是 上海大学硕上学位论文 一个物理的、可替换的系统组成部分,它包装了实现体并且提供了对一组接口 的实现方法。 。在上面的定义中的一个共有的特点就是,这些对于构件的定义或未提及构 件模型,或未明确构件模型,这也使得这些构件的定义中未能定义构件间的组 合机制【4 1 。k k l a u 等人提出了一个基于外生连接子的构件模型,明确的在其 构件定义中规定构件模型。 2 1 2 构件的基本特点 构件应该具备的基本特征【5 】= ( 1 ) 复用( r e u s a b l i t y ) : 复用是软件构件最基本的性质,只有可以被复用的构件才有其存在的价值; 同时为了提高软件系统的开发速度和质量,只有容易被复用的构件才有较高的 应用需求。因此,复用应该具有可复用性和易复用性两层含义。 ( 2 ) 封装( e n c a p s u l i z a b l i t y ) 构件封装可以对外界隐藏设计和实现细节,仪通过接口与外界交换信息。 以接口和接口定义语言为主要内容的构件交互机制实现了描述与实现的分离。 对于构件,封装应该满足构件内部的功能实现是紧密耦合的,构件之间的关系 是松散耦合的,这可以保证构件功能复用的完整性和构件开发和交付的独立性。 ( 3 ) 组装( a s s e m b l y ) 构件通过组装可以形成更大的整体,组装是实施复用的手段。构件是面向 组装的,即构件并不是在组装的过程中主动参与和完成组装过程。这一点与传 统的复用技术有着显著的区别。 ( 4 ) 定制( c u s t o m i z a t i o n ) 定制是指构件在组装过程中随组装环境的不同而做出自适应调整,其过程 大致分为识别( i d e n t i f y ) 组装环境和做出相应的调整,包括调整内部结构或外 部接口的状态,完成与其它构件或应用框架融合。定制是构件组装必不可少的 步骤。 ( 5 ) 自治( a u t o n o m y ) 6 上海大学硕士学位论文 构件必须能够独立发布和独立运行,它是内含识别其属性、存取方法和事 件等信息的黑盒,该特征的类似提法为构件独立性、构件的自包含等。 ( 6 ) 集成( i n t e g r a t i o n ) 在一定的软件体系结构( 或环境、或语境) 下,将异构的软件构件无缝地 结合起来。集成有动态绑定和静态组装。 上述构件的各种应具备的性质,在各构件模型和构件应用中得到了不同程 度的满足。但存在着某种构件模型对某种性质或者某几种性质有表较好的支持 和实现,而对某些性质的支持不是很完善。满足这些性质的理想的构件模型将 使得软件的开发变得容易,软件质量得到大幅提高。因此世界各地的软件生产 厂商,专家,学者以及软件构件开发的爱好者,一直探索怎样更好地设计构件 模型和开发构件实现。我们根据当前的i n t c r n e t 和软件技术的发展,站在w e b 和体系结构的角度上,探讨了构件模型的w e b 化,我们称其w e b 构件模型。 2 1 3 构件的生存期 构件是以集成系统为目的的,通过构件之间的组合产生更大的构件甚至系 统。组合可以发生在构件生存期的不同阶段【6 】。构件的生存期可以被划分为三 个主要的阶段:设计阶段,部署阶段,运行阶段。 ( 1 ) 设计阶段 在这个阶段,构件被设计并使用某种编程语言创建,创建好的构件可以被 放入构件仓库中,也可以单独存储。在这个阶段,构件的创建是没有状态不能 执行的,类似于类模板,并且构件只能包含常量数据。和类不同的是,在这个 阶段的构件是可以进行组装,得到更大的构件的。如果构件( 含复合构件) 是 存储于构件仓库中的,则需要一个构件目录方便检索。 ( 2 ) 部署阶段 在这个阶段,构件的二进制代码被创建和部署在目标系统中。如果,存在 数据仓库,则构件的源码需要首先从数据仓库中检索出来。 ( 3 ) 运行阶段 在运行阶段,二进制构件连同初始化数据一起实例化,这时候,构件有自 7 上海大学硕十学位论文 身状态,并可以执行。 2 2 构件模型 构件模型是构件存在和使用的一个前提,任何一个构件都一定是基于某种 构件模型。在本节中,我们从构件模型的概念和已有的构件模型来进行更深入 的探讨构件模型。 2 2 1 构件模型 构件模型是对构件本质特征及构件间关系的抽象描述,是方法和语言的基 础,给出软构件描述的抽象对象,即w h a tt od e s c r i b e 。构件模型关注构件的接 口,封装构件的实现细节,是构件组装的依据和保证,并为构件的不同生产者 和使用者提供了一个为大家所接受的一致性描述。 一 构件模型是构件技术研究与应用的交互点,既是构件技术研究的主要内容 和成果,又是构件技术运用于实际应用系统开发的主要依据。 一个构件模型应该满足一些基本原则: ( 1 ) 表达能力足够强:模型是对客观对象的抽象,合适的抽象层次十分重 要,必须既能抓住本质,又不陷入细节,既要有足够的表达能力,又不能过于 复杂。 ( 2 ) 简单性:简单性是各种模型必须予以考虑的重要性质,简单意味着易 于掌握和理解,简单性和强的表达能力是一对矛盾,必须合理权衡。 ( 3 ) 一致性和完备性:模型必须具有对内的一致性和对外的完备性。一致 性是指构件作为一个封装体必须具有一致的对外接口、一致的组成结构以及一 致的交互方式;完备性是指不存在模型所不能描述的构件。 ( 4 ) 实用性:构件模型应易于理解、方便分类和检索。 ( 5 ) 扩展性:指在保持模型本身一致性和完备性的前提下,模型可以随着 应用需求的增长而变化。 上海大学硕士学位论文 2 2 2 已存在的构件模型 从构件在软件行业中出现到现在的这几十年里,无论是在产业界还是在学 术界,构件都取得了不错的成绩,并产生了多种构件模型。 产业界形成了三项具有代表性的主流技术,即对象管理组织( o b j e c t m a n a g e m e n tg r o u p ,o m g ) 的公共对象请求代理体系结构( 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 c t u r e ,c o r b a ) 和m i c r o s o f t 的c o m d c o m c o m + ,以 及s u n 公司的e j b ( e n t e r p r i s ej a v ab e a n ,e j b ) 。 ( 1 ) e j b 在e j b 模型中,如图2 1 所示,构件是企业级b e a n s ,即j a v a 类,由j 2 e e 服务器上的e j b 容器存储和管理。e j b 容器负责执行e j b ,提供通信服务、命 名和目录( j n d i ) 服务、事务服务、消息服务、数据访问服务、持久性服务、 资源管理服务、安全服务和远程连接。j 2 e e 远程连接模型处理客户和企业b e a n s 之间的远程通信。 厂、 c l i e n tm a c h i n ej 2 e es e r v e r ,、 c l i e n t a p p l i c a t i o n 磊试肛磊套 ,、 一一 、呈竺呈 d a t c o n te j bc ontr 、 图2 1 :e j 企业bean部署于ejb服务器中的ejb容器中。容器自动产生本地接口,一个接口, 本地接口用来对企业b e a n s 类实例进行创建、和删 除。远程接口提供对beans中事务方法的访问。容器使用jndiapi地把本 地接口注册到目录中,客户使用yndi定位本地接口创建新的beans或查找 现有的实体beans实例,当创建或找到beans,容器返回远程接口,远程21提 供对事务方法的访问并向客户展现所有与应用相关的接口,但是向隐藏容 器与b e a n s 间交接 上海大学硕1 二学位论文 e j b 构件分为三类: 1 、实体构件( e n t i t yb e a n s ) :实体构件模拟商业数据,是缓存数据库信息 的j a v a 对象。实体构件代表数据存储与数据库中的持久的商业对象,并添加行 为到特定数据。 2 、会话构件( s e s s i o nb e a n s ) :会话构件模拟商业过程,是作为执行任务代 理的i a v a 对象。会话构件代表商业过程或者代理,执行服务。与实体构件不同 的是,会话构件不表示持久数据。 3 、消息驱动构件( m e s s a g e d r i v e nb e a n s ) - 消息驱动构件模拟关于消息的 商业过程:是作为消息监听的j a v a 对象。消息驱动构件代表只能通过接收其他 构件消息触发的商业过程。与会话构件不同,消息驱动构件不能从接口访问。 e j b 使用r m i ( r e m o t em e t h o di n v o c a t i o n ,远程方法调用) 协议调用远程 接口,通过r m i 高层编程接口使得服务器对象的位置对客户透明,r m i 编译器 在客户端创建一个代理( p r o x y ) ,在服务器端创建一个框架( s k e l e t o n ) ,代理 和框架对象实现了所有的远程接口并透明地跨网络向远程对象分发所有的方法 调用。 在设计阶段,尽管b e a n s 组合可以在e j b 容器中“凌空”产生组合b e a n s ,但 是这样的组合b e a n s 是不能作为单独的b e a n s ,被标识和重用的。但是仓库中单 独的b e a n s 是可以重用的,只要客户在部署阶段可以访问到,不管是连接其它 b e a n s ,还是客户调用方法,正确的连接都会被执行。在e j b 构件模型中,没有 单独的部署阶段,这是由于设计阶段将b e a n s 程序集部署在仓库中就已经有效 地部署了b e a n s 。在运行阶段,系统被查找和实例化。 ( 2 ) c o m d c o m c o m + c o m ( c o m p o n e n to b j e c tm o d e l ) 是微软公司提出的构件对象模型,需要 微软w i n d o w s 系列平台的支持。c o m 的本质是一种二进制数据代码段,可以 较容易地插入到其他软件构件中。事实上,c o m 构件实现一个或多个和c + + 类形式相似的接口。c o m 在二进制代码级而非源代码级上的一致,使得c o m 能够支持不同语言编写的构件间的交互。这种依靠编程技术来解决软件交互和 复用的观点,是面向编程的观点。但c o m 并不是一种编程语言,它是使构件 1 0 上海大学硕士学位论文 像对象一样彼此交互的一种二进制标准。c o m 构件没有绑定某一种实现语言, 虽然它是语言独立的,却需要一个运行时环境来处理构件的定位及实例化 7 1 。 d c o m ( d i s t r i b u t e dc o m p o n e n to b j e c tm o d e l ,分布式组件对象模型) ,是 二进制c o m 对象在分布式网络环境下的基本扩展,建立d e c ( 分布式计算环 境) 的r p c ( r e m o t ep r o c e d u r ec a l l ,远程过程调用) 规范之上【8 ,9 】,为此人们 有时也称o r p c ( o b j e c tr e m o t ep r o c e d u r ec a l l ,对象远程过程调用) 。d c o m 中,c o m 对象被设计为具有远程相互作用的能力。o r p c 是微软使用的一套新 的底层调用接口,只是一种改进的r p c 。 c o m + 倡导一种新的设计概念。c o m + 把c o m 构件提升到应用层,而底层 细节由操作系统来处理,使c o m + 与操作系统的结合更加紧密。c o m + 的底层 结构仍然以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 ,微软事务服务器) 的处理机制,包括m t s 的对象环境、 安全模式、配置管理等。c o m + 将c o m 、d c o m 和m t s 三者有机地统一起来, 此外还增加了新的服务,使其成为真正适合于企业级应用的构件类型。c o m + 不仅支持多重继承,并且包含新的运行环境,以及语言扩展接口,它让各种语 言能更加容易地创建c o m 对象。 ( 3 ) c o b r a c o r b a 是o m g 在o m a ( o b j e c tm a n a g e m e n ta r c h i t e c t u r e ,对象管理体 系结构) 基础之上定义的o r b( 0 b j e c tr e q u e s tb r o k e r ,对象请求代理) , o r b 的公共结构。c o r b a 为分布式对象的平台中立和语言中立的计算环境奠 定了基础。在c o r b a 环境中,功能驻留于对象之中,而客户机可通过对象请 求代理o r b 访问这些对象。实现基本o r b 功能的软件称为o r b 核心。从某 种意义上说,c o r b a 是“软件总线”。c o r b a 的实质是r p c 与面向对象技术 的有机结合。在c o r b a 中,每一个构件是一个对象,有一个基于面向对象的 接口,内部代码实现可以是0 0 或非0 0 的语言,总线上的对象能够被任何其 它对象所使用。 c o b r a 构件是一种c o r b a 元类型( m e t a t y p e ) ,是c o r b a 元对象 ( m e t a - o b j e c t ) 有约束地扩充,有一个界面和一个对象引用( i n t e r f a c ea n do b j e c t 上海大学硕士学位论文 r e f e r e n c e ) ,并使用c o r b a 接口对象风格,提供构件特征( 也称端口p o r t ) , 能从单一构件类型继承,支持多重接口,每个构件实例由唯一的构件h o m e 创 建和管理。c o r b a 构件结构示意图2 2 : 构件接口叶o 构 l 件i ;要i 口 l 求l 7 i 属性 图2 2 :c c m 构件结构示意图 刻面是构件提供的相互独立的命名接口,用于构件与其用户交互。刻面接 口是通过组合来扩展构件的,是用户可显式地使用的独立接口,是构件向客户 提供应用功能的主要途径。插接端口是构件运行时以客户身份调用其他构件接 口的端口,插接端口表明这个构件与其他构件之间直接的关联性。事件源是用 来向一个或多个消费者发送指定类型事件的端口。事件属性是构件向外界显露 的可被访问或可被定制的内容,主要用于配置构件,以实现构件的定制。属性 配置被定义为对一组构件属性方法调用的描述。 上述三种构件模型是工业上主流的构件模型,已经形成了商业标准。三种 构件标准形式的历史背景和商业背景,它们都有各自的侧重和特点,彼此之间 也有很大的相似性和互补性。它们为应用软件的开发提供了可移植性、异构性 的实现环境和健壮平台,结束了面向对象中的开发语言混乱的局面,解决软件 复用在通信、互操作等环境异构的瓶颈问题。 除了工业界的三种标准构件模型,学术界也产生了一些不错的构件模型, 如3 c 模型、r e b o o t 模型、青鸟构件模型。3 c 和青鸟的概念对应于r e b o o t 的分面;3 c 的环境与青鸟的语境对应于r e b o o t 的o p e r a t e s 和d e p e n d e n c i e s 分面,描述软构件的外部属性( 即一个构件与其他构件间的关系) 和数据特性。 但这三个模型也有不同之处。基于3 c 模型的软构件描述语言允许刻画类属构 1 2 口 援 接 啦鼢 一 鬻 掘 驯器 构件提供 上海大学硕士学位论文 件属性,更适合于形式化的方法和语言,而r e b 0 0 t 模型只允许按照给定的分 面框架结构描述已有的软构件。因而适合于非形式化的方法。此外,r e b o o t 模型没有对应于3 c 模型中的内容的分面。这三个模型是软构件抽象描述模型, 它们为软构件描述提供了一个抽象摸板,没有给出特定应用领域中的特定属性, 因而适合于所有应用领域。 下面详细介绍另一种学术界提出来的构件模型,它与上述构件模型有很大 不同,我们将这种构建模型的思想及其不同之处通过对比的方式表现出来。 2 2 3 基于外生连接子的构件模型 外生连接子【1 0 】是由l a u 等人提出的,从构件的连接方式上改变了构件的控 制形态。可以在与当前存在的两种连接方式直接的消息传递和间接的消息 传递的对比中,清楚地表现外生连接子的特点。 ( 1 ) 直接的消息传递 利用直接的消息传递的构件模型主要包括e j b ,c c m ,c o m 7 ,u m l 2 0 【l l 】 和k o b r a 1 2 】。借用面向对象语言的符号来表示构件及其方法,我们用图形的方 式表述直接的消息传递,如图2 3 ,构件a 调用构件b 的方法a ,就是直接的消 息传递。在这种模式中存在两个角色,消息的接收者和消息的发送者。接收者 的身份既可以是静态的同发送者绑定,也可以在执行过程中确定。一条消息既 可以指定发给一个接收者也可以同时发给系统中的多个接收者。 图2 3 :直接消息传递 ( 2 ) 间接的消息传递 采用间接的消息传递的方式的构件模型主要有a d l s 13 1 ,j a v a b e a n s 1 4 1 , k o a l a 15 1 ,s o f a 16 1 ,p e c o s 1 7 1 ,p i n t l 8 1 和f r a c t a l 9 】。在间接的消息传递中,连 上海大学硕上学位论文 接子被定义为独立实体,典型的有胶水代码或者脚本语言,在构件间传递消息。 一个构件连接另一个构件,是通过连接子通知调用其相连的构件的方法。如图 2 4 ,构件a 通过连接子c o n l 连接b ,当a 调用b 的方法a 时,首先发生一个 消息到c o n l ,c o n l 再发送消息给b ,来完成调用。 图2 4 :间接消息传递 ( 3 ) 外生连接子 外生连接子的功能在连接子的基础上,进一步扩展和改进。构件封装计算, 连接子封装控制。外生连接子封装了控制和数据流,所有的调用都是由连接子 发起,伴随的数据流也是由连接子处理。在这种模型中,构件只对与其相连的 连接子做出回应,不与任何构件直接相连,不产生对其他构件的调用,仪提供 计算服务功能。如图2 5 ,连接子c o n l 调用构件a 中方法a 和构件b 中方法c 。 而构件a 、b 并没有直接相连。方法调用可能通过c o n l 和a 或者c o n l 和b 之间的数据流完成,但不可能产生a 、b 之间的直接数据流。 图2 5 :外生连接子 基于外生连接子的构件模型的定义可解释为:上层连接子与下层构件共同 组成新的构件。将图2 5 中的构件调用的描述图可变换结构如图2 6 ,清楚显示 1 4 上海大学硕士学位论文 连接子和构件的上下层调用关系。 图2 6 :连接模型转换 一- 一一一_ 一1 :口: i ;c o m p o n e n t : : :c o n n e c t o r: i i i 将图2 6 中的构件和被形式化的表述为图2 7 中的构件图,c o n l 与a 、b 组成复合构件c c o n e ,c o n 2 与b 、c 组合成符合复合构件c c t w o ,c o n 3 与c 、 、 d 组合成符合复合构件c c t h r e e 。 一c b 而。l c c 订佩j i- 图2 7 :转换为独立构件形式 外生连接子将构件间的组合关系和组合操作以及构件的执行控制彻底外化 到其上层的连接子中。这样做的好处:1 ) 构件封装服务。独立性得到了根本的 保证,只要环境条件满足,构件就可以被运用到任何系统。2 ) 通过连接子组合 形成系统。主动控制系统的运行与结构。外化的组合关系有利于系统结构的变 更和拓展。3 ) 基于外生连接子的构件具有良好的可维护性和重用性。 2 2 4 构件模型的比较 从实际应用的角度:c o b r a 、c o m d c o m 、j a v a b e a n e j b 是目前商业上 广泛使用的、已成型的构件模型。c o r b a 分布计算技术,具有模型完整、先 进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计 耻 炳 三三 上海大学硕士学位论文 算技术的标准。c o r b a 构件模型是o m g 组织制定的一个用于开发和配置分布 式应用的服务器端构件模型规范。c o r b a 的特点是大而全,互操作性和开放 性非常好。c o r b a 的缺点是庞大而复杂,并且技术和标准的更新相对较慢, 在具体的应用中使用不是很多。 从功能设计的角度:学术上的构件研究给出了更多的性能,安全,便捷性 方面的考虑,在设计的某些方面提出了很多新颖的设计方案,思路和实现,因 此功能上,更趋于完善和先进。但是这些构件模型研究也存在很多相通的问题: 1 ) 普及度问题。这些模型多数还是一家之言,出现时间都比较短,以及推广力 度都不大,因此了解程度,认可程度和使用程度都比较低。2 ) 多数缺少广泛的 实际应用的检验。受限于普及程度和认可度,多数学术上提出的构件模型缺少 大规模的实际应用的检验,这就使得一些潜在问题不能被发现,一些性能上的 问题没有得到充分的实践检验。 总得来说,理论的研究对于实践应用具有导向型和指引性,众多了理论研 究成果最终在实践的检验下得以应用,并促进应用的发展。对于构件的研究, 学术上的研究为应用构件的发展提供了理论的基础,加快应用发展的速度。本 文是在一定的理论研究之上,在构件模型,描述和组装方面进行的探讨和研究, 具有一定的学术价值和应用价值。 2 3 小结 本章介绍了构件的基本知识和几种构件模型。软件构件是一个具有规范接 口和确定的上下文依赖的组装单元,软件构件能够被独立地部署和被第三方组 装。构件的普遍地具有复用性,封装性,组装性,集成性,并通常是自制和可 定制的。构件的生成和使用过程称为构件生存期,被划分为设计阶段,部署阶 段,运行阶段。现有构件模型有多种,本章主要介绍了现在主流的工业构件模 型c o b r a ,c o m d c o m ,e j b ,重点阐述了一种新型的构件模型设计基 于外生连接子的构件模型,比较了工业构件模型和学院派的构件模型。 为了充分考虑我们所提出的构件模型对动态软件组装,动态

温馨提示

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

评论

0/150

提交评论