已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)通信软件设计模式的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信软什设计模式的研究与应用摘要 摘要 设计模式是解决某个特定的面向对象软件问题的特定方法。设计模式使人 们可以更加简单方便地复用成功的设计和体系结构。软件设计和开发中,正确、 合理地应用设计模式,就是利用过去别人的成功设计和经验。 通信软件是一组构造现代分布式系统及应用的服务和协议。开发通信软件 的困难源于与通信软件系统相关联的固有的和非固有的复杂性。通信软件的开 发者必须致力于应对在开发中反复出现的,与效率、可复用性和健壮性等相关 的设计。 设计模式有助于减少对通信软件的核心概念和抽象知识的昂贵的重新发现 和发明。设计模式提供了一种封装设计知识的方法,这些设计知识为通信软件 开发问题提供解决方案。本文详细阐述了通信软件的特点和复杂性,讨论了设 计模式在通信软件中的应用,以作者参与的多个不同领域,不同环境下的通信 软件实际项目为背景,提出了反应器一处理器模式和观察者模式两个通信软件 的设计模式,给出了这些模式在无线会展系统和b s 即时消息通知系统两个项 目中的具体应用实例和效果,最后还展望了通信软件设计模式的研究前景和进 一步努力的方向。把设计模式应用到通信软件的设计与开发中来,可以改进通 信软件的设计和开发过程。设计模式在通信软件的开发中有极其广泛的应用, 有着深远的现实意义和实用价值。 关键词:设计模式、通信软件、软件复用、反应器一处理器模式、观察者模式 通信软件设计横式的研究与琏用 a b s t m c t a b s t r a c t d e s i g np a t t e r n sr e p r e s e n ts o l u t i o n st og e n e r a lp r o b l e m st h a ta r i s ew h e nd e v e l o p i n g s o f t w a r ew i t h i nap a r t i c u l a rc o n t e x t d e s i g np a t t e mm a k e si tm o l ec o n v e n i e n t l yt o r e u s es u c c e s s f u l d e s i g n a n da r c h i t e c t u r e t oa p p l yd e s i g np a n e mp r o p e r l yi n s o r w a r e d e v e l o p m e n ti st or e u s e o t h e r ss u c c e s s f u ld e s i g na n de x p e r i e n c e c o m m u n i c a t i o ns o r w a r ei st h es e to fs e r v i c e sa n dp r o t o c o l st h a tm a k e sp o s s i b l e m o d e md i s t r i b u t e d s y s t e m s a n d a p p l i c a t i o n s t h ed i f f i c u l t y o fd e v e l o p i n g c o m m u n i c a t i o ns o f t w a r el i e s i nb o t hi n h e r e n ta n da c c i d e n t a lc o m p l e x i t i e s o f c o m m u n i c a t i o ns o f t w a r e c o m m u n i c a t i o ns o f t w a r ed e v e l o p e r sm u s tt a k eg r e a te f f o r t t oh a n d l et h ef r e q u e n t l y - a p p e a rd e s i g np r o b l e m sr e l a t et oe f f i c i e n c y , r e u s a b i l i t ya n d r o b u s t n e s s d e s i g np a t t e r n sc a na l l e v i a t ec o s t l yr e d i s c o v e r ya n dr e i n v e n t i o no f c o r ed i s t r i b u t e d s o f t w a r ec o n e t sa n da b s t r a c t i o n s p a i t e m sp r o v i d eaw a yt oe n c a p s u l a t ed e s i g n k n o w l e d g e t h a to f f e r ss o l u t i o n st os t a n d a r dd i s t r i b u t e d s o f t w a r e d e v e l o p m e n t p r o b l e m s t h i sp a d c rp r e s e n t s t h ec h a r a c t e r i s t i c sa n d c o m p l e x i t i e s o f c o m m u n i c a t i o ns o f t w a r e ;d i = s c u s st h ea p p l i c a t i o no f d e s i g np a i t e r ni nc o m m u n i c a t i o n s o f t w a r e b a s e do nt h ea u t h o r sp r o j e c tp r a c t i c e so fc o m m u n i c a t i o ns o f t w a r e i n d i f f e r e n tf i e l d sa n dd i f i e r e n te n v i r o n m e n t 饿i sp a p e rp r e s e n t st w oc o m m u n i c a t i o n s o f t w a r ed e s i g np a t t e r n s :“r e a c t o r - h a n d l e r ”a n d “o b s c r v e r a n dd e m o n s t r a t et h e i r a p p l i c a t i o na n de l t e c ti n t w op r a c t i c a l p r o j c o t s :“w i r e l e s se x h i b i t i o ns y s t e m ”a n d “8 ,sm o d e li n s t a n tm e s s a g en o t i f i c a t i o ns y s t e m ” 】nt h ee n d ,t h i sp a p e rm a k e sa p r o s d e c to nt h er e s e a r c h o fd e s i g n p a t t e r n s i nc o m m u n i c a t i o ns o f t w a r ea n dt h e d i r e c t i o n sf o rf u r t h e ri m p r o v e m e n t d e s i g na n dd e v e l o p m e n to fc o m m u n i c a t i o n s o f t w a r ec a nb ei m p r o v e db ya p p l y i n gd e s i g np a t t e mt oc o m m u n i c a t i o ns o f t w a r e d e v e l o p m e n t d e s i g np a t t e r n h a saw i d er a n g eo fa p p l i c a t i o ni nc o m m u n i c a t i o n s o f t w a r ed e v e l o p m e n t ,a n dh a sp r o f o u n dp r a c t i c a ls i g n i f i c a n c ea n da p p l y i n gv a l u e k e y w o r d :d e s i g np a t t e r n , c o m m u n i c a t i o ns o f t w a r e ,s o f t w a r er e u s e ,r e a c t o r - h a n d l e r p a t t e r n ,o b s e r v e rp a t t e m h 通信软件设计模式的研究与庄甩 第l 苹绪论 第1 章绪论 本章概要性地论述了通信软件设计模式的研究背景和发展现状,简要综述 了本论文的研究内容,方法与意义,同时介绍了本文的组织结构。 1 1 研究背景与发展现状 可扩展性和最大限度复用的缺乏是传统软件开发技术的主要缺点。可扩展 性是确保服务和特性的及时修改和增强的基本要求。复用是有效利用专家开发 者的领域知识、以避免重新开发和重新验证的基本要求。 随着软件技术的不断进步,各种面向对象的设计技术有助于减少对软件的 核心概念和抽象组件的重新开发,其中框架技术与设计模式备受重视。设计模 式提供了一种封装设计知识的方法,这些设计知识为标准的面向对象软件开发 问题提供了解决方案。系统框架通过集成成组的抽象类,并定义这些类的协作 标准途径,为应用提供了可复用的软件组件。框架实例化与设计模式族,可以 帮助开发者避免对通用软件组件的昂贵的重新发明。 所有结构良好的面向对象软件体系结构中都包含了许多模式,当判断一个 面向对象系统的质量时,需要判断系统是否强调了对象之间的公共协作关系。 设计模式是人们可以更加简单方便地复用成功的设计和体系结构,将已证实的 技术表述成设计模式也会使新系统开发人员更加容易理解其设计思路。设计模 式帮助设计者做出有利于系统复用的选择,避免设计损害了系统复用性。简而 言之,设计模式可以帮助设计者更好更快地完成系统设计嗍。 通信软件是一组构造现代分布式系统及应用的服务和协议,大多处于嵌入 式领域,对系统资源、实时性和健壮性等要求很高,因此,构建、维护和增强 高质量的通信软件是非常困难的【6 ”。开发通信软件的困难源于与通信软件系统 相关联的固有的和非固有的复杂性。固有的复杂性源于由通信软件本身的特点 所决定的基本困难,非固有的复杂性源于用以开发通信软件的工具和技术的局 限。复杂性的另一来源起因于算法分解的普遍使用,它致使软件系统不可扩展 通信软件设计模式的研究与瘴瑚第l 章绪论 和不可复用。另外,对于复杂的通信软件,可扩展性和缺乏最大限度的复用也 特别成问题。由于上述通信软件的复杂性和开发崮难,所以,通信软件的开发 者必须对许多复杂问题有深入了解。在由有经验的软件开发者所创建的成功的 通信应用中必定包藏着这些问题的有效解决方案。但是,传统上,这些模式被 锁在专家级开发者的头脑里、或是深埋在复杂的系统源码中1 1 8 l 。因此,必须有 一种解决方案能够把这些经验和模式从专家缀的开发者头脑中解放出来,这个 解决方案就是设计模式。 在通信软件的设计模式这一领域,国外近几年来也有学者开始进行研究, 并有了一些实际的应用项目,范德比尔特大学d r d o u g l a s c s c h m i d t 的倡导的 a c e 是其中比较著名的一个。 a c e 自适配通信环境是可以自由使用、开放源码的面随对象框架,在其中 实现了许多用于通信软件的核心模式。a c e 包含的多神组件可以帮助通信软件 的开发获得更好的灵活性、效率、可靠性和可移植性。a c e 提供了一组丰富的 可复用包装外观和框架组件,可跨越多种平台完成通用的通信软件任务。a c e 的目标用户是商性能和实时通信服务和应用的开发者。它简化了使用进程间通 信、事件多路分离、显式动态链接和并发的面向对象网络应用和服务的开发m 1 。 a c e 正在进行持续的改进。r i v e r a e e 公司采用开放源码商业模式对a c e 进 符商业支持。此外,a c e 开发组的许多成员目前正在进行t h e a c e o r b ( t a o ) 的开发工作。 2 0 0 1 年,l i n d ar i s i n g 编辑出版了专门面向这一领域的著作d e s i g np a t t e r n s i nc o m m u n i c a t i o n ss o t t w a r e ,里面收集了近2 0 篇在避信软件中应用设计模式 的理论和实践的文章。 t 2 研究内容,方法和意义 本文详细阐述了通信软件的特点和复杂性。讨论了设计模式在通信软件中 的应用,以作者参与的多个不同领域,不同环境下的通信软件实际项强为背景, 提出了反应器一处理器模式和观察者模式两个通信软件的设计模式,给出了这 些模式在无线会展系统和b s 即时通知系统两个项目中的具体应用实例和效 通信软件设计模式的研究与应用第1 章绪论 果,最后还展望了通信软件设计模式的研究前景和进一步努力的方向。 国外对通信软件的设计模式的研究从1 9 9 5 年左右开始,比国内起步早。而 目前,国内这对一领域的研究的开展还不是很充分,只见过有少数的几篇专门 针对通信软件的设计模式进行介绍和研究的文献以及一些爱好者翻译的资料。 随着通信技术的应用日益广泛,可以说,这是一个亟待研究的有重要实际意义 的课题。 设计模式在通信软件的开发中有极其广泛的应用。有着深远的现实意义和 实用价值。把设计模式应用到通信软件的设计与开发中来,可以改进通信软件 的设计和开发过程。希望论文提出的方法和观点对通信软件的开发起一定的帮 助作用,并能为这个领域的进一步的研究提供一些有益的理论观点和实践经验。 1 3 论文的组织结构 本文由五个章节组成。 第1 章概要性地论述了通信软件的设计模式的研究背景和发展现状,简要 综述了本论文的研究内容,方法与意义,同时介绍了本文的组织结构。第2 章 阐述了通信软件的特点和复杂性,论述了设计模式的概念,研究了在通信软件 开发中应用设计模式。第3 章以多个不同领域,不同环境下的通信软件实际项 目为背景,提出了反应器处理器模式和观察者模式两个通信软件的设计模式。 第4 章详细讨论了上一章提出的设计模式在无线会展系统和b s 即时通知系统 两个项目中的具体应用实例和效果。第5 章总结全文,并展望了通信软件设计 模式的研究前景和进一步努力的方向。 通信软件设计模式的研究与应用 第2 章通信软件豹设计模式 第2 章通信软件的设计模式 本章论述了设计模式的概念,阐述了通信软件的特点和复杂性,研究了漫 计模式在通信软件开发中应用的重要意义。 2 1 设计模式 2 1 1 模式起源 模式的研究并非起源于软件工程行业。模式第一次是由建筑师c h r i s t o p h e r a l e x a n d e r 在他所著关于城市规划和建筑设计的著作:ap a t t e r nl a n g u a g e : t o w n s ,b u i l d i n g s ,c o n s t r u c t i o n ) ) 一书中提到的。c h r i s t o p h e r a l e x a n d e l 研究发 现,不同时代建筑师留下的伟大建筑作品中,有很多重复出现的设计,于是, 他找到了一种结构化、可复用的方法来捕捉并描述这些重复的设计,还给这些 描述的结果起了一个名字叫模式( p a t t e r n ) 。尽管他的著作是针对城市规划和建 筑设计的,但是作者的观点实际上适用于所有的工程设计领域,包括软件开发 设计领域1 1 4 。他引入了这一概念,并称为模式对于反复出现设计问题的抽 象解决方案这一概念吸弓i 了其它领域中一些研究人员的注意,特别是二十 世纪八十年代中后期,那些开发面向对象的软件人员。 2 1 2 模式历史 在面向对象的编程中使用模式化方法研究的开创性著作,是文献设计模 式一可复用面向对象软件的基础。该书发表于1 9 9 5 年,而模式理论被引进到 软件设计界的历史要稍早一些【”1 。 设计模式在软件设计行业中的起源可以追溯到1 9 8 7 年。那时,w a r d c u n n i n g h a m 和k e n tb e c k 在一起用s m a l l t a l k 作设计用户界面的工作。他们决定 使用a l e x a n d e r 的理论发展出一个有五个模式的语言来指导s m a l l t a l k 的新手, 因此他们写成了一篇”u s i n gp a a e ml a n g u a g e sf o ro b j e c t o r i e n t e dp r o g r a m s 的论 通信软件设计模式的研究与应用 第2 章通信软粹构设计模式 文。 在那以后不久,j i mc o p l i e n 开始搜集c 十+ 语言的成例( i d i o m s ) 。成饲是模 式的一种:这些c h 成例发表在1 9 9 1 s t y l e sa n dl d i o m s 一书中。 从1 9 9 0 刘1 9 9 2 年,设计模式一 予模式的讨论和工作会议则一再举行。 年出版的a d v a n c e dc + + p r o g r a m m i n g 书的作者开始健们搜集模式的工作。关 在1 9 9 3 年8 月份,k e n tb e c k 和g m d yb o o c h 主持了一个在科罗拉多的山 区度缓村召开的第一次关于模式的会议。模式研究的主要人物都参加了这次会 议,包括:j i mc o p l i e n ,d o u gl e a ,d e s m o n dd s o u z e ,n o r mk c r t h ,w o l f g a n g p r c c 等。 在那以后不久。设计模式可复用的面向对象软件基础一书发表。 此书发表之后,参加模式研究的人数呈爆炸性增长,被确定为模式的结构 的数目也呈爆炸性增长。编程模式语言大会( p a t t e r n l a n g u a g e s o f p r o g r a m m i n g , 或者p l o p ) 每年一次定期在美国举行,大会的论文也被汇编成书,公开发表, 形成p l o p 9 5 、p l o p 9 6 、p l o p 9 7 一直到p l o p 2 0 0 3 一个系列。 模式也不断被应用到软件工程的各个方面。在诸如开发组织,软件处理, 项目配置管理等等方面,都可以看到模式的影子:但至今得到了最好的研究的 仍是设计模式和代码模式。 2 1 3 模式定义 建筑设计师c h r i s t o p h e ra l e x a n d e r 是这样定义模式的:“每一个模式描述了 一个在我们周围不断重复发生的阍题,以及该问题的解决方案的核心。这样, 你就能一次又一次地使用该方案丽不必徽重复劳动。”i l 4 j 在软件界,受到普遍认可的模式定义是由d i r kr i e c h l e 和h e i n zz u l l i g h o v e n 绘出的,他们认为,软件模式是指在特定的环境中,从某个具体的、重复发生 的形式中得到的一种抽象。简单遣说,软件模式关注那些在不同的应用中,以 不同的面貌重复出现,删实质却相同的东西。 通信软件设计模式的研究与应片j 第2 章通信软件的设计模式 2 1 4 设计模式的定义 模式有很多不同的类型,其中,最基础也是应用最广泛的是设计模式,设 计模式具有抽象和灵活的特点,使得对它的复用具有广阔的前景,许多当代的 先进软件中已大量采用了设计模式的概念。 设计模式,顾名思义,就是在设计上采用的模式。具体到软件领域,就形 成了对设计模式的狭义定义。可以简单的认为:设计模式就是解决某个特定的 面向对象软件设计问题的特定方法。 设计模式是为了解决某些场合存在的一般性设计问题,是关于类和相互通 信的对象的抽象描述。 设计模式所表示的是构建软件时所发生的问题的成功解决方案。当相关模 式被编织在一起,它们就构成了种语言,有助于: 一为讨论软件开发问题定义词汇表 一为这些问题的有序解决提供步骤 设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将匣证 实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。 2 1 5 设计模式的要素 般而言,一个模式有四个基本要素。 ( 1 ) 模式名称( p a t t e r n n a m e ) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一 个新的模式增加了设计词汇。设计模式允许在较高的抽象层次上进行设计。基 于一个模式词汇表,自己以及同事之间就可以讨论模式并在编写文档时使用它 们。模式名可以帮助思考,便于与其他人交流设计思想及设计结果。找到恰当 的模式名也是设计模式编目工作的难点之一。 ( 2 ) 问题( p r o b l e m ) 通信软件设计模式的研究与应用第2 章通信软件的设计模式 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果。 它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致 不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一 系列先决条件。 ( 3 ) 解决方案( s o l u t i o n ) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。 因为模式就像一个模板,可应用于多种不同场合所以解决方案并不描述一个 特定丽具体的设计或实现,而是提供设计闯题的抽象接述和怎样用一个具有一 般意义的元素组合( 类或对象组合) 来解决这个问题。 ( 4 ) 效果( c o n s e q u e n c e s ) 描述了模式应用的效果及使用模式应权衡的问题。尽管描述设计决策对, 并不总提到模式效果。但它们对于评价设计选择和理解使用模式的代价及好处 具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和 实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统 的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些 模式很有帮助。 2 1 6 设计模式在改进软件开发的作用 设计面向对象软件比较阻难,而设计可复用的面向对象软件就更加困难。 开发者必须找到相关的对象,以适当的粒度将它们归类,再定义类的接口和继 承层次,建立对象之间的基本关系。设计应该对手头的问题有针对性,同时对 将来的问题和需求也要有足够的通用性。同时也希望避免重复设计或尽可能少 傲重复设计。有经验的面向对象设计者认为,要一下予就得到复用性和灵活性 好的设计,即使不是不可能的至少也是非常困难的。一个设计在最终究成之前 常要被复用好几次,而且每一次都有所修改。 有经验的程序员的生产力很强,这是因为经验使程序员产生智慧。有经验 的程序员在遇到问题时,能够将新问题与他们以前解决过的问题进行比较,找 8 - 通信软件设计模式的研究与应用第2 章通信软件的设计模式 出其中相似之处。随着经验的积累,他们那发现解决类似问题可遵循相同的模 式,知道各种模式的适用范围,并且可以快速利用已有的解决方案分析问题, 然后制定出合理的策略。有经验的面向对象设计者的确能做出良好的设计,而 新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象技术。新 手需要花费较长时间领会良好的面向对象设计是怎么回事。有经验的设计者显 然知道一些新手所不知道的东西,这又是什么呢? 内行的设计者知道:不是解 决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一 个好的解决方案,他们会一遍又一遍地使用。这些经验是他们成为内行的部分 原因。因此,可以在许多面向对象系统中看到类和相互通信的对象的重复模式。 这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更 好。它们帮助设计。者将新的设计建立在以往工作的基础上,复用以往成功的设 计方案,一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们 应用于设计问题中。 设计模式是面向对象设计专家设计经验的总结,描述了解决一般设计问题 的方案和效果,其价值在于复用抽象的、通用的面向对象设计思想来解决具体 的设计问题。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。 将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思 路。设计模式帮助做出有利于系统复用的选择,避免设计损害了系统复用性。 通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范,设计 模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计 模式可以帮助设计者更快更好地完成系统设计口”。 2 2 通信软件 2 2 1 通信软件定义 通信软件是一组构造现代分布式系统及应用( 比如w e b 服务、分布式对象、 协作式应用,以及电子商务系统) 的服务和协议。凡是用来实现两个或多个实 体( 计算机,电信终端,交换设备等) 之间相互通信的软件都可称为通信软件。 通信软件主要有两大类:电信软件和计算机网络软件。电信软件包括:电话交 通信软件设计模式的研究与应用 第2 章通信软件的设训模式 换软件,移动通信软件,智能网软件等。计算机网络软件主要包括:各种网络 协议和网络应用软件6 ”。 2 2 2 通信软件的特点 ( 1 ) 实时性 软件应该能对外部事件作出及时响应。比如,电话交换机软件,即时通讯 软件,网路实时多媒体软件。一般来说,电信软件的实时性要求比计算机网络 软件的实时性还要高。 ( 2 ) 可靠性,稳定性 通信软件系统一旦投入实际运行,就要一直运行下去,除非发生致命的故 障。因而要求系统具有很高的可靠性和稳定性。 ( 3 ) 健壮性,安全性 通信软件运行在开发的分布式环境中,必须能够应付可能出现的各种故障, 具有一定的容错能力,并能从故障中恢复过来。同时,随着通信软件的应用在 各个方面日益广泛,通信软件的安全性也成为最重要的问题。 ( 4 ) 并发性 通信软件应该能够“同时”地为成千上万的用户服务,必须具有很强的并 发处理能力。这在通信软件的服务器端体现得最为明显,例如w e b 服务器,f t p 服务器。而且有些通信软件各个并发进程间的交互也很频繁,比如即时通讯软 件的服务器,b b s 的t c l n e t 服务器等等,多人联机的网络游戏的服务器等等。 ( 5 ) 遵守通信协议 通信必须遵守一定的协议。例如电信软件,交换机之间的通信采用标准信 令,公共信道信令( 7 号信令) 。计算机网络软件则主要由网络协议组成,采用 分层结构,每层使用不同协议。如t c p i p 协议栈把计算机网络分成四层,即应 用层,传输层,网络层和数据链路层,上下层之间通信采用原语形式。网络协 议包含六种元素,服务原语和服务原语时序,协议数据单元( p d u ) 格式及p d u 通信软件设计模式的研究与应用第2 章通信软件的设计模式 交换时序、协议状态、协议事件、协议变量和协议动作及谓词。 ( 6 ) 多系统,多平台 一个通信软件的服务器可能要为来自多种平台或系统上的客户进行服务。 如一个设计良好的w e b 服务器就要能为不同的操作系统上不同的浏览器服务。 电话交换机支持电话终端与交换机,交换机与交换机之间的通信。同时,设计 良好的通信软件也应该能在多种平台上移植或直接运行,提高系统的可扩展性。 ( 7 ) 高性能 通信软件通常担负着多个用户的并发访问的要求,因此,通信软件必须具 有很高性能。例如一个视频点播( v o d ) 服务器,必须要具有很高的网络i o 性能。本地磁盘i o 性能和实时视频编码的性能,才能满足实际需要。 2 2 3 通信软件的复杂性 通信软件系统具有相关联的固有的和非固有的复杂性。 固有的复杂性源于由通信软件本身的特点所决定的基本困难,比如:检测 和恢复网络及主机失败、塌孙化通信响应延迟的影响,以及确定服务组件和工 作负载在网络的处理单元上的最优划分。 非固有的复杂性源于用阻开发通信软件的工具和技术的局限。例如,许多 标准的网络机制( 比如s o c k e t 和t l i ) 和可复用组件库( 比如xw i n d o w s 和s u n r p c ) 缺乏类型安全的、可移植的、可重入的和可扩展的应用编程接口( a p i ) 。 同样地,通用网络编程接口,如s o c k e t 和t l i ,使用上也十分不便和脆弱,经 常会导致微妙的运行时错误。作者在实践项目中接触过的三种类型的s o c k e t , w i n d o w s 平台下的w i n s o c k ,u n i x ,l i n u x 平台下的b s ds o c k e t ,和p d a 上 x p l o r e 嵌入式操作系统下的通过g p r s 实现的s o c k e t ,虽然是同一种通信的模 型,但这三者的使用方法差别却很大,同时其中的每一种在不同版本的操作系 统下也有微妙的不同。 复杂性的另一来源起因于算法分解的普遍使用,它致使软件系统不可扩展 和不可复用。尽管图形用户接口( g u i ) 普遍采用面向对象技术构建,典型的 通信软件设甜横式的研究与应用 第2 章通信较件的设诗模式 通信软件通常仍然使用面向过程的结构化方法进行开发。 2 2 4 开发通信软件的困难 开发通信软件的困难源于通信软件系统相关联的固有的和非固有的复杂 性。 另外,对于复杂的通信软件,可扩展性和缺乏最大限度的复用也特别成问 题。可扩展性是确保服务和特性的及时修改和增强的基本要求。复用是有效利 用专家开发考的领域知识、以避兔重新开发耜重新验证“反复出现的需求和软 件挑战的通用解决方案”的基本要求。 由于上述通信软件的复杂性和开发困难,所以。通信软件的开发者必须对 许多复杂问题有深入了解。比如服务的初始纯和分布、并发控制、流控铡、错 误处理、事件循环集成,以及容错。在由有经验的软件开发者所创建的成功的 通信应用中必定包藏着这些问题的有效解决方案。但是,传统上,这些模式被 锁在专家级开发者的头脑里、或是深埋在复杂的系统源码中。 因此,必须有一种解决方案能够把这些经验和模式从专家级的开发者头脑 中解放出来,这个解决方案就是设计模式。 2 3 设计模式在通信软件开发中的应用 面向对象的设计模式有助于减少对通信软件的核心概念和抽象的昂贵的重 新发现和发明,它们因此而备受重视。模式提供了一种封装设计知识的方法, 这些设计知识为标准的通信软件开发问题提供解决方案。 将成功的通信软件解决方案的本质与特定实现的细节分离开来并非是不重 要的。即使软件使用组织良好的面向对象框架和组件编写。要确定关键的角色 和关系仍有可能是很困难的。而且,操作系统平台特性,比如多线程的有无: 或是应用需求,比如最优努力还是容错错误处理,常常是不同的。这些不同可 能会掩盖在同一领域的不同应用的解决方案之间、其底层体系结构的共性。 捕捉成功的通信软件的核心共性是相当重要的,因为: 通信软件设训模式的研究与戍用第2 章通信软件的设计模式 ( 1 ) 它为负责增强和维护现有软件的程序员保存了重要的设计信息。这些信 息常常只驻留在起初的开发者的头脑中。因此,如果没有明确地为这些设计信 息编写文档,它们就有可能随时问而消逝,从而增大软件的不确定性,并降低 软件的可维护性和质量。 ( 2 ) 它有助于对正在构建新通信系统的开发者的设计选择进行指导。通过为 它们的领域中常见的陷阱和缺陷编写文档,模式可以帮助开发者选择适当的体 系结构、协议和平台特性,而不用将时间和努力浪费在重新实现低效或易错的 解决方案上。 通过确定通信软件开发中的基本挑战,研究和应用设计模式可帮助开发者 增强他们的解决方案的质量。这些挑战包括开发者之间的体系结构知识的交流: 适应新的设计范式或体系结构风格;消除非功能性的压力,比如可复用性、可 移植性和可扩展性;以及避开通常只能通过昂贵的“试一错”方法来学习的开 发陷阱和缺陷【1 b 】。 通信软件设计模式的研究与应用第3 章通信软件设计模式的研究分析 第3 章通信软件设计模式的研究分析 本章以多个不同领域,不同环境下的通信软件实际项目为背景,提出了反 应器一处理器模式和观察者模式两个通信软件的设计模式。 3 1 反应器一处理器模式 3 1 1 反应器一处理器模式简介 反应器一处理器模式一直在发展之中,为高效的事件多路分离和分派以及 事件处理提供可扩展的面向对象设计模式。目前用于事件多路分离的操作系统 实现既复杂又难以使用,也容易出错。反应器一处理器模式本质上提供一组更 高级的编程抽象,简化了事件驱动的通信软件的设计和实现。除此之外,反应 器将若干不同种类的事件的多路分离集成到易于使用的a p i 中,处理器也将客 户连接建立,通信和释放等封装到一个清晰统一的a p i 中。 反应器一处理器模式通过单一的多路分离点来在事件驱动的应用中引导夕卜 部的刺激,处理由一个或多个客户并发地递送给应用的服务请求。该设计模式 允许通信软件在一个线程内高效地完成事件句柄上等待、事件多路分离、和事 件处理等任务。 3 1 2 反应器一处理器模式定义 3 1 2 1 意图 反应器一处理器模式构造事件驱动的通信软件,特别是通信服务器;它们 并发地接收来自多个客户的请求,依次进行处理。 3 1 2 2 动机与压力 单线程的通信软件应用必须处理来自多个来源的事件,但又不能无限期地 遗詹软件设计摸式的研究与应用 第3 牵通信软件设计模式酶研究分析 阻塞在任何特定的来源上。下面的一些需要所带来的压力影响了单线程、事件 驱动通信软件的设计: ( 1 ) 在单线程控制中高效地多路分离来自多个事件源的多静类型事件。在通 信软件应用程序中,来自多个来源的事件常常必须在事件多路分离一级被处理。 通过在这一级处理事件,应用就有可能不再需要更为复杂的线程、同步或锁定。 ( 2 ) 扩展应用行为,而又无需改动事件分派框架。多路分离和分派机制常常 是与通信软件的应用业务逻辑无关的,因而也就可以被复用。相反,处理器策 略则是不同的通信软件应用所特有的。通过把事件处理和事件分发在逻辑上分 离,通信软件应用策略的改变可以不影响较低级的框架机制。 3 1 2 3 适用性 在通信软件系统中,需要满足下面几点要求的应用服务器,可毗考虑使用 反应器一处理器模式。 ( i ) 可用性 服务器必须能够并发处理来自多个客户的事件。服务器不能不响应其他客 户的事件来单独处理某一个客户的事件,这样会造成不可接受的延迟。 ( 2 ) 高效性 作为服务器,必须尽可能减少延迟,尽可能地增加吞吐量,和尽可能地避 免不必要地占用c p u 资源。 ( 3 ) 易实现性 服务器的设计应使既定并发策略和通信模型的实现变得尽量简单。 ( 4 ) 可扩展性 应该把集成和改进应用服务所需要修改和维护代码的代价减到最小。例如, 改变协议消息的格式,或者增加服务器端的缓存。就不应该修改通用的底层事 件分离和分发机制。 通信软件设计模式的研究与麻用第3 章通信软件设计模式的研究分析 ( 5 ) 可移植性 为了保证服务器的部署方便和节约投资,一个服务器程序应该可以很方便 地移植到另一个平台。 3 1 2 4 结构 3 1 2 5 参与者 ( 1 ) 反应器 图3 1 反应器一处理器模式的缩构 反应器定义的接口用于登记、移除和分派具体的处理器对象。该接口的实 现提供了一组应用无关的机制,在事件多路分离和分派后,这些机制执行应用 特有的处理器,以响应不同类型的输入、输出和定时器事件。 ( 2 ) 处理器 处理器定义的抽象接口被反应器用于分派回调方法;这些方法由登记了处 理器感兴趣的事件的对象定义。具体的处理器是继承自抽象的处理器的类,它 有选择地重定义一些回调方法,以便通过应用特有的方式处理事件。 通信软件设计模式的研究与应掰 第3 章通信软件设计模式静研究分析 3 1 2 6 协作 反应器一处理器模式中参与者之间的协作关系可划分为下面两种模式: ( 1 ) 初始化模式,在其中具体的处理器对象被登记到反应器; ( 2 ) 事件处理模式,在其中反应器调用己登记的处理器对象上的u p c a l l ,后 者随即以种应用特有的方式对事件进行处理。 3 1 2 7 已知应用 甲匝习甲甲 图3 - 2 反应器一处理器模式的协作关系 反应器一处理器模式被广泛运用于事件驱动模型的通信软件。除本文下面 将会提到的无线会震系统实际应用项目外,许多单线程事件驱动框架中都使用 到反应器一处理器模式。比如m o t i f , i n t e r v i e w s 、系统v s t r e a m s 、a c e 面 向对象通信框架,以及c o r b a 的一些实现。 3 1 3 反应器一处理器模式特性 反应器一处理器模式提供蕊向对象的多路分离分派和事件处理框架,它简 化了事件驱动应用的开发。下面描述反应器一处理嚣模式为通信软件开发者带 来的特性: 他 嚣 两 环 件 器 蛄 理 旬 霜 事 理 匍 处 糟 件 恃 赴 册 获 事 撙 件 注 行 事 逗 发抒 罐 魅掌鞭霉 薜盎甜文章_ 通信软件设计模式的研究与应用第3 章通信软件设计模工的研究分析 ( 1 ) 使系统服务和业务逻辑去耦合 反应器处理器模式把与应用独立的事件多路分离分发及客户连接建立释 放机制和应用相关的事件处理业务逻辑实现分开,使得应用服务器的各个类有 清楚的职能定义,便于分开实现和维护。 在实现与系统相关的事件多路分离和连接处理部分时,可以着重考虑如何 充分发挥系统及网络编程模型所提供的功能。在实现与应用相关的事件处理业 务逻辑部分时,则可以着重考虑如何实现应用的业务,而不再需要考虑系统底 层的问题。这样有利于系统的理解,维护,增强了系统的模块性,也有利于应 用程序的开发组织和管理。 ( 2 ) 高效封装系统底层实现 反应器一处理器模式使用统一的面向对象多路分离和分派接口。使用反应 器的应用并不直接访问诸如s e l e c t ( u n i x ,l i n u x ) 或w a i t f o r m u l t i p l e o b j e e t s ( w i n 3 2 ) 这样的低级事件多路分离系统调用,而是通过从事件处理器基类继 承来创建具体的事件处理器。该类指定处理多种类型事件的虚方法,比如i o 事件、定时器事件、信号和同步事件。 反应器一处理器模式实现高效的多路分离和粗粒度的并发控制。反应器一 处理器非常高效地执行它的事件多路分离逻辑和客户连接建立和释放逻辑。由 于能够把应用处理和反应器的实现分开,反应器和处理器的操作系统相关部分 就可以使用成熟的算法和高级的操作系统特性来实现和仔细优化。 反应器一处理器模式使事件处理器分派自动化。当反应器管理的处理器上 有活动发生时,反应器自动调用适当的预登记的具体处理器的虚方法。对象被 登记到反应器。对象、而不是单独的函数的使用。允许在对具体事件处理器的 挂钩方法的调用之间,状态可以方便地保持。这种风格的面向对象编程对于开 发在多次客户调用间保持状态的处理器来说很有用, 反应器一处理器将应用开发者和易错的细节( 它们与使用像s e l e c t 这样的 低级事件多路分离系统调用来编程是相关联的) 屏蔽开来。这些细节涉及设置 和清除位掩码,处理超时和中断,以及分派挂钩方法等。特别地,反应器一处 通信软件设计模式的研究与应用第3 章通信软件设计模式的研究分析 理器的实现,可以消除导致一些操作系统平台上微妙的出错原因。 ( 3 ) 增加可复用性 反应器一处理器模式的多路分离分派和连接建立释放的机制可被许多网络 应用复用。通过复用,而不是重新发明,开发者可以专注于较高级的应用特有 的策略,而不是反复与较低级事件多路分离分派和客户连接建立释放机制相纠 缠。相反,直接使用像s e l e c t 和w a i t f o r m u l t i p l e o b j e c t 这样的低级事件多路分 离操作,程序员则必须为每一个应用重新实现,调试和优化同样的多路分离和 分派代码。而所有应用反应器一处理器模式的应用则可以自动地复用它的特性, 以及将来的增强和优化。 反应器的功能和它的已登记的处理器可被透明地扩展,而无须修改或重编 译现有代码。为实现这样的扩展性,反应器采用继承和动态绑定来使它的较低 级的事件多路分离和分派机制与应用定义的处理事件的较高级的策略去耦合。 ( 4 ) 改善可移植性 反应器一处理器模式在若干事件多路分离机制上运行,其中包括w i n 3 2 w a i t f o r m u l t i p l e o b j e c t s 和u n i x 上的s e l e c t 。反应器一处理器模式将应用和底层 事件多路分离机制的移植性差异屏蔽开来。反应器一处理器向应用输出同样的 按1 2 1 ,而不管底层系统调用是什么。而且,反应器一处理器可以使用像桥接 ( b r i d g e ) 这样的设计模式来增强它内部的可移植性。因而,将反应器一处理 器从一个操作系统平台移植到另一个操作系统平台仅需要对模式实现的进行一 些局部变动。 3 1 4 反应器一处理器模式小结 反应器一处理器模式是用于简化并发的、事件驱动的通信软件的应用的设 计模式。反应器一处理器模式在面向对象的接口中封装低级的操作系统事件多 路分离分派机制和连接建立和释放机制。反应器一处理器模式使得开发正确、 简洁、可移植和高效的应用变得更为容易。通过分离策略机制和对操作系统底 层的封装,反应器一处理器模式增强了复用、改善了可移植性。 通信软件设计模式的研究与应用第3 章通信软件设计模式的研究分析 3 2 观察者模式 3 2 1 观察者模式简介 面向对象的开发的一个主导原则是,在给定的应用程序中正确地划分任务。 在用户界面和基础业务逻辑交互的领域中,正确划分任务显得特别重要。在应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年正射投影仪行业分析报告及未来发展趋势报告
- 2026年安徽林业职业技术学院单招职业技能考试备考题库带答案解析
- 2026年重庆市事业单位联考《经济基础知识》试题及答案
- 2026年卧床病人护理常识题库及答案解析
- 2026年重症康复医院护士面试题及答案
- 2025年明代文学题库及答案
- 2026年婴童用品行业分析报告及未来发展趋势报告
- (2026年)舟山市嵊泗县辅警招聘警务辅助人员考试题库真题试卷公安基础知识及答案
- 2025年侦探学考试试题及答案
- (2025年)学前儿童健康教育试卷及答案
- 2026年宝鸡市辛家山马头滩林业局招聘(12人)笔试参考试题及答案详解
- 2026届甘肃省武威市天祝藏族自治县第一中学高三下学期学科素养评价练习(二)历史试题(含答案)
- 养老护理员服务意识与责任感培养
- 2026年天津市和平区中考一模英语试卷和答案
- 地理信息安全在线培训考试系统题库及答案
- 2026中国生物可吸收胶原蛋白植入物行业发展形势与前景动态预测报告
- 2026年江苏省南通市中小学教师招聘考试真题及答案
- 护士工作制度及流程
- 2026年质量管理体系注册审核员考试题库(附答案)
- DB61T 5113-2024 建筑施工全钢附着式升降脚手架安全技术规程
- 家庭社会工作PPT完整全套教学课件
评论
0/150
提交评论