




已阅读5页,还剩48页未读, 继续免费阅读
(计算机软件与理论专业论文)基于ace的实时信息传输软件设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 网络编程已经成为一种典型的应用软件开发手段。这些应用软件中的对象可 以相互协作共享信息。操作系统提供了原始的进程间通信机制( 例如套接字) 和 并发机制作为网络编程的接口。但是,程序员在使用这些接口时往往会面临一些 错综复杂的技术问题。例如,原始的套接字接口在编程时容易出错、过于复杂、 不可移植、不统一等等。 除此之外,在开发实时信息传输软件的过程中,某些功能往往需要处理大量 的i 0 操作,因此,选用何种并发策略是软件开发过程中需要解决的重要问题。 本文提出并实现了一种实时信息传输软件的解决方案,充分利用a c e 框架, 提升系统自身的可靠性,可移植性和扩展性。该方案使用了a c e 框架中的前摄器 模式,提供了一种高效地并发处理i 0 操作的方法。应用程序可以显著地从并行的 i 0 操作中受益。在实际应用中,该方案用于某信息系统实时传输软件的设计,满 足了近似等时传输和多用户并发操作等主要性能指标要求。 关键词:实时传输并发异步i 0 前摄器 a b s t r a o t n e t 、o r kp r o g r a m m i n gh a se m e r g e da sat y p i c a lt e c h n i q u ef o rd e v e l o p i n g s o t t 、a r e a p p l i c a t i o n sw h o s ec o l l a b o r a t i n go b j e c t sc o u l d s h a r eu s e f u li n f o r m a t i o n o p e 眦i n g s y s t e m sh a y ed r o v i d e dt h en a t i v eo si n t e r - p r o c e s sc o m m u n i c a t i o n ( s u c h a ss o c k e t s ) a n dc o n c u r r e n c ym e c h a n i s m sa sn e t w o r kp r o g r a m m i n ga p i s h o w e v e r , p r o 旷锄m e r s a r el i k e l yt 0e n c o u n t e rc o m p l e xt e c h n i c a lp r o b l e m sw h e nu s i n gt h e s ea p i s t h e s e c o m p l e x i t i e sa p p e a ri nt h ef o r mo fs e v e r a ll i m i t a t i o n sw h i c h a r ee 盯o r - p r o n e ,o v e r l y c o m p l e x ,n o n p o r t a b l ea n d n o n 。u n i f o r m m o r e o v e ls o m em n c t i o n si nar e a l t i m et r a n s p o r ts o f t w a r em u s tp e r f o r ml a r g e n u m b e r so fi oo p e r a t i o n s c o n c u r r e n c ys t r a t e g i e sp l a ya v i t a lp a r ti nb u i l d i n gt h i sk i n d o fs o f t w a r e t h i sa r t i c l ei n t r o d u c e sa n di m p l e m e n t sar e a l t i m et r a n s p o r ts o f t w a 佗s o l u t i o n w h i c hm a l sf u l lu s eo fa c ef r a m e w o r kt oe n h a n c ei t sr e l i a b i l i t y ,p o r t a b i l i t y a n d e x t e n s i b i l i t y i np a r t i c u l a r , t h es o l u t i o ni s b a s e do np r o a c t o rp a t t e r nw h l c hi n v o l v e sm t h ea c e 仃锄e w o r ka n dp r o v i d e s a ne f f e c t i v ew a yt o h a n d l ei oo p e r a t l o n s c o n c u 丌e n t l y t h ea p p l i c a t i o nc a nb e n e f i ts i g n i f i c a n t l yf r o mp a r a l l e l i oo p e r a t i o n s i n p r a c t i c e ,t h es o l u t i o n s e r v e si nar e a l - t i m et r a n s p o r t s o f t w a r ea n d5 a t l s t l e sm a i n p a r a m e t e r so fc a p a b i l i t y k e y w o r d :r e a l t i m et r a n s p o r t c o n e u r r e n c ya s y n c h r o n o u si o p r o a c t o r 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学分和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书雨使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:亟左日期翌筮:呈:鱼 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再攥写的文章一律署名单位为西安电子科技大学。( 保密 的论文在解密后遵守此规定) 本学位论文属于保密,在 年解密后适用本授权书。 本人签名: 盔丕 ; 日期 ! 星:3 :一 导师签名:l 蝌日期栌牡7 p 。: 7 第一章绪论 1 1 1 研究背景 第一章绪论 1 1 引言 随着计算机网络应用的发展,人们对健壮的、高性能的计算机网络应用系统 的需求正在不断增加,并日趋紧迫。这些系统包括全球的个人通讯系统、互联网 及其管理平台、医疗图像系统、分布式数据库服务器、在线金融交易系统、航空 任务和飞行管制软件、监视控制与数据采集系统等等。这些计算机网络应用系统 通过提供连通和交互改进人们的协作方式,通过并行处理提高性能,通过数据分 布提高可靠性和有效性,通过模块化提高可伸缩性和可移植性,通过动态的配置 和重新配置提高可扩展性,通过资源共享和系统开放提高系统的性价比。所有这 些特点使得计算机网络应用系统成为当前研究的热点。 计算机网络的普及给软件开发人员带来了更大的挑战。 首先,硬件设备、软件环境的多样性( v a r i e t y ) 和异构性( h e t e r o g e n e i t y ) , 使得网络程序设计的复杂性( c o m p l e x i t y ) 明显提耐1 1 。网络中相互协作的对象是 分布( d i s t r i b u t e d ) 存在的,这些对象之间就要能够有效地通信和协调。但是,各 种计算与通信系统是异构的编程语言、编程环境、操作系统、网络协议各不 相同。这使得软件开发者进行编程时,不得不面对这些复杂性带来的挑战。 其次,将通信软件从一种平台移植到另一种平台是相当困难的。例! t l :i u n i x s o c k e t 和w i n d o w ss o c k e t 之间的移植便不大容易实现【2 】。尽管w i n d o w ss o c k e t 规范 强调,“为在u n i xs o c k e t 和其他环境下开发提供最大程度的相似,简化基于s o c k e t 的源代码移植工作”,但必须知道,由于u n i x 和w i n d o w s 的差别,为了将程序移植 至1 w i n d o w ss o c k e t 上,很多情况下可能不得不重写此程序。 第三,应用程序( a p p l i c a t i o n s ) 作为软件功能的最终实现者,不应当( 有时 甚至不可能) 去直接应对这所有的复杂性。此外,应用程序与网络通信程序的紧 密耦合,使网络通信程序的可重用能力大大降低,这无疑提高了网络通信程序开 发的难度,增加了开发成本。因此,研究并开发一套专门解决网络通信中各种复 杂问题的传输软件,对网络程序开发具有实际意义。 1 1 2 实时信息传输技术研究现状 实时信息传输软件系统作为种典型的计算机网络应用系统,越来越多地应 2 基于a c e 的实时信息传输软件设计与实现 用在科研、生产的各个领域。这些系统包括网络实时服务器,在线金融交易系统, 航空任务和飞行管制软件等等。 在实时信息传输软件中,应用系统对传递的数据具有较高的时效性要求,这 意味着实时信息传输软件必须能够最小化系统响应延迟,最大化系统i 0 吞吐量。 因此在设计和实现时,为了保证信息的时效性,必须选择一种高效的并发策略。 目前,工业界和学术界在实时信息传输技术研究上已有了很多成果,但研究 的侧重点不同。工业界关注的系统的实用性、可靠性、安全性以及自身的效率; 而学术界则注重于系统的扩展能力和对新应用环境的支持等。以下分别列举一些 常见的实时信息传输技术或相关产品: 1 s o c k e ta p i n4 】:s o c k e t 是一种最常见的进程间通信( i n t e r - p r o c e s s c o m m u n i c a t i o n ,i p c ) 机制,s o c k e ta p i 最初是在b s du n i x 5 j 上开发出来 的,用来作为t c p a p 协议簇提供应用程序级接口。通常把它作为网络通信 之用,它使用了与文件系统相同的接口,提供了协议无关的进程间通信功 能。s o c k e ta p i 定义了大约二十多个系统函数,这些函数实现了进程间通 信所需要的基本功能。但是,原始的s o c k e t a p i 有几个局限性:容易出错、 过于复杂、不可移植或不统一。因此,直接采用原始的s o c k e ta p i 进行网 络应用开发不是理想的选择。 2 r t p s 6 】:r t p s ( r e a l t i m ep u b l i s h s u b s c r i b e ) 所实现的是发布订阅通信 方式,这种针对实时通讯的协议所要完成的工作主要是:对于每次数据通 信控制用订阅者( s u b s c r i b e r ) 和发布者( p u b l i s h e r ) 进行发送接收;允许 应用程序衡量费时性和可靠性;控制和设置内存的使用。但是,对于实时 性要求较高的网络应用程序来说,这种基于发布订阅模型的通信方式需 要与实时操作系统环境配合,所以限制了其在多种操作系统平台上的应 用。 3 n d d s 7 驯:n d d s ( n e t w o r kd a t ad e l i v e r ys e r v i c e ) 是美国r e a l - t i m e i n n o v a t i o n s ( r t i ) 公司研发的软件包,它具有通用的a p i 接口,可以嵌入 v x w o r k s 等实时系统的程序中来实现数据实时通信,也可以运行在 w i n d o w s 和u n i x 平台在不同主机上中传递信息。n d d s 是建立在u d p 协议 之上的,不需要t c p 协议,因此避免y t c p 的实时性不好的问题。r t i 公 司开发的建模仿真软件开发环境c o n s t e l l a t i o n 集成了n d d s ,即在 c o n s t e l l a t i o n 中具有一些可以实现n d d s 功能的组件。但是,该软件提供的 图形部件设计、部件管理等工具主要面向系统仿真软件,无论是编程接口 还是配置管理都比较复杂。 4 a c e :a c e ( a d a p t i v ec o m m u n i c a t i o ne n v i r o n m e n t ) 是一个面向对象网 络编程中间件。它起源于d o u g l a sc s c h m i d t 博士在加利福尼亚州立大学 第一章绪论3 i r v i n e 分校进行的研究和开发活动。它封装了操作系统并发机制和进程间 通信机制,以获得面向对象网络编程( o b j e c t o r i e n t e dn e t w o r k p r o g r a m m i n g ) 能力。通过这些能力,通过原始操作系统a p i 例如, s o c k e t 、p o s i x 线程开发网络应用程序时涉及的很多繁琐、容易出错、 不可移植的情况就能得以避免,从而简化了网络应用程序的创建、组成、 配置和移植。与此同时,a c e 框架还实现了多种并发处理系统i o 操作的 模式,为一些高性能计算系统、实时系统提供了支持。此# l - a c e 是开放源 码( o p e ns o u r c e ) 软件,可以在h t t p :a c e e c e u c i e d u 下载并生成。这些灵 活性也需要代价:可能需要学习一些新的概念、方法、模式、工具和开发 技术。根据个人经验的不同,学习曲线可能是平坦的,也可能在一开始就 显得十分陡峭。但重要的是,a c e 提供的“面向对象”设计范式提供了一 套成熟的技术,使开发人员在掌握这些技术之后,能够应对网络编程中的 典型问题。考虑到a c e 带来的面向对象开发范式和高性能的编程组件,并 结合本文的需求,作者提出的实时信息传输软件是基于a c e 框架的一种设 计和实现。 1 2 项目简介 本文的论述工作来源于某大型电子信息系统的公共基础软件设施建设,为该 电子信息系统研制和开发提供服务。该系统包括几十个软件构件,作者参与开发 的是其中的实时信息传输软件。该软件为各个独立的电子信息系统之间提供实时 信息互通和共享,为应用程序屏蔽了网络传输控制、传输设备操作和传输质量要 求的复杂性,是该电子信息系统软件基础设施的重要组成部分。 1 3 论文的研究内容 本文内容来源于作者的实际项目工作。鉴于a c e 自适应通信环境在网络应用 方面可重用的优秀组件和框架,以及它在电信、医学成像、航空计算和在线事务 处理等领域的成功应用,作者参与设计并实现了一个基于a c e 的实时信息传输软 件系统。该系统由管理及调用接口集合、实时信息传输服务以及网络驱动模块组 成,主要为上层应用系统提供了实时数据信息发送与接收功能。期间主要完成了 如下几个方面的工作:建立实时信息传输软件系统的体系结构;设计并实现系统 初始化和关闭的相关组件;设计并实现系统的实时数据发送的相关组件;设计并 实现系统实时数据接收的相关组件。 4 基于a c e 的实时信息传输软件设计与实现 1 4 论文的组织结构 全文共分为七章: 第一章为绪论。介绍了实时传输技术的研究背景与意义,对实时传输技术的 相关概念和研究现状进行了简要论述,接着介绍了具体的项目背景和本文主要的 研究内容,并给出了本文的结构。 第二章介绍相关理论与技术。首先简要的叙述了自适应通信环境中间件的起 源和概况,描述了它的体系结构,介绍了使用这个中间件好处。其次介绍了设计 模式的概念和应用。 第三章介绍实时信息传输软件。首先简单介绍了实时信息传输软件,然后分 析该软件的功能和性能需求,最后论述了该系统中需要解决的关键问题。 第四章是系统整体设计。首先给出了软件的体系结构,然后分析了系统设计 过程中需要解决的一些重要问题,并且给出了实现的具体思路。 第五章是详细设计和实现。根据前面两章的分析和设计思路,给出了详细设 计,实现使用了自适应通信环境中间件的前摄器框架。 第六章是实时信息传输系统部署实例。首先描述了本文所提出的解决方案的 一个实例,然后给出了测试结果。 第七章是结束语。对本文所做的工作进行了概括和总结。 第- 章相芙理论与技术 2ll a c e 概述 第二章相关理论与技术 21 a c e 中间件 a c e 自适应通信环境【q ”起豫于d o u g l a scs c h m i d t 博士在加利福尼亚州立大 学l r v i n e 分校进行的研究和开发活动。d o u g i 的工作重心是各种设计模式实现咀及 面向刑象技术的实验性分析,目的足推动高性能、实时分布式对象开发框架的发 展。 a c e 是可自由使用、开放源码的面向对象框架( o b j e c t - o r i e n t e df r a m e w o r k ) , 它实现了许多用于并发通信软件的王要模式。a c e 提供了一组丰富的可重用c 丁_ 包装外观( w r a p p e r f a c a d e ) 和框架组件,可跨多种平台完成通用的通信软仁任务, 其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程问遥 信、共享内存管理、消息路由、分布式服务动态配置、并发执行和瓦步等等。 212a c e 体系结构 a c e 是主机基础设施中间件( h o s t i n f r a s t r u c t u r e m i d d l e w a r e ) ,它判装了操作 系统通信和并发机制,建立了可移植、可复用的网络编程组件。使用这些组件能 保证阿络应用开发者避免操作系统平台的异构性带来的不利影响,减少一些繁琐、 易错和不可移植的工作。 “i 篇嚣搿篇 一0b p rt 5 - “一j , h 一。u :h fh t 。” = = 刁 = 了 一l ;i :_ _ 一 螽萝誊籀区- 二0 乏王矗 g e n e r 。0 0 h 0s 、c e s 图2 】a c e 的层次化体系结构 6 基于a c e 的实时信息传输软件设计与实现 为分离关系,降低复杂度,允许功能模块的划分,a c e 被设计为层次化体系 结构,图2 1 显示了a c e 中的关键组件以及它们的层次关系。 a c e 软件包的基础是a c e 操作系统适配( o sa d a p t a t i o n ) 层和c + + 包装外观 层的结合,它封装了操作系统并发网络编程机制。a c e 的较高层建立在这一基础 之上,提供了可复用的框架、网络服务组件、基于标准的中间件等。这些中间层 联合起来,简化了网络应用程序的创建、组成、配置和移植,但不会导致显著的 性能开销。 2 1 2 1a c e 操作系统适配层 a c e 操作系统适配层由一个名为a c eo s 的类构成,此类包含5 0 0 多个c + + 静态方法( s t a t i cm e t h o d ) 。这些方法封装了原始的、基于c 的操作系统a p i ,隐 藏了与平台相关的细节,展示了统一的操作系统机制接口,为更高级的a c e 层使 用。a c e 操作系统适配层使得a c e 的可移植性和可维护性变得单纯;只有a c e 开发者而不是应用程序开发者需要了解a c e 包装外观底层的、与平台相 关的神秘知识。 该层直接驻留在用c 写成的本地操作系统a p i 之上。它提供轻型的类p o s i x 操作系统适配层,将a c e 中的其他层及组件和以下与操作系统a p i 相关的平台专 有特性屏蔽开来: 1 并发和同步:a c e 的适配层封装了用于多线程、多进程和同步的操作系 统a p i 。 2 进程间通信和共享内存:a c e 的适配层封装了用于本地和远程i p c 、以及 共享内存的操作系统a p i 。 3 事件多路分离机制:a c e 的适配层封装了用于对基于i o 、定时器、信号 和同步的时间进行同步和异步多路分离的操作系统a p i 。 4 显示动态链接:a c e 的适配层封装了用于显式动态链接的操作系统a p i 。 显式动态链接允许在安装时或运行时对应用服务进行配置。 5 文件系统机制:a c e 的适配层封装了用于操作文件和目录的操作系统的 文件系统a p i 。 a c e 操作系统适配层的可移植性使得a c e 可运行在许多操作系统上【12 1 。a c e 已在广泛的操作系统平台上被移植和测试,包括w i n 3 2 、m a co sx 、大多数版本 的u n i x 、实时操作系统、m v so p e ne d i t i o n 和c r a yu n i c o s 。有了a c eo s 类提 供的抽象,在上述这些操作系统平台上,都只用使用一个源代码树( s o u r c et r e e ) 。 在这些平台上,a c e 可用于几乎所有主流c + + 编译器。这样的设计有效地增强了 a c e 的可移植性和可维护性。此外,还有j a v a 版本的a c e 可用【l3 1 。 第二章相关理论与技术 2 1 2 2a c ec + + 包装外观层 a c ec + + 包装外观层由一个或多个类组成,这些类将函数和数据封装在类型 安全( t y p e s a f e ) 的面向对象接1 2 1 中。a c ec + + 包装外观层位于操作系统适配层 之上,并提供了大致相同的功能,如图2 1 所示。为降低或消除由于“可用性”和 “安全性”的提高所导致的性能开销,a c e 包装外观的设计必须十分谨慎。文献 【9 】就a c e 设计的基本原则作了论述。 程序员可以直接在a c e 操作系统适配层之上编写高度可移植的c + + 应用。但 是,大多数a c e 开发者使用的是图2 1 中所示的c + + 包装外观层。通过提供类型 安全的c + + 接口( 这些接口封装并增强本地的操作系统并发、通信、内存管理、 事件多路分离、动态链接和文件系统a p i ) ,a c e 包装外观简化了应用的开发。应 用程序可以通过有选择的集成、聚合和实例化下面的组件来组合和使用这些包装: 1 并发和同步组件:a c e 对像互斥体和信号量这样的本地o s 多线程和多进 程机制进行抽象,以创建高级的面向对象并发抽象,如主动对象( a c t i v e o b j e c t ) 等。 2 i p c 和文件系统组件:a c ec + + 包装对本地和或远地i p c 机制进行封装, 比如s o c k e t 、t l i 、u n i xf i f o 和s t r e a m 管道,以及w i n 3 2 命名管道。 此外,a c ec + + 包装还封装了o s 文件系统a p i 。 3 内存管理组件:a c e 内存管理组件为管理进程间共享内存和进程内堆内 存的动态分配和释放提供了灵活和可扩展的抽象。 a c ec + + 包装提供了许多与a c e 操作系统适配层一样的特性。但是,这些 特性是采用c + + 类和对象、而不是独立的c 函数来构造的。这样的面向对象包装 有助于减少正确地学习和使用a c e 所需的努力。 例如,c + + 的使用提高了应用的健壮性,因为c + + 包装是强类型的。所以,编 译器可在编译时,而不是运行时检测类型系统违例。相反,不到运行时,不可能 检测像s o c k e t 或文件系统i o 这样的c 级别操作系统a p i 的类型系统违例。 a c e 采用了许多技术来降低或消除额外的性能开销。例如,a c e 使用c + + 内 联来消除额外的方法调用开销;这样的开销可能由操作系统适配层和c + + 包装外 观所提供的额外的类型安全和抽象层次带来。此外,对于关键性能的包装,比如 s o c k e t 和文件i o 的s e n d r e c v 方法,a c e 会避免使用虚函数。 2 1 2 3a c e 框架层 a c e 中剩下的部分是面向对象框架,它们是多组集成在一起、相互合作的类, 用来为一组相关应用提供可复用的软件架构。这些框架之间互相补充、加强了其 8 基于a c e 的实时信息传输软件设计与实现 他复用技术,如类库、组件、模式。 a c e 框架集成并增强了较低层次的c + + 包装外观。该框架支持将并发分布式 服务动态配置进应用。a c e 的框架部分包含以下组件: 1 事件多路分离组件:a c e 反应器( r e a c t o r ) 和前摄器( p r o a c t o r ) 是可扩 展的面向对象多路分离器,它们分派应用专有的处理器,以响应多种类型 的基于i o 、定时器、信号和同步的事件。 2 服务初始化组件:a c e 接受器( a c c e p t o r ) 和连接器( c o n n e c t o r ) 组件分 别使主动和被动的初始化任务与初始化一旦完成后通信服务所执行的应 用专有的任务去耦合。 3 服务配置组件:a c e 服务配置器( s e r v i c ec o n f i g u r a t o r ) 支持应用的配置, 这些应用的服务可在安装时和或运行时被动态装配。 4 分层的流组件:a c e 流( s t r e a m ) 组件简化了像用户级协议栈这样的由 分层服务组成的通信软件应用的开发。 5 o r b 适配器组件:通过o r b 适配器,a c e 可以与单线程和多线程c o r b a 实现进行无缝集成。 a c e 框架组件简化了通信软件的开发,它们无需修改、重编译、重链接,或 频繁地重启运行中的应用,就可被更新和扩展。在a c e 中,这样的灵活性是通过 结合以下要素来获得的: 1 c + + 语言特性:比如模板、继承和动态绑定。 2 设计模式:比如抽象工厂、策略和服务配置器。 3 操作系统机制:比如显式动态链接和多线程。 2 1 2 4a c e 网络服务组件层 除了前面讲述的主机基础设施中间件包装外观和框架之外,a c e 还提供了一 个网络服务库,库中的服务都被包装成组件。所谓组件( c o m p o n e n t ) ,指的是软 件系统中一个“被封装的部分”,用来实现特定的一个或一组服务。虽然a c e 本 身并不包含这些组件,但它们被捆绑在a c e 软件的发行包中,用来提供以下功能: 1 演示a c e 功能的常见使用方式:这些组件用来演示如何通过主要的a c e 框架和类来开发灵活、健壮的网络服务。 2 提取可复用的网络应用:这些组件可以为常见的网络应用服务( 如名称管 理、事件路由处理、日志记录、时间同步和网络锁定等) 提供可复用 ( r e u s a b l e ) 的实现。 第二章相关理论与技术 9 2 1 2 5 高级分布式计算中间件组件 即使使用像a c e 这样的通信框架,开发健壮、可扩展和高效的通信应用仍具 有挑战性。特别是,开发者必须掌握许多复杂的操作系统和通信的概念,比如: 1 网络寻址和服务标识。 2 表示转换,比如加密、压缩和在异种终端系统间的字节序转换。 3 进程和线程的创建和同步。 4 本地和远地进程间通信机制的系统调用和库例程。 通过采用像c o r b a 、d c o m 或j a v ar m i 这样的高级分布式计算中间件,有 可能降低开发通信应用的复杂性。高级分布式计算中间件驻留在客户端和服务器 之间,可使分布式应用开发的许多麻烦而易错的方面自动完成,包括: 1 认证、授权和数据安全。 2 服务定位和绑定。 3 服务注册和启用。 4 事件多路分离和分派。 5 在像t c p 这样的面向字节流的通信协议之上实现消息帧。 6 涉及网络字节序和参数整编( m a r s h a l i n g ) 的表示转换问题。 为给通信软件的开发者提供这些特性,在a c e 中绑定了下面的高级中间件应 用: 1 t a o :t a o ( t h ea c eo r b ) 是使用a c e 提供的框架组件和模式构建的 c o r b a 实时实现,包含有网络接口、操作系统、通信协议和c o r b a 中 间件组件及特性。t a o 基于标准的o m gc o r b a 参考模型,并进行了增 强的设计,以克服传统的用于高性能和实时应用的o r b 的缺点。t a o 像 a c e 一样,也是可自由使用的开放源码软件。 2 j a w s :j a w s 是高性能、自适配的w e b 服务器,使用a c e 提供的框架组 件和模式构建。j a w s 被构造成“框架的框架”。j a w s 的总体框架含有以 下组件和框架:事件多路分派器、并发策略、i o 策略、协议管道、协议 处理器和缓存虚拟文件系统。每个框架都被构造成一组协作对象,通过组 合和扩展a c e 中的组件来实现。j a w s 也是可自由使用的开放源码软件。 2 1 3 使用a c e 的好处 a c e 的目标用户是高性能的实时通信服务和应用的开发者,它简化了使用进 程间通信、时间多路分离、显式动态链接和并发的面向对象网络应用和服务的开 发。此外,通过服务在运行时与应用的动态链接,a c e 是系统的配置和重配置得 10基于a c e 的实时信息传输软件设计与实现 以自动化。 下面列举了使用a c e 的好处: 1 增强可移植性:在a c e 组件的帮助下,很容易在一种操作系统平台上编 写并发网络应用程序,然后迅速地将它们移植到各种其他的操作系统平台 上,而且,因为a c e 是开放源码的自由软件,开发人员无需担心被锁定 在特定的操作系统平台上。 2 更好的软件质量:a c e 的设计使用了许多可提高软件质量的关键模式, 这些质量因素包括通信软件灵活性、可扩展性、重用性和模块性。 3 更高的效率和可预测性:a c e 经仔细设计,支持广泛的应用服务质量 ( q o s ) 需求,包括延迟敏感应用的低响应等待时间、高带宽应用的高性 能,以及实时应用的可预测性。 4 更容易转换到标准的高级中间件:t a o 使用了a c e 提供的可重用组件和 模式,它是c o r b a 的开放源码、遵循标准的实现,并且为高性能和实时 系统作了优化。为此,a c e 和t a o 被设计为性能良好地协同工作,以提 供全面的中间件解决方案。 2 2 1 设计模式简介 2 2 设计模式 按照c h r i s t o p h e r a l e x a n d e r 的定义,模式是“在某一场景下的问题解决方案”。 在软件工程领域,除了场景、问题和解决方案之外,一个模式还必须有三个要点: 1 可重复性。解决方案应该对应于外部的场景。 2 可传授性。一个解决方案应该可以移植到问题的不同情况中( 绝大多数的 可传授性都建立在“约束”和“效果”的基础上。 3 用来表示这个模式的名称。 在软件工程领域,我们常说的模式是指设计模式一书中介绍的“设计模 式,或者更加准确的说,是指“面向对象的设计模式”。设计模式是在面向对象 方法基础上发展起来的,用于设计阶段的,针对特定场景下的特定问题的可重复、 可表达的解决方案。 2 2 2 设计模式的原则和策略 设计模式可以增加学习者对于基本的面向对象设计原则的理解。g a m m a 、 h e l m 、j o h n s o n 和v l i s s i d e s ( g a n go f f o u r ,g o f ) 在设计模式一书中提出了一 第二章相关理论与技术 些面向对象设计的基本原则和策略【l6 | 。设计模式能够妥善地处理变化,具备良好 的扩展性,是因为它的设计兼顾了这些面向对象设计的原则,这些原则是: 1 识别应用中变化的部分和不变的部分,并把这两部分分开。当新的需求出 现时,应用需要对这些需求做出响应,因此不得不对现有的应用进行扩展。 依据此原则,开发人员可以将变化的部分封装起来,这样在需求变化出现 时,仅仅需要改变或扩展这些发生变化的部分。与此同时,其他的部分可 以保持不变。 2 针对接口编程,而不是针对实现编程。开发人员可以恰当地使用继承,所 有从抽象类导出的类将共享抽象类的接口。此时,所有的子类都能够响应 抽象类接口中的请求,从而子类都是抽象类的子类型。这样做的好处是: 客户无需知道他们使用对象的特定类型,只需对象有客户期望的接口。客 户无需知道他们使用的对象是用什么类来实现的,他们只需知道定义接口 的抽象类。这将极大地减少子系统之间的相互依赖关系。 3 优先使用组合,而不是继承。理想情况下,开发人员不应该为获得复用而 去创建新的构件,而是应该尽可能的使用对象组合技术,通过组装已有的 构件就能获得所需的功能。除此之外,优先使用组合创建应用系统可以带 来更大的灵活性。不仅可以将一系列算法封装成一组类,而且可以使应用 系统在运行时动态地改变他们的行为。可以看到,在很多设计模式中都使 用了组合原则。 4 类对扩展是开放的,对修改是关闭的。我们在设计时,应该将软件设计成 这样:我们可以在不修改代码的前提下对我们的软件进行扩展。例如在桥 接( b r i d g e ) 模式中,我们可以在不修改现有的类的情况下,加入新的实 现部分,以此对软件进行扩展。 5 依赖于抽象类,而不是依赖于具体类。这设计原则与针对接口编程原则十 分类似。但是,该原则更加强调抽象的概念。根据此原则,高级别( h i g h l e v e l ) 的组件不能依赖于低级别( l o wl e v e l ) 组件,它们应该依赖于抽 象类。例如,在工厂( f a c t o r y ) 模式中,具体的生产者( c o n c r e t ec r e a t o r ) 与具体的产品( c o n c r e t ep r o d u c t ) 之间属于两个不同级别( l e v e l ) ,它们 之间不应该存在依赖关系。良好的做法是,生产者与产品应该分别依赖于 抽象的生产者类与产品类。 2 2 3g o f 模式 在2 0 世纪9 0 年代已经开始有开发人员从事设计模式的工作。g o f 合著的设 计模式:可复用面向对象软件的基础 1 6 l 总结了这阶段的研究成果。设计模式 1 2基于a c e 的实时信息传输软件设计与实现 一书中总结了2 3 个设计模式,根据这些设计模式的目的,将其分为创建型 ( c r e a t i o n a l ) 、结构型( s t r u c t u r a l ) 、行为型( b e h a v i o r a l ) 三种类型。创建型模式 与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎 样交互和怎样分配职责进行描述。下面摘录几种常用的设计模式,给出它们名字 和意图。 1 抽象工厂( a b s t r a c tf a c t o r y ) 。提供一个创建一系列相关或相互依赖对象 的接口,而无需指定它们具体的类。 2 适配器( a d a p t e r ) 。将一个类的接口转换成客户希望的另外一个接i z l 。适 配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工 作。 3 桥接( b r i d g e ) 。将抽象部分与它的实现部分分离,使他们都可以独立地 变化。 4 命令( c o m m a n d ) 。将一个请求封装成一个对象,从而使你可用不同的请 求对客户进行参数化。对请求排队或记录请求日志,以及支持可取消的操 作。 5 组合( c o m p o s i t e ) 。将对象组合成树形结构以表示“部分整体”的层次结 构。组合使得客户对单个对象和复合对象的使用具有一致性。 6 装饰( d e c o r a t o r ) 。动态地给一个对象添加一些额外的职责。就功能扩展 而言,装饰模式比生成子类方式更为灵活。 7 工厂方法( f a c t o r ym e t h o d ) 。定义一个用于创建对象的接口,让子类决定 将哪一个类实例化。工厂方法使一个类的实例化延迟到其子类。 8 享元( f l y w e i g h t ) 。运用共享技术有效地支持大量细粒度的对象。 9 迭代器( i t e r a t o r ) 。提供一种方法顺序访问一个聚合对象中各个元素,而 又不需暴露该对象的内部表示。 1 0 观察者( o b s e r v e r ) 。定义对象间的一种一对多的依赖关系,以便当一个对 象的状态发生改变时所有依赖于它的对象都得到通知并自动刷新。 1 1 单件( s i n g l e t o n ) 。保证一个类仅有一个实例,并提供一个访问它的全局 访问点。 1 2 状态( s t a t e ) 。允许一个对象在其内部状态改变时改变它的行为。对象看 起来似乎修改了它所属的类。 13 策略( s t r a t e g y ) 。定义一系列的算法,把它们一个个封装起来,并且使它们 可相互替换。本模式使得算法的变化可独立于使用它的客户。 1 4 模板方法( t e m p l a t em e t h o d ) 。定义一个操作中的算法的骨架,而将一些 步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重 定义该算法的某些特定步骤。 第二章相关理论与技术 1 5 访问者( v i s i t o r ) 。表示一个作用于某对象结构中的各元素的操作。它使 你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 2 2 4g r a s p 模式 g r a s p t l 。7 】模式是一种职责分配模式,它是g e n e r a lr e s p o n s i b i l i t ya s s i g n m e n t s o f t w a r ep a t t e r n s 的缩写,它以模式的形式描述了对象设计和职责分配的基本原则, 理解这些职责分配原则可以帮助使面向对象软件设计更合理。下面摘录几种常用 的g r a s p 模式,给出它们名字和意图。 1 信息专家( i n f o r m a t i o ne x p e r t ) 。将职责分配给拥有履行一个职责所必须 的信息的类,即信息专家。 2 创建者( c r e a t o r ) 。创建者模式指导怎样分配与创建对象相关的职责。创 建者模式的基本目的是找到一个在任何情况下都与被创建对象相关联的 创建者,选择这样的类作为创建者。 3 控制器( c o n t r o l l e r ) 。控制器负责接收或者处理系统事件的非用户接口对 象。该模式意在把接收或者处理系统事件消息的职责分配给一个类。 4 低耦合( l o wc o u p l e ) 。耦合是测量一个元素链接、了解或者依赖其他元 素强弱的尺度。分配一个职责,使得保持低耦合度。 5 高内聚( h i g hc o h e s i o n ) 。内聚是一个元素的职责被关联和被关注的程度。 如果一个元素具有很多紧密相关的职责,而且只完成有限的功能,则这个 元素就具有高内聚。分配一个职责,使得保持高内聚。 6 多态( p o l y m o r p h i s m ) 。相关选择或行为随着类型变化而变化时,用多态 操作为行为变化的类型分配职责。 7 纯虚构( p u r ef a b r i c a t i o n ) 。为了支持高内聚、低耦合和重用,在设计时可 能将一组高内聚的职责分配给一个虚构的或为了方便处理而产生的类,他 们并不代表问题域中的概念。 8 中介( i n d i r e c t i o n ) 。将职责分配给中间对象以协调其他组件或服务之间的 工作,使得它们不直接耦合。中间对象在其他组件之间建立了一个中介。 9 受保护变化( p r o t e c t e dv a r i a t i o n s ) 。识别可以预知的变化或不稳定点,通 过分配职责来创建围绕它们的稳定接口。 2 2 5 使用模式的好处 设计模式可以帮助开发者学习,在一个开发团队中,也有助于团队成员之间 的交流。例如,设计模式在开发人员之间建立了通用的术语,在项目分析和和设 1 4 基于a c e 的实时信息传输软件设计与实现 计阶段提供了一个通用的参考点。 设计模式可以复用解决方案。通过复用已经建立的设计,开发人员为自己的 问题找到了更高的起点并避免了弯路。同样的,开发人员也可以受益于他人的经 验,不必再为普通、重复的问题重新设计解决方案。 设计模式能够帮助开发人员提高思考的层次。了解了常用的几种设计模式, 以及这些设计模式应用的场景、问题、解决方案之后,开发人员可以模式作为思 考的基本单位,这样做的好处是使设计更具灵活性和扩展性。 设计模式还让软件更具可修改性,因为它们都是经受时间考验的解决方案。 所以,他们发展成为的结构,可以比首先在脑海中浮现的解决方案更容易处理变 化。 正如本节首先提出的模式的定义,“模式是在某一场景下的问题的解决方案”, 他们不仅仅是解决某种问题的一种模板,还是对设计动机的描述方法。总之,设 计模式可以帮助开发人员: 1 复用现有的、高质量的、针对常见的重复出现问题的解决方案。 2 建立通用的术语,以改善团队内部的沟通。 3 将思考转移到更高的视角。 4 判断是否拥有正确的设计,而不是一个可以运行的设计。 5 改善个人学习和团队学习。 6 促进对改良设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年能源与资源行业能源行业数字化转型成功案例研究
- 2025年文化遗产数字化保护与乡村振兴战略结合的技术应用研究报告
- 超市的安全培训课件
- 电机知识培训课件下载
- 道路运输条例培训课件
- 认知增强界面交互-洞察及研究
- 研学导师培训课件
- Cinobufagine-d3-生命科学试剂-MCE
- 电气回路培训课件
- 消防维保培训课件
- 矿用电机车永磁电机驱动及能量回馈系统:技术革新与应用实践
- 医院后勤管理的安全风险防控措施
- 2025-2030木薯市场发展现状调查及供需格局分析预测研究报告
- 雾化吸入技术课件
- 医疗废物管理知识培训课件
- 商业地产策划案例(购物中心)
- 新教材高中英语必修一全册单词默写
- 2025届安徽省高三一轮复习模拟卷化学试题(解析版)
- T-ZJBS 001-2024 城市公共标识系统设计规范
- 2025年租住合同模板电子版
- 原料溯源管理制度内容
评论
0/150
提交评论