(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf_第1页
(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf_第2页
(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf_第3页
(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf_第4页
(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机应用技术专业论文)基于组件开发的应用软件的容错策略研究.pdf.pdf 免费下载

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

文档简介

论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究 成果。论文中除了特别加以标注和致谢的地方外,不包含其他人 或机构已经发表或撰写过的研究成果。其他同志对本研究的启发 和所做的贡献均已在论文中做了明确的声明并表示了谢意。 作者签名:咎砍日期: 论文使用授权声明 s t g 本人完全了解上海师范大学有关保留、使用学位论文的规定, 即:学校有权保留送交论文的复印件,允许论文被查阅和借阅; 学校可以公布论文的全部或部分内容,可以采用影印、缩印或其 它手段保存论文。保密的论文在解密后遵守此规定。 作者张律放导师繇触彳日期: 2 驴p 7 歹,g 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错簧略研究 摘要 软件的开发评价涉及很多方面,除了功能和性能要求外,其可用性、安全性 要求相当重要。软件的价值不仅体现在软件的交付使用,更多体现在开发过程中 的策略控制,容错策略是软件开发中的重要策略之一,如何制定容错策略来实现 软件开发的价值最大化是被关注的重点。本文主要研究基于组件开发的软件系统 容错策略研究。 本文在分析、研究基于组件的软件工程基础上,研究和分析了n e t 组件开 发技术以及软件系统拓扑结构,结合构建分布式组件的开发经验,研究基于组件 开发的系统容错策略,提出分级管理和选择、数据动态复制、负载均衡、在线升 级、权限管理等策略。结合这些策略的运用,提出了一种分布式系统容错设计思 想,给出软件设计开发模型。 本文结合上海市产学研联合项目s d 空运物流进出口业务处理系统的实 例,使用可靠性技术指标进行定量的分析。 关键字:基于组件的软件,拓扑结构,策略,软件容错 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 a b s t r a c t f o rm o s ts o f t w a r ee n g i n e e r i n gm e t h o d st h a tn o to n l yp r o m i s et oi n c r e a s ea l r e a d y l l i g hq u a l i t y , c o s t sa r ee a s i e rt op r e d i c tt h a ne f f e c t i v e n e s s b u tc o s t so rv a l u e sa r es o i m p o r t a n t ,e v e ni nt h es t r a t e g yc o n t r 0 1 f a u l tt o l e r a n c ei sn oe x c e p t i o n t h eg r a d i n go f t h em e t h o d so fs o f t w a r ef a u l tt o l e r a n c e ,u s e di nd i f f e r e n tp r o j e c t sc a nm a x i m u mt h e v a l u eo fas o f t w a r ep r o d u c t t h i st h e s i sa l m st oa n a l y z ea n dd i s c u s sf a u l t t o l e r a n t t e c h n i q u e so f c o m p o n e n t - b a s e d s o f t w a r es y s t e m t h i st h e s i sa n a l y z e sa n dr e s e a r c ht h ei d e ao ft h ef o u n d a t i o no ft h es o f t w a r e e n g i n e e r , r e s e a r c ha n da n a l y z e s n e tc o m p o n e n td e v e l o p m e n tt e c h n o l o g y , a n d s o f t w a r es y s t e mt o p o l o g i c a la r c h i t e c t u r e c o m b i n ew i md e v e l o p m e n te x p e r i e n c eo f c o n s t r u c t i n gd i s t r i b u t e dc o m p o n e n t , r e s e a r c hf a u l t - t o l e r a n c es t r a t e g yb a s eo ns o f t w a r e s y s t e mo fd e v e l o p m e n tc o m p o n e n t ,p r e s e n tc l a s s i f i c a t i o nm a n a g e m e n ta n dc h o i c e 、 d a t ad y n a m i cc o p y 、l o a d i n gb a l a n c e 、o n l i n eu p g r a d e 、p o w e rm a n a g e m e n t c o m b i n i n g t h e s es t r a t e g ya p p l i c a t i o n ,p r e s e n tak i n do fs o f t w a r ef a u l tt o l e r a n c ed e s i g nt h i n k i n g , g i v i n gas o f t w a r ed e s i g nm o d l e t h et h e s i sc o m b i n e st h ee x a m p l eo fs da i r - l o g i s t i ci m p o r ta n de x p o r tb u s i n e s s p r o c e s ss y s t e m ,u s i n gr e l i a b l et e c h n i c a li n d e xa n dg a i n sm e n s u r a b l ea n a l y s i s k e y w o r d s :c o m p o n e n t - b a s e ds o f t w a r e ,t o p o l o g i c a la r c h i t e c t u r e ,s t r a t e g y , s o f t w a r e f a u l tt o l e r a n c e 2 上海师范大学硕士研究生学位论文 基于组件开发的应用软件的容错策略研究 第一章引言 1 1 背景 自1 9 6 9 年,e w d i j k s t r a 提出程序设计的概念以来,提出用工程的概念、 方法、原理和技术来开发和维护软件。在此基础上,软件开发经过了多年的发展, 先后出现了面向过程、结构化、面向对象等开发方法和编程技术。 随着数据库技术、信息基础的不断发展,基于b s 结构的分布式系统的开发 与应用越来越广泛,人们对于计算机管理系统的依赖程度,涉及到生活与工作中 的方方面面。在给人们带来便捷、高效的同时,给管理者带来因系统崩溃、网络 安全、软件健壮性等问题。这种错误发生的概率虽然较低,尤其涉及到软件系统 应用,如果计算机不能在可以接受的时间内,准确、可靠的提供服务,将会造成 巨大的损失。 软件可靠性( s o f t w a r er e l i a b i l i t y ) 是软件质量的要素之一。软件可靠性是指软 件系统在规定的时间内及规定的环境条件下,完成规定功能的能力 1 】。软件可 靠性是软件系统固有特性之一,它表明了一个软件系统按照用户的要求和设计的 目标,执行其功能的正确程度。软件可靠性与软件缺陷有关,也与系统输入和系 统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。但 是实际上任何软件都不可能达到百分之百的正确,而且也无法精确度量。一般情 况下,软件系统可以采用容错策略来提高软件系统的可靠性,采用分级管理和选 择、数据动态复制、负载均衡、在线升级、权限管理等策略提高系统的无故障使 用时间,在系统出现故障情况下保障软件系统的数据、文件恢复到故障以前状态。 组件技术应用是对软件系统可靠性的支持也是人们研究关注焦点之一。组件 是可重复使用的编程模块,包含动态链接库( d 1 1 ) 或可执行( e x e ) 文件的可 执行代码。组件可提供一个或多个“对象”,这是一种自包含的代码单元,可以 在组件中执行指定的功能,其中包含用于执行一项或一组任务的代码。在运行状 态下,组件工作在一个确实已经运行的应用程序中。组件必须正确地将自身表示 出来,它需要对方法的调用进行处理并实现与其他组件之间有效的协同工作。组 件可以( 甚至通过网络) 与其他组件合并,共同创建w e b 应用程序。组件对象 ( 如c o m 对象) 执行公共任务以便不必自己创建代码来执行这些任务。 4 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 近年来,微软公司等推出了n e t 结构作为基于组件的程序开发环境,它能够 使得分布式技术在w e b 网上得以实现。n e t 定义了一种系统类型,引入了诸如: 组件、对象和界面等元素。从而构成了基于组件开发的多语言分布式应用系统。 同一般的组件框架结构一样。 目前构建基于组件的软件系统主要有三种方法: 第一种是一般的构建方法。文献 2 、 3 中都使用了一般的构建方法,这种 方法仅仅构建了c b s 系统,比较实用,但没有考虑可靠性因素。 第二种方法是基于组件库的构建方法。文献 4 、 5 对这种方法进行了详细 的介绍,这种方法通过构建好的组件库以及提供合适的组件选取算法,来保证选 取组件的最优或次优,但由于局部最优不能保证全局最优,并且组件库的前期开 销十分大等原因,这种方法并不实用。 第三种方法使用了冗余思想,如文献 6 中提出了组件的n 版本设计,软件 可靠性随之大大提高,但是相应的开发成本也直线上升。 基于组件的软件开发( c o m p o n e n t b a s e dd e v e l o p ,简称c b d ) 是日益成熟 起来的软件开发方法。其核心思想是像组装计算机硬件一样组装计算机软件,或 者说是实现计算机软件的“即插即用”。 在这一开发过程中,人们希望自己所应用的计算机系统是一个高度可靠的系 统,当软件系统某个部件出现问题的时候就发生了部分失效。虽然部分失效对软 件系统的性能有定的影响,但同时,它应该不会影响软件系统中整个应用程序 的正确执行。容错是这些系统在出现错误时仍旧可以工作的基础。提高系统可靠 性的技术途径很多,但归纳起来大体上可分为两类: ( 1 ) 提高元部件本身可靠性的技术,即避错技术; ( 2 ) 用给定元部件构成高可靠性系统的技术,即容错技术【7 】。 一个系统无论采用多少避错设计方法,总不能保证永远不出错。实践证明, 利用避错技术来提高系统的可靠性,一般最多使系统平均无故障时间增加一个数 量级,超过这个限度会使成本急剧上升。因此,要想进一步提高系统可靠性就必 须采用容错技术,设计和开发容错应用。开发者在软件开发和实现策略中,作为 软件安全性和可靠性方面,最重要的是软件容错技术的使用,就是为了让软件好 用。从外部看一个系统,容错的分类和使用一般可以划分为三层:硬件、操作系 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 统和数据库系统、应用软件。软件容错方法的实现与整个项目的实现成本密切相 关,怎样取得更有价值的投入,怎样才是合适的同样存在一个选择策略问题。 1 2 项目来源 在上海市自然基金项目基于组件的软件系统的可靠性计算方法研究( 编 号:0 4 z r l 4 1 0 5 ) 及上海市经委市重点产业技术产学研联合攻关项目s d 空运 物流进出口业务处理系统( 编号:0 6 2 6 ) 等项目的资助下,笔者在导师的指导 下进行了相关内容的研究和设计。同时,作者于2 0 0 1 年7 月至2 0 0 6 年7 月的5 年时间内,参与了s d 空运物流进出口业务处理系统的开发工作,为本论文 的研究提供必要的数据和试验环境。 1 。3 本文需要解决的问题 基于组件的应用软件系统开发还面临着很多问题和挑战e 1 5 ,结合s d 空运 物流进出1 2 业务处理系统项目的开发经验,如在系统运行过程中,经常会遇到系 统运行数据复制不一致、服务器上服务进程失效、网络交互延时等等导致系统崩 溃或系统性能下降的故障。我们认为,在开发过程中主要解决以下一些问题: ( 1 ) b s 结构的软件架构,具有应用灵活性高、系统易于维护等优点,当 今的许多大规模的企业应用都应用这种模式进行开发。但b s 架构在具有许多优 点的同时也存在着诸多的缺点,比较突出的就是b s 结构的交互性和响应速度较 差,一些对安全性以及用户交互性要求较高的系统依然会选择基于窗体的模式进 行开发。 ( 2 ) 目前基于组件的软件计算平台的另一个不足是没能对系统的容错提供 足够的支持。现在的应用系统本身就非常复杂,如果再把容错机制显式地嵌入 其中就会使得程序员的编程负担异常繁重,所以很有必要提供一种透明的容错机 制,使程序员可以将精力集中在应用的逻辑设计上而把系统容错留给专门的运行 时中间件平台来处理。 ( 3 ) 组件应用服务器是基于c o r b a 和e j b 组件设计的,尽管这些组件很 大程度上提高了软件对象应用的质量和可重用性,然而,n e t 等主要关注的是功 能型组件接口,非功能型的组件技术,比如:c p u 、分时操作、容错和系统安全 性并不是当前n e t 的研究关键。它们并没有为基于软件“容错”对象的应用提供 支持。 6 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 ( 4 ) 基于容错对象的应用在一些方面不同于基于过程的应用,一个服务器 处理过程往往含有多个对象,一个对象的死亡( 寻址空间被破坏) 不一定导致一个 过程的崩溃,用于检测过程崩溃的机构无法探测对象的死亡;而且,许多对象服 务器是多线程服务器,每一个对象运行一个独立的线程,这样,用于检测过程中 止的机构就可能不能检测一个对象中止( 或者一个线程挂起) 。因此,这些软件组 件就需要基于对象的容错支持。 在系统升级开发过程中,我们从提高软件系统容错能力的角度出发,研究容 错技术在基于组件的软件系统中应用。 1 4 论文主要研究内容及意义 针对存在的问题,在项目的开发过程中,本文主要研究以下几方面问题: ( 1 ) 研究基于组件库的开发方法。结合项目的需求,在n e t 环境下开发支 持分布式系统开发的组件,寻求一种性价比较高的基于组件分布式系统的开发组 件。 ( 2 ) 软件拓扑结构。分析软件系统容错拓扑结构,根据项目需求构件适合 本项目的系统拓扑结构。 ( 3 ) 软件容错策略。综合软件系统的项目经验,构建应用软件系统容错设 计模型,提出软件系统容错策略。 ( 4 ) 实例运用。结合基于组件的软件开发技术和软件系统容错策略,运用 到s d 空运物流进出口业务处理系统。 软件可靠性是软件质量的最重要指标之一,软件业也越来越关注软件的可 靠性问题。然而新一代的复杂l 临界任务系统,例如:航空运输系统、安全控制系 统等,它们在一个高度动态的环境下进行操作,在这样的前提下,研究基于组件 开发的软件系统容错策略,是十分有必要的。本文研究的意义主要有以下几点: 第一,对于构建基于组件开发的软件系统起一定的改进作用。基于组件的软 件开发及应用越来越广泛,现在已经出现了与之相对应的软件工程方法,包括组 件的组件划分、组件库的建立等等。本文提供的方法是在现有的基于组件的软件 工程的基础上,针对基于组件的软件系统的特点,融合了容错设计、容错算法、 容错策略,改迸原有的方法,将之应用到s d 空运物流进出口业务处理系统 的实际开发中。 7 上海师范大学硕士研究生学位论文 基于组件开发的应用软件的容错策略研究 第二,提供一种基于组件开发的软件系统容错调度算法,在构件开发组件中, 实现这些有效的算法来增加软件的可靠性。经典的组件构件,没能对系统的容错 提供足够的支持,必须提供一个平台来实现容错策略。这样,才能更加充分地丰 富各种构建组件效果,最终使得软件可靠性有所改进和提高。 第三,软件容错要和市场策略、开发过程、用户需求、其他资源等多方面配 合。如果有一种容错方法在现有的技术开发资源中没有使用经验,采用某种策略 会增加相应的投入风险,需要综合考虑取舍。本文根据基于组件的软件的特点, 结合项目的实施经验,提供了基于组件开发的软件系统的容错策略。一方面,有 效地提高了软件可靠性;另一方面,提供构件适用于普通软件的开发组件的策略 研究。 1 5 论文的主要工作及章节安排 论文工作主要分为四个阶段,大致如下: 第一,资料收集阶段。笔者阅读了国内外相关的论文和书籍近百篇,较深入 地了解了基于组件的软件系统开发及容错策略方面的情况。 第二,容错策略确立阶段。在分析、比较了现有的软件系统开发策略之后, 笔者发现了现有基于组件开发的软件系统在容错方面的一些不足,并确立了新的 基于组件开发的软件系统的容错策略。 第三,应用阶段。在确立了本文的构建方法后,笔者还结合了实际软件系统 进行了可靠性、容错策略方面的应用,使用这些策略可以进一步提高软件系统的 性能。 第四,总结阶段。分析、比较了各种容错策略之后,本文针对开发中的实际 情冤,给出了一些使用本文容错策略的指导性意见。并总结了本文容错策略的使 用范围以及将来的研究方向等内容。 本论文共分七个章节,各个章节的安排如下: 第一章是全文的概述,介绍了本论文的撰写背景和意义: 第二章介绍了组件的软件系统( c b s ) 、基于组件的软件开发( c b d ) 、基于 组件的软件工程( c b s e ) 的情况以及n e t 组件在软件系统开发中的优势。 第三章描述了软件软件系统容错结构,介绍了在项目开发过程容错拓扑结构 使用情况。 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错簧略研究 第四章提出软件系统的容锗策略,之后在此基础上又提出基于组件开发的软 件系统的容错设计模型。 , 第五章结合s d 空运物流进出口业务处理系统的开发过程提出的一系列 容错策略。引入了性价比的概念,对基于组件开发的软件系统容错策略进行了性 能的评价和比较。 第六章对论文进行了总结和展望。在强调了本文的几个重要结论的同时,还 总结了本文的创新点以及将来的研究方向。 9 上海师范大学硕士研究生学位论文 基于组件开发的应用软件的容错策略研究 第二章组件开发技术 2 1 基于组件( c o m p o n e n t ) 的软件开发简介 2 1 1 组件标准 组件是具有定功能的独立程序体,能够通过接口与其它组件装配起来协同 工作;组件可以进行单独开发、编译、调试和测试;一个组件可以装配到不同的 软件系统中,以实现复用。 组件标准包括规范的组件接口定义,组件间通信,组件组装的规范,如命名 机制,消息传递机制等。目前,软件业主要流行三种组件标准,它们分别是: ( t ) o m g ( o b j e c tm a n a g e m e n tg r o u p ) 提出的c o r b a ( c o m m o no b j e c tr e q u e s t b r e a k e ra r c h i t e c t u r e ) ; ( 2 ) 微软的c o m ( c o m p o n e n to b j e c tm o d e l ) d c o m ( d i s t r i b u t e dc o m ) : ( 3 ) s u n 公司的j a v ab e a n s e j b ( e n t e r p r i s ej a v ab e a n s ) 。 文献 8 、 9 给出了这三种标准的比较,见表2 1 。 表2 1 三种组件标准的比较 c o r b ac o m d c o m e j b 二进制接口标准非二迸制的二进制接口标准基于c o m ,j a v a 兼容性、可移植性与标准化语言有完全没有源代码基于j a v a 语言规 很强的结合;可移级的标准化语言范,可移植性好, 植性不太好绑定概念兼容性略差 修改和维护使用c o r b ai d l 定使用m i c r o s o f t不包含i d l 文件, 义组件接口,需要i d l 定义组件接在容器与组件之 额外的修改和维口,需要额外的修间定义接口,易于 护改和维护修改维护 提供的服务提供一整套标准己被一些关键服既不标准又缺乏 化服务;但是缺乏务所支持实际应用 实际应用 l 应用范围适合于传统的企适合于传统的桌适合于一般的w e b 业级运算 面应用处理 i o 上海师范大学硕士研究生学位论文基于组件开发的应用软件的客错策略研究 2 1 2 基于组件的软件开发优势 所谓基于组件的软件系统( c o m p o n e n t - b a s e ds o f t w a r e ,简称c b s ) 是指由组 件装配、组合而成的软件系统,它主要由组件和连接器( c o n n e c t o r ,也可以称为 胶水代码) 组成。组件用于实现某一特定的功能,而连接器用于连接各个组件, 实现组件间接口参数的一个映射关系。当然也可以将连接器封装成一个组件。文 献d o 给出了基于组件的软件系统、组件、连接器三者的关系,见图2 1 。 一表示组件的接口 图2 1 基于组件的软件系统、组件、连接器的关系 由图2 1 可见,组件和连接器共同组成了基于组件的软件系统。每个组件对 外均提供了接口,实现与其它组件的互操作。而连接器则通过对组件间的交互规 则的建模来实现组件间的连接。常见的连接器有客户服务器协议( c l i e n t s e r v e r p r o t o c o l s ) 、管道( p i p e ) 、过程调用( p r o c e d u r ec a l l ) 等【1 i j 。 著名的研究机构g a r t n e rg r o u p 的研发部主任m i k eb l e c h a r 曾作出“基于 组件的软件开发是软件开发的下一个浪潮。”的论断。的确,c b d 给我们一种新 的开发理念和思想,有着其它软件开发方法所没有的优势,归纳起来,主要有以 下几点: ( 1 ) 提高复用度:软件的复用是多层次的,主要可以分为:概念级复用( 知识 复用) 、逻辑级复用( 方法和标准复用) 和物理级复用( 软件成分的复用) “2 “”1 。 子程序和函数、类的复用只存在于一个软件系统中,而一个组件却可以组装到 不同的软件系统中,实现了更高粒度的软件复用。 ( 2 ) 提高软件质量:c b d 在软件质量上的主要优势在于:1 ) 提高可维护性2 ) 提 高可靠性。m c c a l l 、g l a s s 、r e i f f e r 等专家均一致认为软件可维护性和可靠性 是软件质量的要素“。在构建组件库和组件选取的过程中每一个组件通常多次被 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 复用,即经过了反复的测试和验证。 ( 3 ) 提高开发效率:组件的来源是多途径的,它既可以由软件开发商自行开发, 也可以向第三方软件商购买。由软件商自行开发的组件由于相互独立,故可以进 行并行开发,节省开发时间;同时,开发者的精力也将更加集中在业务逻辑上, 而非编程的细节中,从而提高开发效率。 ( 4 ) 提高软件的可扩充性:软件可扩充性也是软件质量的要素之一。一方面, 组件开发技术可以对运行已久的系统进行封装,使之成为组件,再加入新的软件 组件,将原有系统扩充成新的软件系统;另一方面,各个组件只有通过接口与其 它组件进行通信,每个组件均可以方便、独立地进行功能上的扩充和改善。 2 2 基于组件的软件工程 基于组件的软件工程( c o m p o n e n t b a s e ds o f t w a r ee n g i n e e r i n g ,简称c b s e ) 的方法主要有组件的划分、获取、改制、装配、测试、维护等方法。下面几个章 节结合本项目的组件库构建方式,做简单介绍: 2 2 1 组件库技术 组件库是存放组件的一个数据库,是支持软件复用的基础设施。建立组件库 的相关技术包括组件的描述、验证、存储、检索、评估等,详见图2 2 “”。 图2 2 构建组件库的相关技术 这些技术的根本目的在于使组件库的使用者可以得到一个适合的组件。目 前,组件库构建方法是众多的,主要可以分为四大类:基于形式化规格说明的方 法、超文本的方法、人工智能的方法、图书馆及信息科学的方法。同时也有多种 方法来评估组件库的优劣,如使用查全率、查准率、平均复用因子【5 】等参数进行 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 分析。 2 2 2 组件的划分 基于组件的多层分布式系统由于具有可重用、跨平台、语言无关和易扩充的 特性,成为了当前软件系统开发的主流 1 9 1 。组件划分的原则与模块的划分原则 是致的,必须达到“高内聚、低耦合”的效果。通常先将组件按分布计算逻辑 划分成三太类:用户界面组件、事务处理组件、数据管理组件“”。当然,也存在 不属于任一逻辑层的组件,称之为工具组件。再将这些粗粒度的组件划分成细粒 度的组件。图2 3 为组件划分的示意图。 用户界面组件 事务处理组件 数据管理组件 筐匕 l 组件ll ”1 | 医网陬嘲阿司 例倒幽 工 具 组 件 图2 。3 组件的划分 多层分布式系统的体系结构奠基于程序算法、数据结构和大粒度对象的设 计,它概括了整体系统的层次结构、功能部件分解、部件的本质和特性,各层次 的组件架构、组件的对外接口和组件之间的通信协议和整体性布局策略及法则。 它的设计和描述在整个系统开发过程中起着十分重要的作用。 上海师范大学硕士研究生学位论文 基于组件开发的应用软件的容错策略研究 篙西 w e bs e r v e r 謦 莎。 o e b u s i n e s sl o g i cn o d e ,一、 k d 鼬a s e m 撇g e m e n t n o d c 图2 4 多层分布式信息系统模型图 在多层分布式信息系统模型 2 0 中,最基本的是3 层模型( 包括用户界面层、 中间层、数据源层) 。中间层处理商业逻辑或与应用有关的计算,泛指“商业逻 辑结点”( b u s i n e s sl o g i cn o d e ) 。它常常有多个组件,各负责提供特定的服务,例 如安全、发现、事件处理等。如果对3 层结构的中间层继续细化,就可扩展为4 层或多层分布式信息系统模型。如:从中间层抽象出w e b 服务器( w e bs e r v e r ) 构 成的4 层分布式信息系统,如图2 4 所示。w e b 服务器负责响应客户端浏览器发 出的w e b 请求,并简单处理后传入包含商业逻辑的应用服务器,应用服务器负 责解释执行操作数据库等相关动作,并将处理结果返回给w e b 服务器,w e b 服 务器将处理结果用特定的页面模板实现后返回给客户端浏览器。 2 2 3 组件的构建 标准信息描述组件的一般特征,性能信息给出了组件相关的一些参考信息, 最重要的是接口信息描述了组件与外界的交互方式。 组件标准信息描述了组件本身的一些通用信息【2 1 】,包括组件的设计开发人 员、团队信息、组件版本描述以及组件功能韵说明等非技术信息,如: ( 1 ) 组件的开发单位信息: ( 2 ) 组件的版本信息: ( 3 ) 组件的功能描述: ( 4 ) 组件的构造万式,组件可以是聚合构造而成,也可以是包容其它组件; 1 4 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 ( 5 ) a p p l i c a t i o n :组件的应用领域。 组件的外部信息描述,组件的接口是组件与外部组件或应用程序、应用平台 交互的唯一通道,组件功能的对外提供方式。它包括3 部分:属性,操作和事件。 如: 一个组件可以有若干个接口【2 1 ,每个接口包括若干个功能相关的属性、操 作和事件。属性是用来标志组件状态的可操作的信息。例如在d c o m 中,客户 可以通过s e t g e t 方法来对属性进行读写。而属性本身也可带有一系列的属性,包 括数据类、取值范围等。组件操作足组件对未提供的服务,即组件的动态行为, 反映了组件的功能属。它的描述包括操作名、参数列表、返回值类型和事务处 理4 个方面。 组件性能信息描述,组件性能信息描述町以反映组件运行时的各项性能指 标,如可靠性、响应时问、错误处理能力等。这些信息可供使用者用来判断使用 该组件是否能够满足需要。 2 2 4 组件的配置管理 在基于组件的软件中,组件的配置管理也是一个难点。因为不但组件本身会 不断地改进、演化,基于组件的软件系统也会演化,产生不同的版本。如何进行 组件的配置管理,特别是组件版本控制是一个讨论热点。文献 2 2 给出了一种较 为全面的方法。这种方法分别对组件的版本和软件系统的版本进行管理、控制, 再使用基线将两者联系起来,示意图见图2 5 。图中,根据基线的关联可知,系 统的1 1 版本是组件1 的1 1 版本,组件2 、3 的1 2 版本的组合。这种机制可 以有效地对组件及系统进行版本控制。 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 配置 + 1 。 j -1i ,1 2 组件版本控制 系统版本控制 图2 5 组件的配置管理 2 3 n e t 组件的软件开发环境 v i s u a ls t u d i o n e t 框架增加了许多w e b 开发、远程访问和部署功能。它 提供了w e b 应用程序模型a s p n e t ,建立在n e tf r a m e w o r k 的编程类之上, 包含简化w e b 应用开发的控件集和结构。n e t 包含了基于x m l 的数据访问 技术a d o n e t ,具有良好的互操作性、可维护性、可伸缩性等性能,实现了 数据和数据源的分离。n e t 支持s o a p ,这是一种基于x m l 的用于在w e b 上 交换结构化和类型信息的简单的轻量协议,该协议是模块化的,并具有很强的扩 展性。c o m 则是微软公司定义的二迸制的对象访问的标准,应用程序或对象可 通过c o m 公开其功能和接口。【2 9 】 2 3 1 n e t 提供数据库程序组件 a d o n e t 从a d o 数据访问模型发展而来,是n e t 框架的重要组成部 分。由n e t 数据提供程序和d a t a s e t 两个核心组件组成。d a t a s e t 是一个对象, 不与任何数据库交互,它也是一个数据容器。存储的内容是d a t a t a b l e 对象的形 式,从n e t 数据提供程序提取。d a t a s e t 可以包含一个或多个表以及表之间的 关系和约柬信息。d a t a t a b l e 结构由其列和约束定义,列由d a t a c o l u n m 对象定义, d a t a t a b l e 中的实际数据由d a t a r o w 对象表示。程序组件类如下表2 1 所示 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 表2 1 n e t 提供程序组件常用的类 主要类 类描述及使用方法 用于创建效据库连接,构造于具有连接参数为字符串形式。 s q l c o n n e c f i o ns q l c o n n e c t i o nc o n 1 2n e ws q l c o n n e c t i o n ( c o n n e c t s t r i n g ) , c o n n e c t i o n s t r i n g 式中为s q l 数据库名,s a 为用户标识 用于检索、更新、插入和删除数据库中的数据。s q l c o m m a l l d i n s e r t c m d = n e ws q l c o m m a n d s q l c o m m a n d ( s q l ,c o r m ) ,式 s q l c o m m a n d 中s q l 为字符串,用于数据库检索、更新、插入和删除用的 s q l 语句 用于将检索得到的数据填充d a t a s e ts q l d a m s e ta d a p t e r = s q l d a m s e t n e ws q l d a t a s e t s q l d a t a s e t ( s q l c o n n ) s e t r f i l l ( o r d e r d s , o r d c r s ) 式中o r d e r d s 为d a m s e t 对象,o r d e r s 为表标识 s q l d a t a r e a d e r 用于查询结果的只迸、只读的快速访问,不具备d a m s e t 的 复杂功能。大大加快数据访问和查询的速度。s q l d a t a r e a d e r r e m e r = s q l c m d e x e c u t e r e a d e r 0 ,式中s q l c m d 为 s q l c o m m a n d 对象。其缺点是数据访问期间,要保持数据库 连接。 任何一个企业数据库应用系统基本上都是对数据库进行c r u d 操作,即 c r e a t e ( 增加) 、r e t r i e v e ( 检索) 、u p d a t e ( 更新) 、d e l e t e ( 删除) 。根据表及实际项目 经验,归纳在c # 中开发基于s q l 的持久层访问组件大致经历如下步骤: ( 1 ) 根据设计完成的数据库,划分业务逻辑模块,确定各个组件的命名空间; ( 2 ) 设计各个组件的公共接口,确定各个业务方法; ( 3 ) 分别实现各个组件的公共接口,编译成为d l l ; ( 4 ) 在表示层( 如a s p n e t 或w i n f o r m 中调用该组件,显示或输人数据) 。 在本系统中实现方法时,具体编程步骤如下: ( 1 ) 使用n e t 数据库的s q l c o r m e c f i o n 连接数据库; ( 2 ) 如果是插入、删除或更新操作,则编写s q l 语句,使用s q l c o m m a i l d 对 象的e x e c u t e q u e r y 方法完成如果是查询操作,则使用s q l d a m s e t 方法返回 d a t a s e t 数据集或直接使用s q l d a t a r e a d e r 方法读出。如果是存储过程或函 1 7 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 数,则使用s q l d a t a e x e c 的i n s e r t c o m m a n d 、d e l e t e c o m m a n d 、 u p d a t e c o m m a n d 以及s e l e c t c o m m a n d 属性执行与s q l c o m m a n d 相同的操作。 ( 3 ) 利用d m a s e t 对象的t a b l e s 方法指定d a t a t a b l e 集合,在d a t a v i e w 中显示 其数据。也可以将返回的d a t a s e t 对象绑定到d a t a g f i d 或d a t a l i s t 控件中显 示数据d a m s e t 对象。 2 3 2 服务端的实现 为了适应不同大小的数据库,需要在n e t 应用程序中重新设置每次访问 的最大数据量,可编辑n e t 生成的应用程序的配置文件,修改 元素,这个过程在服务端和客户端都需要进行。 用v c n e t 开发服务端程序时,先创建“a s p n e tw e b 服务”类型的 c # 项目,这要求服务端必须安装w i n d o w si i s 。在c 拌项目中建立w e b 服务,此 服务将自动添加到i i s 中。在饼程序中,使用a d o n e t 连接数据库,其中, s q l c o n n e c t i o n 用于连接s q ls e r v e r 数据库;o r a c l e c r n n n e e t i o n 连接o r a c l e 数据 库;o l d b c o n n e c t i o n 和o d b c c o r m e c t i o n 分别用于连接o l ed b 接口和o d b c 接 口的数据库,按照上述的次序选择连接方法可以得到较快的访问速度,所以客 户端进行访问时指明数据库种类可以提高性能。 服务端程序和数据库之间的数据传递通过d a l a t a b l e 进行,首先读取指定表 的数据,存于一个d a t a t a b l e 实例中,这样实现了数据和数据源的分离,对 d a t a t a b l e 进行数据操作后,通过其成员函数u p d a t e o 修改数据库,完成数据库 的操作。d a t a t a b l e 实际上完成了对多种数据库的封装,这也是n e t 的特点。 在服务端程序中,设计一个类封装统一接口,可以包含数据库访问的各种功 能,如:获得数据库和表的信息,读记录,修改、增加和删除记录。这些接口以 基于s o a p 的w e b 方式公开。安装程序包括2 个部分:n e tf r a m ew o r k 和服 务端程序。w eb 服务的安装程序通过n e t 的“安装和部署项目”的“w e b 安装项目”开发,将上述服务端程序生成的a s p x ,d i s c o ,c o n f i g 文件添加到 w e b 安装项目中,生成m s i 文件,完成批w e bs e r v i c e 的安装程序。使用时, 需要先在服务器上安装数据库服务端或客户端软件,然后在服务器上安装n et f r a m e w o r k ,接着运行上述生成的m s i 文件,这样完成了w eb 服务的安装。 2 3 3 客户端的实现 上海师范大学硕士研究生学位论文基于组件开发的应用软件的容错策略研究 客户端的实现需要生成两个类库和一个安装程序。先用v i s u a l n et 按“c 撑 类库”建立“c # 项目”,利用“添加w e b 应用”包含服务端w e b 服务的接口, 直接生成甜接口类库d 1 1 ,然后在项目中设置注册c o m 组件,这样就生成了包 含w e b 访问接口的c o m 组件。例如: ( 1 ) 在n e t 中访问s q l 语句 在c 群中访问s q l 语句在n e t 中操作s q ls e r v e r 时,一般使用s q l c o m m a n d 对象。接口i d a t a a c c e s s 的g e t o r d e r d e t a l l s f o r o r d e f l d 方法实现如下: p u b l i cd a t a s e to e t o r d e r d e t a l l s f o r o r d e d d ( s t r i n go r a e r l o ) t r y : 获得s q l 数据库的连接 s q l c o n n e c t l o nc o r m 2n e ws q l c o n n e c t i o n ( ” d a t as o u r c e - - t e s t d b : u s e r i d = a p p l y m g r :p a s s w o r d - l i g e r ) ; 组织查询s q l 语句,如果是i n s e r t 、d e l e t e 、u p d a t e 之类的s q l 语句就 可以使用o r a c l e c o m m a n d 对象的e x e c u t e n o n q u e r y 执行方法,通过执行结果 返回的整数值的正负判断成功与否。 s q l d a t a s e tn e ws q l d a t a s e t r ( “。s e i e c t + f r o mo r d e r l t e mw h e r eo r d e r e d - 1 o r d e r e d + ,c o r m ) ; d a t a s e tp r o d u c t d sn e wd a t a s e t ( ) ;i 新建d a t a s e t 对象实例用来填充返回信息 r e t u r no r d e r d e t a l l s d s c o p y o ;返回d a t a s e t 对象的一个拷贝, c a t c h ( o r a c l c e x c e p t i , o ne r r ) t h r o ww e l l ”) ; f m a l l y c l o s e d a t a b a s e o b j e c t 0 ;! 关闭本函数中使用数据库的对象的函数, r e t u r nn u l l ; 客户端可以绑定到d a t a l i s t 或d a t a s e t 控件中,显示给用户。 由于篇幅有限,其它s q l 语句的执行原理与此同,在此不再一一赘述。 ( 2 ) 在c 撑中访问s q l 存储过程 存储过程通常用来查询有限的和统计大量的数据,减少网络流量,改善系统 的执行性能。提供数据的安全操作、简化系统维护工作量等。但有时也造成移植 方面的问题和过度使用情况。以s q

温馨提示

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

评论

0/150

提交评论