




已阅读5页,还剩53页未读, 继续免费阅读
(计算机应用技术专业论文)j2ee核心模式的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京航空肮大大学硕士学位论文 摘要 论文主要研究了典型j 2 e e 核心模式,它提供了在j 2 e e 平台上设计和开发的可重 用解决方案,并且每种模式都有各自的适j 1 ;| 范围。对于这些模式,本文分析了它们的 适用范围、解决方式、优势并给出流程图。同时,j 2 e e 核心模式之间存在着大量的 复杂关系,这些关系是模式语言的重要部分。本文在讨论它们关系基础上,研究了在 软件玎发过程中为了提高系统的稳定性、安全性、可维护性、可扩展性,如何选择合 适的模式以及如何练合使用模式进行设计和开发,这是模式研究的一个重要侧面也是 本文研究的重点。 本文首先介绍了j 2 e e 技术和设计模式的背景知识;然后围绕在一般项目中应用 较广泛的几种典型j 2 e e 核心模式,分析研究其适用环境、问题、使用背景、解决方 案等;其次阐述模式间关系,并给出关系图,研究属于不同层的模式对它们各层模型 的改善,讨论模式组合的重要性,有效组合模式,可以改善系统设计架构,最大程度 的完善系统;最后结合一个具体应用实例,进步说明如何对j 2 e e 的多种核心设计 模式进行有效选择并最终整合。 关键词:j 2 e e ;e j b :设计模式;j 2 e e 核心模式 ! ! 坚堡:堂堡壅塑塑壅兰壁型 a b s t r a c t t h ep a p e rm a i n l ym a k e sr e s e a r c ho fc o r ej 2 e ep a t t e r n s i td i s c u s s e st h er e u s a b l e s o l u t i o nw a yo fd e s i g n i n ga n dd e v e l o p i n go nj 2 e ep l a t f o r m e a c ho fp a t t e r n sh a so w n s c o p eo fa p p l i c a t i o n s o a st ot h e s e p a t t e r n s ,t h i sp a p e rm a k e sa n a l y s i s a b o u tt h e i r a d v a n t a g e s 、s c o p eo fa p p l i c a t i o n 、s o l u t i o na n d f l o wc h a r t a tt h es a m et i m e ,c o m p l i c a t e d r e l a t i o n se x i s tb e t w e e nt h e s ec o r ej 2 e ep a t t e r n s ;t h e s er e l a t i o n sa l ea l s oa ni m p o r t a n tp a r t o fd e s i g ns k i l l g i v i n gt h ed i s c u s s i n ga b o u ti t ,t h ep a p e rm a k e sr e s e a r c ha b o u th o w t o c h o o s et h es u i t a b l ed e s i g np a t t e r na n dh o wt oc o m b i n et h e s ep a t t e r n sm o r ee f f i c i e n t l y ,i n w h i c hw a yc a l lh e l pt om a k et h es y s t e ma r c h i t e c t u r em o r es t a b l ea n ds e c u r i t y i t sa n i m p o r t a n tf a c t o ro fp a t t e r n sa n d a l s oi sw h a tt h i sp a p e r m a i n l y m a k e sr e s e a r c hi n i nt h i s p a p e r ,d e s i g np a t t e r na n dj 2 e et e c h n o l o g yi sf i r s t l y i n t r o d u c e da n dt h e ni t d i s c u s s e st h er e l a t i o n s h i po fj 2 e ea n dd e s i g np a t t e m t h e ni tm a k e sr e s e a r c hi ns e v e r a l c o r ej 2 e ep a t t e r n sa n da n a l y s e st h e i rs o l u t i o n a n dt h e nd i s c u s s e sa b o u tt h ec o m b i n a t i o n o fj 2 e ep a t t e r n sa n dm a k e sr e s e a r c ho ft h ei m p r o v e m e n t so ft h ea r c h i t e c t u r et a k i n g a d v a n t a g e o ft h e s e p a t t e r n s i th e l p sd e v e l o p e r s t og r a s pt h ed e s i g np a t t e r n sm o r ed e e p l yb y s t u d y i n g t h e i r r e l a t i o n s h i p a n dc a nc o m b i n et h e m t o g e t h e r t o i m p r o v et h es y s t e m a r c h i t e c t u r e a ne x a m p l eb a s e do nj 2 e ea r c h i t e c t u r ei sd e s c r i b e da tt h ee n do ft h ep a p e l t h ep a p e rm a k e so u th o wt om a k ee f f i c i e n ts e l e c t i o no ft h e s ed e s i g np a t t e r n sa n dh o wt o c o m b i n e p a t t e r n ss y n t h e t i c a l l ym o r ee f f i c i e n t l yb y d e m o n s t r a t i o no ft h i se x a m p l e k e yw o r d s :j 2 e e ;e j b :d e s i g np a t t e m ;c o r ej 2 e e p a t t e r n s 南京航空航大大学硕士学位论文 第一章绪论 1 1 课题的提出 在当今竞争激烈的市场中,电子商务的开发正面临着一种艰难的挑战:既要降低 丌发周期内的成本,又要降低自身经营成本,缩短他们和客户之间的响应时间,扩展 他们的业务范围,提供广泛的电子商务服务。为了解决这个问题,许多公司都正在研 究使用j a v a 在中间层实施商业逻辑。应用实旋后,开发人员发现开发大型复杂的应 用变得简单了,部署的速度也变快了。此外,分布式j a v a 应用的实施提高了系统的 可伸缩性和可靠性【7 1 。然而,选择j a v a 的公司经常遭遇到系统的安全和性能问题, 这些问题降低了j a v a 在企业内的应用价值。因此s u n 公司公布的j a v a 2 企业版( j 2 e e ) 软件开发工具包( s d k ) 应运而生。j 2 e e 是一种基于j a v a 语言的标准体系结构,它 解决了c 1 i e n t s e r v e r 结构通常在第一次较容易部署但难以升级和改进的缺点,同时 使得重用业务逻辑和界面逻辑更加简单,体现出很好的伸缩性。j 2 e e 规范包含大量 的各种应用的结构,j 2 e e 体系结构通常包含最基本的w e b 容器、e j b 容器。在利用这 种体系结构基础上,采用j 2 e e 各公司可以方便的在中间层加速分布式部署,并且可 以将精力集中于商业逻辑的设计和开发i ”。 最近几年,j 2 e e 技术作为实现企业应用的标准平台逐渐成熟,该平台为企业应 用的开发和部署提供了坚实和稳固的服务i 。j 2 e e 通常被设计为类似于顾客、雇员、 供应商、合作者的企业应用,而这样的应用程序具有高复杂性,它们要访问各种类型 的数据并分发于大量的客户端。同时为了更好的控制和管理这些应用程序,需要在中 间层引入支持各种各样用户的商业功能。然而很多商业功能又需要实现访问数据库和 其它资源的功能,增加了系统的复杂性,尤其是随着服务规模的扩大,为了降低开支 和加快响应速度,也要经常对其底层代码进行修改。所以,代码的重构性、可维护性、 简洁性在开发中变的非常重要。 因此开发者希望在开发过程中,选择一个好的编程模型,简化丌发过程,利用已 经被证实是高效的软件提体系结构进行软件重用,这样不仅会大幅度的减少开发的工 作量,也会为以后整个系统的维护和升级打下一个坚实的基础。至今设计者追求软件 复用的目标已经多年,没有取得很大的成功。实际上,很多业务复用成功的例子都发 生在用户接口领域,而不是业务组件领域,而后者才是设计者应该努力的目标。业务 系统的设计力求促进复用,j 2 e e 核心模式证明了它是一种提供复用层次的极好方法 t 4 1 。 众所周知,大多数软件设计问题都有多个候选解决方案,但是随着时间和经验的 检验,只有少数解决方案成为最佳选择。j 2 e e 核心设计模式以一种通用的方式表示 并传播那些“最佳选择”。它们是无数专家经过大最项目经验的积累,通过对j 2 e e j 2 e e 核心模式的研究与应瑚 平台和扪关技术亲身实践总结出的。j 2 e e 核心模式可以帮助实现j 2 e e 平台经验的积 缨和传递,它帮助丌发者已录和交流已经被证实了的解决方案,这些解决方案可以解 决在不i 词环境鹕出现的问题。有效的使用j 2 e e 模式,可以使开发者减少在j 2 e e 平 台开发过程中的重复投资。可以作这样一个比喻,j 2 e e 平台就像一把锋利的宝刀, 丽j 2 e e 模式则是神奇的刀法,它使得我们能更好的利用和驾驭这把宝刀。 但是,每种模式有它自身的特点和应用场合,这些模式中的任何一种都不可能提 出一个“适合所有情况的”模式。正如我们所期望,关于是否应用某个特定的模式或 者是应用哪一种模式的决定通常是被各种不同的代价和利益权衡驱动的。 丌发者需要根据特定的项目,权衡代价和利益选取有效合适的模式,而不是运用 越多的模式越有效。如果一味追求模式、硬套模式,反而使系统复杂化、庞大、不易 扩展,取得反面效果。因此开发人员需要通过深入的研究和学习,对这些模式进行全 面深入的掌握、理解其设计思路,分清学习技术和利用技术学习设计的区别,才能够 做出有利于系统重用的选择,避免设计损害系统重用性,使模式更好的运用在项目中。 1 2 本文的研究内容 由此可见,通过直接使用现有系统中被证实是正确的模式,可以编写更少的软件 来降低软件风险。如果开发者能够吸收前人积累的经验,有效的使用设计模式,可以 进一步完善系统,帮助建立简单可执行的系统,提高开发效率。在j 2 e e 平台上正确 有效的使用模式,将会进一步简化和完善系统。本文详细分析了项目中应用较广泛的 几种j 2 e e 核心模式,讨论了它们的定义、问题、动机、设计策略和解决方案等方面, 帮助开发者全面的理解这些模式、在项目中正确的选择和使用这些模式,从而简化开 发过程,提高系统的可维护性、可扩展性。 同时,从1 1 节的讨论可知,模式不是单独孤立存在的,它们只有在其它模式的 相互支持下,才能更加体现其涵义和用处。单个模式提供了其环境、问题和解决方案。 开发者需要全丽的掌握模式内容,这将有利于他们在j 2 e e 架构上中使用模式。模式 的多种组合,为解决问题提供了很有效的方法。通过选用不同的模式或者与已经使用 的模式一起结合其它模式,可以解决新的更复杂的问题。 因此,在对单个设计模式进行分析研究、选择了系统需要的模式后,接下来面临 的问题就是如何将这些模式进行有机组合、恰当的重构代码和应用模式,从而完善应 用。熟悉它们之间的关系,尽可能的构建完善的系统架构。 1 3 本文的组织结构 本文共分七章: 第一章:绪论。介绍课题的研究背景、研究内容。 第二章:j 2 e e 和设计模式。介绍j 2 e e 应用服务器的相关概念、基本架构和模式 背景知识j 讨论了j 2 e e 与设计模式的关系。 2 南京航空航天人学硕十学位论文 第三章:j 2 e e 核心模式研究。阐述项目中应用较广泛的几种典型j 2 e e 核心模式, 分析其适用环境、问题、使用背景、解决方案等。 第四章:阐述模式i n j 关系,并给出关系图;研究属于不同层的模式对它们各层模 型的改善;讨论模式组合的必要性,有效组合模式,可以改善系统设计架构,最大程 度的完善系统。 第盘章:结合一个具体实例,分析说明如何将j 2 e e 的多种核心设计模式进行有 效选择并最终整合。 第六章:本文的总结及展望。 j 2 e e 核心模式的研究与应 j 第二章j 2 e e 与设计模式 本章茸先介绍j 2 e e 的背景矢识,阐述设计模式的概念和思想;其次,探讨j 2 e e 和设计模式结合的思想。 2 1j 2 e e 核心技术 2 1 1j 2 e e 1 ) j 2 e e 的产生 过去,二层体系结构应用( 通常被称为c l i e n t s e r v e r 应用) 是大家谈论的最多 的。图2 1 刻画了典型的二层体系结构。在很多情况下,服务器提供的唯一服务就是 数据库服务。在这种解决方案中,客户端程序负责数据访问、实现业务逻辑、用满足 要求的样式显示结果、弹出预设的用户界面、接受用户输入等。c 1 i e n t s e r v e r 结构 通常在第一次部署的时候比较容易,但难于升级或改进,它使得重用业务逻辑和界面 逻辑非常困难8 j 。更重要的是,在广泛应用w e b 的时代,c l i e n t s e r v e r 结构通常不 能体现出很好的伸缩性,因而很难适应i n t e r n e t 的要求。s u n 设计j 2 e e 的部分起因 就是想解决二层体系结构的缺陷【“】。 c l i e n ts e r v e r ( p r e s e n t a t i o nl o g i c ) ( b u s i n e s sl o g i c ) ( b u s i n e s sl o g i c ) ( d a l aa c c e s sl o g i c ) ( d a t a a c c e s sl o g i c ) 图2 。1 二层应用体系结构 因而s u n 公司对j 2 e e 做了定义,一种利用j a v a 2 平台来简化企业解决方案的开 发、部署和管理相关的复杂问题的体系结构。该体系结构提供中间层集成框架用来满 足没有太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求6 1 。j 2 e e 规范包含大量的各种应用的结构,j 2 e e - 体系结构通常包含最基本的w e b 容器、e j b 容器。图2 2 反映了一些关键的构造。在应用这种体系结构的基础上,备公司可以更 为方便地在中间层加速分布式部署。在企业开发工作中利用这种体系结构,开发者将 不必担心运行关键商务应用所需的“管道工程”,从而可以集中精力重视商业逻辑的 4 南京航空航天人学硕十学位论文 设计和应用的表示。 图2 2j 2 e e 应用系统主结构 2 ) j 2 e e 模型 建立访问和管理来自各种各样的企业资源的数据和应用所需的中间层管道工程 往往需要耗费大量时间和金钱。 j 2 e e 的应用编程模型( 也叫j 2 e eb l u e p r i n t s ) 提供了一种包含用于实施基于 j 2 e e 的多层应用的文档和实例套件的体系模型,部分的简化了这项复杂的工作。它 被用作开发人员设计和优化组件的原则,以便从策略上对开发工作进行分工,分配技 术资源。j 2 e e 应用编程模型要求丌发者将自己的工作分成两类:商业逻辑和表示逻 辑。其余则由系统资源自动处理。不必为中间层管道进行编码,从而能将更多的时间 花在商业和表示逻辑上。 3 ) j 2 e e 平台 j 2 e e 平台是运行j 2 e e 应用的标准环境。它由j 2 e e 部署规范( 一套所有j 2 e e 平 台产品都必须支持的标准) 、i e t f 标准集和c o r b a 标准组成例。最新的j 2 e e 平台还添 加了j a v a b e a n 组件模型。开发人员可以利用j a v a b e a n 组件模型来自定义j a v a 类实 例,并可通过已定义的事件访问j a v a 类。 j 2 e e 支持e j b ( 即e n t e r p r i s ej a v a b e a n s 的简称) ,当在j 2 e e 服务器上运行时, e n t e r p r i s ej a v a b e a n s 将应用逻辑分成可利用和可扩展的代码段。e n t e r p r i s e j a v a b e a n s 并非j 2 e e 的新特征,但是j 2 e e 通过定义标准客户端和服务a p i 供使用, 5 j 2 e e 核心模式的研究与应h j 增强了它们的能力和可移植性。| 1 i b 在服务器的一个容器内运行,它提供所有典型的 小问层服务,如4 务管理、安全、远程客户连接、生存周期管理和数据库连接缓冲。 为了让事务系统在存在e j b 容器的情况下运行,开发人员只需在部署描述文件中定义 b e a n s 的事务属性。这样,就不必丌发代码来管理易于出错的事务边界。 4 ) j 2 e e 服务器 当应用运行在j 2 e e 平台上,s u n 的j 2 e e 服务器通过j a v a 命名和目录接口( j n d i ) 、 认证、h t t p 及与e n t e r p r i s e a v a b e a n s 兼容的能力,提供命名和目录服务。j n d i 是j a v a 平台的一种标准扩展版,向企业内的命名和目录服务提供具有j a v a 功能的带 有统一接口的应用,包括l d a p l 2 ”。 j 2 e e 服务器还利用了j a v as e r v l e t 技术。s e r v l e t ( 可以看作是运行在服务器 上的一个小程序) 向开发人员提供以组件为基础、创建基于w e b 的应用的独立于平台 的方法,它不像利用c g i 程序等其它方式那样具有性能局限。s e r v l e t 是种扩展w e b 服务器功能的简单而相似的技巧,而且,由于它是用j a v a 编写的,因而,能够访问 整个j a v aa p i 库,包括用于访问企业数据库的j d b ca p i n 。 j s p 是j a v as e r v l e t 的一种扩展。s e r v l e t 提供开发和显示来自服务器的交互式 w e b 页,而j s p 又有了进一步的改进,它使创建和支持将静态模板和动态内容相结合 的岍m l 和x m 乙页面更加容易口”。 总之,j 2 e e 使项目的应用以相容的方式建立,即具有可伸缩性、可靠性并与其 它企业应用兼容。它拥有快捷的部署及部署技巧、快速的执行速度及在安全方面的改 进,能够承载企业应用框架。它能够减轻某些中间层管道工程的负担,加速分布式应 用系统的开发,以上这些方面可以归纳如下: 1 简单的结构和丌发 j 2 e e 平台支持简单的组件开发模式,因为是基于j a v a 语言和j 2 e e 的,所以这 种模式提供了一次编写、处处执行的可移植。 2 可伸缩性 j 2 e e 容器提供种机制支持分布应用系统的可伸缩性,应用系统开发团队不需 花费任何其它劳动。 j 2 e e 容器提供组件以支持事务、数据库连接、生命周期管理和其它的服务,这 些服务可影响系统的性能,在这些领域提供可伸缩性。 3 与已存在系统的集成 j 2 e e 包含大量的工业标准a p i ,用以对企业遗留信息系统的访问,主要有: j o b c 是从j a v a 访问关系数据的a p i : j a v a 事务a p i ( j t a ) 是管理和协调异种企业信息系统的事务a p i ; j a v a 名字与目录接口( j n d i ) 是访问企业名字和目录服务信息的a p i : j a v a 消息服务( j m s ) 是发送和接收消息的a p i ; j a v a m a i l 是发送和接收e m a i l 的a p i ; 6 南京航空肮大人学硕士学位论文 j a v ai d l 是凋用c o r b a 服务的a p i ; 此外,对企业资源计划录l 大型机系统的访问将在以后的j 2 e e 中通过连接器结构 得到实现,随着j 2 e e 的发展,e j b 将能利用连接器访问对企业遗留信息系统以完成 商务功能: 4 可i j 由选择服务器、工具和组件 1 j 2 e e 标准使创建服务器、开发工具和组件的市场成为可能。 服务器选择:应用程序丌发组织能根据自己的硬件平台、操作系统和服务器配置, 从各种不同的公司选择提供实现j 2 e e 规范的平台,现有i b m 的w e b s p h e r e ,b e a 公司 的w e b l o g i c 服务器等1 8 i 。 设计工具的支持:有各种各样的工具可以帮助组件开发人员编写和调试代码,应 用程序开发者可选择适合自己的工具进行编程和组装组件。 组 牛市场:基于组件的设计使得有许多行为是标准的,被打包且可被重用。组件 公司将提供市场大量具有各种强大功能的组件,包括计算b e a n s 、用户界面模板甚至 具体工业领域的商务功能,j 2 e e 标准使得这些组件是兼容的,这可极大的节约组件 开发者的投资。 5 简单和统一的安全模式 组件开发者能在方法级说明安全要求,可保证仅仅有适当权限的用户能访问特定 的数据操作。e j b 和s e r v l e ta p i 都提供建立安全检查的机制,基本的方法是对用户 进行角色管理,并在应用程序发布时得到实现,这样便提供了更灵活和更安全的控制 机制l ”i 。 2 1 2e j b 技术 j 2 e e 平台由一整套服务( s e r v i c e s ) 、应用程序接1 :3 ( a p i s ) 和协议构成,它对 开发基于w e b 的多层应用提供了功能支持。其中构成j 2 e e 包含1 3 种核心技术一一 j d b c ,j n d i ,e j b s ,r m i ,3 s v ,j a v as e r v l e t s ,x m l ,3 m s ,j a v ai d l ,j t s j t a , j a v a m a il 和j a f ,它们分别适用于不同的场合,起着不同重要的功能,同时各种技术 之| 白j 可以灵活通信【l ”。其中,j 2 e e 技术之所以赢得媒体广泛重视的原因之一就是e j b 技术的应用。e j b 作为j 2 e e 架构中最重要的组成部分,是服务器端分布式计算模型 的核心。它提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有 可伸缩性和高度复杂的企业级应用的开发。 1 ) e j b 的提出 e j b 的定义:e j b 是用于开发和部署多层结构的、分布式的、面向对象的j a v a 应用系统的跨平台的构件体系结构1 6 l 。 采用e j b 可以使开发商业应用系统变得容易,应用系统可以在一个支持e j b 的环 境中开发,开发完之后部署在其它的环境中,随着需求的改变,应用系统可以不加修 改地迁移到其它功能更强、更复杂的服务器上。同时,使用e j b 简化了多层体系结构 2 e e 核心模式的研究与应州 应用系统的丌发过程。在分布式应用系统的j r 发中,采用多层体系结构的方法有很多 优点,如增加了应j 玎系统的可伸缩性、可谁性、灵活性等。因为服务器端构件可以根 据应用需求迅速地加以修改,且构件在网络中的位置是透明的,因此系统管理员可以 很容易地重新分配系统的负载。 2 ) e i b 容器 e j b 服务器是e j b 的容器,控制e j b 的运行,并且为它提供重要的系统级的服务 一事务处理、安全、远程客户端访问、生命周期管理、数据库连接池、永久存储管理 等】。这样对开发者来说,只需关注与业务逻辑相关的组件程序,在e j b 规范中定义 了e j b 组件在何时如何与它们的容器进行交互作用。 3 ) e j b 的三种基本b e a n 类型: e n t e r p r i s ej a v a b e a n 规范将e n t e r p r i s eb e a n s 分为两种:会话b e a n ( s e s s i o n b e a n ) 和实体b e a n ( e n t i t yb e a n ) n s e s s i o nb e a n 表示的是调用它的客户端代码所要完成的工作,是一种商业处理 过程对象,它实现商业逻辑,商业规则以及工作流程,例如:报价,订单处理,视频 压缩,股票交易等。 s e s s i o nb e a n 又分为两种:无状态b e a n ( s t a t e l e s s ) 和有状态b e a n ( s t a t e f u l ) , s t a t e f u ls e s s i o nb e a n 用于贯穿多个方法请求和事务的商业过程;而s t a t e l e s s s e s s i o nb e a n 用于客户调用方法期间不用维护任何状态信息。 e n t i t yb e a n 用来代表商业过程中处理的永久性的数据。 3 ) e j b 优势 e j b 结构体系是j a v a 平台上的服务器端组件模型。设计e j b 结构体系的目的是, 使企业丌发人员将注意力只集中于编写商务逻辑。e j b 技术取消了编写”全程 ( p l u m b i n g ) ”码的要求。例如,企业开发人员不再需要编写那些处理事务行为、安全、 连接共享或线程的代码,因为e j b 规范定义了e j b 组件在何时如何与它们的容器进行 交互作用,由容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓 冲池以及容错性。因而采用e j b 技术大大减轻开发服务器端应用系统的工作量。使服 务器端仅写一次,即可随处运行( s e r v e r s i d ew r i t eo n c e , r u na n y w h e r e ) :通过 对j a v a 平台的支持,e j b 技术将”仅写一次,随处运行”的概念提高到了一个新的水 平。它可以保证一个e j b 应用程序可运行于任何服务器,只要这个服务器能够真正提 供企业j a v a b e a n sa p i s 。 2 2 模式背景知识 由上述可见j 2 e e 为搭建具有可伸缩性、灵活性、易维护性的系统提供了良好 的机制,它提供容器的服务,使得j 2 e e 程序的编写十分简单。同时,在面向对象的 编程中,为了减少代码的维护量,软件编程人员也更加注重以前的代码的可重用性和 可维护性。为了使人们可以更加简单方便地复用成功的设计和体系结构,提出了设计 r 南京航空航天人7 羊硕十学位论文 模式的概念。 2 2 1 设计模式概述 设计模式针对面向对象系统中重复出现的设计问题提出一个通用的设计方案, 并予以系统化的命名和动机解释。它描述了问题、解决方案、在什么条件下使用该 解决方案及其效果,它还给出了实现要点和实例。浚解决方案是解决该问题的一组糟 心安排的通用的类和对象,再经定制和实现就可用来解决特定上下文中的问题。可以 总结一个公式:模式= 问题+ 特定环境下的解决方案。 因此,通过使用设计模式方便了对软件构架和设计的重用,它对解决很多非功能 的需求具有很重要的作用 2 2 2 模式基本要素 由设计模式的定义可以看出,设计模式使开发者可以更加简单方便地复用成功的 设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解 其设计思路,并且能帮助做出有利于系统重用的选择,避免设计损害了系统重用性。 因此,为了更全面的表述设计模式,方便后来新系统开发者理解它,模式提出了基本 要素的概念。它是构成一个设计模式的基本要素,使开发者更全面的掌握这个模式, 能够在适当的环境下,用模式解决适当的问题。 一般而言,一个模式有四个基本要素: 1 模式名称( p a t t e r nn a m e ) 一个助记名,它用一两个词来描述模式的问题、解 决方案和效果。命名一个新的模式由此增加了设计的词汇。设计模式允许设计者在较 高的抽象层次上进行设计。基于一个模式词汇表,开发者自己以及同事之间就可以讨 论模式并在编写文档时使用它们。模式名可以镲助设计者思考,便于它们与其它人交 流设计思想及设计结果。找到恰当的模式名也是设计模式编目工作的难点之一。 2 问题( p r o b l e m ) 描述了应该在何时使用模式。它解释了设计问题和问题存在的 前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了 导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系 列先决条件。 3 解决方案( s o l u t i o n ) 描述了设计的组成成分,它们之间的相互关系及各自的职 责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不 描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用个具有 一般意义的元素组合( 类或对象组合) 来解决这个问题。 4 效果( c o n s e q u e n c e s ) 描述了模式应用的效果及使用模式应权衡的问题。尽管当 描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的 代价及好处具有重要意义。软件效果大多关注对时间和空闻的衡量,它们也表述了语 言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的 j 2 e e 核心模式的研究与应川 灵活性、扩充性或可移植性的影响,列出这些效果对理解和评价这些模式很有帮助。 这四点基本要素的核心是问题描述年l i 解决方案。它帮助设计者在特定的环境下, 对是否选择这种特定模式进行判断,并且帮助设计者给出该环境下问题的解决方案。 2 3j 2 e e 与设计模式结合 由上可见,j 2 e e 为搭建具有可伸缩性、灵活性、易维护性的系统提供了良好的 机制,它提供容器的服务,为所有的组件类型提供后台服务,这使得j 2 e e 程序的编 写十分简单。开发者不用自己开发这种服务,可以集中精力解决复杂的业务问题。e j b 容器大大简化了开发业务逻辑层。理解容器及其在j 2 e e 中的架构,可以使大家在项 目建模时清晰的划分任务层,使设计者对繁杂的业务逻辑层划分更明确,提高了系统 完成的效率。 j 2 e e 通过a p i 提供技术与服务的高层抽象,使企业开发得到简化。然而要在这 个强壮的平台上实现分稚式的多层企业级应用,仅仅知道j 2 e ea p i 是不够的。开发 者需要设计良好的体系结构,才能得到更高质量的应用程序。 开发者希望利用已经被证实是高效的软件提体系结构进行软件重用柬简化开发 过程。至今设计者追求软件复用的目标已经多年,但没有取得很大的成功。实际上, 很多业务复用成功的例子都发生在用户接口领域,而不是业务组件领域,而后者才是 设计者应该努力的目标。业务系统的设计力求促进复用,j 2 e e 模式证明了它是一种 提供复用层次的极好方法。由此,无数专家对j 2 e e 平台和相关技术亲身实践总结出 j 2 e e 核心模式。 j 2 e e 模式可以帮助开发者实现它们对j 2 e e 平台经验的积累和传递,它帮助记录和 交流已经被证实了的解决方案,这些解决方案可以解决在不同环境里出现的问题。因 此,有效的使用j 2 e e 模式,可以降低在j 2 e e 平台开发过程中的重复投资。 j 2 e e 模式可以从不同方面进行分类。j 2 e e 核心模式在三个逻辑结构层内( 表示 层、业务层、集成层) 对模式进行分类。表示层模式包含与s e r v l e t 、j s d 技术相关 的模式,业务层模式包含与e j b 相关的模式,集成层模式包含与j m s ,j d b c 相关的模 式【i ”。本文对业务层和集成层做了重点研究。 o 南京航空航天人学硕士学位论文 第三章j 2 e e 核心模式研究分析 上一章阐述了模式和j 2 e e 相关背景知识,讨论了j 2 e e 核心模式为系统开发带来 的优势。本章重点分析项目中应用较广泛的几种j 2 e e 核心模式,研究总结它们的最 佳实践、设计策略和解决方案。主要包括业务逻辑层( 值对象、值对象列表、会话外 观、业务代表、工厂方法模式) 和数据库层( 集成层模式) 。 3 1d a o 模式 3 1 1 问题的产生 在许多实际应用的数据库处理部分中,j 2 e e 应用程序需要在定程度上使用持 久性数据。对于这些应用程序,持久性存储是使用不同的机制实现的,并且用来访问 这些不同的持久性存储机制的a p i 也有很大的不同。其它应用程序需要访问驻留在独 立系统中的数据。比如,数据驻留在主机系统的轻型目录访问协议( l d a p ) 库等等。 另外一个例子是数据通过外部系统的服务提供,比如业务对业务集成系统,信用卡局 服务等等。 通常,应用程序使用诸如实体b e a n 的分布式组件来表示持久性数据。当这些实 体b e a n 显示的访问持久性存储( 实体b e a n 包含直接访问持久性存储的代码) 时,应用 程序被认为其实体b e a n 使用了b e a n 管理的持久性( b m p ) 。简单需求的应用程序也许 不使用实体b e a n ,而是使用会话b e a n 或者s e r v l e t 来直接地访问持久性存储以及检 索和更改该数据。 应用程序也可以使j d b ca p i 来访问驻留在某关系数据库管理系统中的数据,比 如关系数据库。j d b c 使j 2 e e 应用程序能够使用结构化查询语言s q l 语句,其中s o l 语句是访问r d b m s 表的标准方式5 l 。然而,即使在r d b m s 环境中,根据特定的数据库 产品不同,s q l 语句的语法和格式的差别也许会很大。 持久性存储的类型更是差别很大。在不同的持久性存储的类型之间,比如r d b m s , 面向对象数据库、纯文件等等,它们的访问机制、所支持的a p i 以及功能差别都不同。 当组件需要访问某数据源,它们可以使用合适的a p l 来获得连接性以及操作该数据 源。但是这些组件包含的连接性和数据访问代码会提高组件与数据源之间的耦合度, 这类代码的依赖性使应用程序从某种数据源迁移到其它数据源变得非常麻烦和困难。 一旦数据源发生变化,组件也需要改变以便能够处理颓类型的数据源。 3 2 分析d a o 模式的解决方案 基于以上所存在的问题提出了d a o 模式( d a t aa c c e s so b j e c t ,数据访问对象) , 它是数据访问的一种方式。这里的d a o 与以前所了解的d a o 和a d o 不同,以前的d a o j 2 e e 核心模式的研究与麻_ l f j 是指出v b 提供的应用程序接口( a p i ) ,使程序员可以访问m i c r o s o f ta c c e s s 数据库, a d o 是把数据库访问接口封装成类,程序员使用类方法访问数据库。d a o 模式的基本 思想是把数据访问逻辑从e j b 业务逻辑中抽取出来,作为单独的一层,实现数据访问 逻辑和业务逻辑的无关性”i 。 由d a o 模式定义可见,它包含所有访问数据逻辑的对象,并管理数据源的连接。 根据数据源的不同,数据访问对象实现了不同的访问机制这里所说的数据源可以是 持久性存储介质,如关系型数据库,电可以是外部服务,如b 2 b ( b u s i n e s st o b u s i n e s s ) 的数据交换:不仅是用户,而且包括应用系统中的其它组件,也可以使用 数据访问对象所提供的数据访问接口。数据访问对象将数据源的物理实现细节与用户 完全分离开来,并且在底层数据源变化的时候,数据访问对象向用户提供的接口不变。 使用数据访问对象应用系统可以适应多种数据存储介质,因而可以把数据访问对象看 成是系统组件和数据源中间的适配器。 3 1 3d a 0 在1 2 e e 中的层次结构 普通的三层结构中,中间层包括业务逻辑和数据访问逻辑,数据访问逻辑可以在 s b ( s e s s i o n b e a n ) 中实现,也可在e b ( e n t i t y b e a n ) 中实现,见图3 1 。 前端界面 e j b ( s b ,e b ) j s p ( 业务逻辑+ s e r v l e t 数据访问逻辑) 图3 1 无d a o 的分层结构 d a o 把中间层一分为二,业务逻辑仍然由原来的e j b 实现,数据访问逻辑由d a o 独立实现,见图3 2 。d a o 位于e j b 业务逻辑之后,数据存储之前。数据存储可能是 数据库、数据仓库、文件系统等。d a o 将数据存取处理封装起来,所有s o l 语句在d a o 中实现。d a o 与e j b 之间的数据交换采用值对象( v o ) 的方式( 将在下一节介绍) , 对于e j b 来说,只有对象的概念,没有数据库表或文件的概念。d a o 与后台数据库通 常可以采用j d b c 连接。本文后文的项目实例结合应用对该模式将做进一步的研究。 前端界面e j b ( s b ) d a o ( 数据 ( j s p ) 1 ( 业务逻辑) 斗 访问对象) ( s e r v l e t ) 图3 2 使用d a o 的分层结构 2 南京航空航大人学硕十学位论文 图3 3 是结合本文项目展现d a o 的两种实现方式一简单类方式和工厂创建方式。 从图中可以看出,这种模式屏蔽了后台数据源,无论是o r a c l e 或者s y b a s e 数据源, 对于e j b 层部不需要知道,这些都封装在d a o 层中,l u b 层将原本需要对数据库的一 些操作的精力转移到业务逻辑的处理。并且d a o 负责将数据存耿处理封装起来,所有 h q l 语句在d a o 中实现。 1 ) 简单类方式 2 ) 工厂创建方式 v o u s e 巾a o 6 c p d a o 图3 3d a o 简单类实现方式 l v o u s e f f 3 a o f v o c p d a o 图3 4d a o 工厂创建方式 j 2 e e 核心模式的研究与麻“j 3 1 。4d a o 与其它数据库访闷方式的比较 会活b e a n 实现方式 数据库访问逻辑可以直接在会话b e a n 的业务处理中实现,把业务逻辑和数掘访 问处理集成在一起。这种方式在结构卜比较紧凑,层次少,但灵活性较差,如果数据 库发生了变化,则会话b e a n 需要作很大改动,甚至需要重写。 b m p 实现方式 在e j b 中,实体b e a n 是用于处理数据存储的。b n p 即b e a n 管理持久化,是把大 量的数据访问处理交给开发者实现。b m p 把数据处理从会话b e a n 中分离出来,层次 结构更加合理,灵活性也较好,在层次上与d a o 很相似,但是需要按照e j b 的固定格 式束实现,感觉实现方式上不是太灵活,而且b 卿的效率不高。 c m p 实现方式 c m p 即容器管理持久化,是把大量的数据访问处理交给e j b 容器实现,e j b 容器 可以实现数据访问的优化处理,比b m p 的效率高,而且开发者的开发工作比较轻松, 但是这种方式的缺点是灵活性比较差,开发者难以控制数据访问处理的底层操作,在 需要调用数据库的存储过程时也难以处理。 d a o 实现方式 d a o 方式把业务逻辑与数据访问逻辑分离开来,灵活性较好,当数据库发生改变 时,只需要改变d a o 的实现,e j b 的业务逻辑基本上无需作什么改动。另外,d a o 的 实现完全由开发者控制,- 丌发者可以用自己习惯的方式实现。d a o 方式的缺点是需要 开发者实现大量的数据访问代码,而且数据访问优化处理比c m p 要差一些,这一点与 b m p 实现方式相同。 3 1 5 使用d a o 模式的注意事项 前面对d a o 模式进行了分析,讨论了该模式的思想和结构、使用该模式能够解决 的问题等。使用d a o 模式概括起来有以下几个优点: 透明性好。业务对象可以在不知道数据源实现细节的情况下访问数据。由于 切数据访问细节被数据访问对象所隐藏,所以这种访问过程是透明的。 可移植性好。在应用系统中添加数据访问对象,可以使得应用系统能够很方 便地移植到另外一种数据库实现上。业务对象与数据实现是隔离的,所以在移植过程 中,仅仅对数据访问对象进行一些变化即可。 减少业务对象的代码复杂度。由于数据访问对象可以管理所有的数据访问复 杂细节,这也就简化了业务模块和其它数据客户的代码。同时也提高了应用系统的整 体可读性和开发效率。 集中处理所有数据访问。由于所有的数据访问操作都移交给数掘访问对象, 这样应用系统其它部分就与数据访问实现隔离开来,丽全部相关操作都与数据访问对 象集中处理,这样也使得相关操作更加容易被维护和管理。 南京肮空航犬人学硕+ 学位论文 因此可以简- b 归纳为: d a o 模式将事务逻辑和数据存墩逻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环境影响评价师执业资格考试试题及答案解析
- 2025年环境工程师执业资格认证考核试题及答案解析
- 2025年安全员安全员考试高频题库答案
- 2025年保密安全常识题及答案集
- 2025年政府会计准则气象事业单位题库及答案解析
- 2025年书法教师面试模拟测试题及答案
- 2025年社工笔试备考资料及模拟题
- 2025年安全生产安全档案管理安全事故预防面试题
- 2025年宠物殡葬行业客服师面试bi备题库
- 2025年宠物保险专员考试题及答案
- 急性st段抬高型心肌梗死
- 幼儿文学课件完整版
- DB6101T3128-2022养老服务规范 助餐服务
- GB/T 21709.8-2008针灸技术操作规范第8部分:皮内针
- 资本论第三卷讲义课件
- 离心式压缩机试车记录
- 穴位敷贴中医护理技术操作规范
- 冷却塔投标文件
- 地下室开槽引流方案
- 青年教师专业成长课题结题报告
- 农村公路安全生命防护工程施工方案
评论
0/150
提交评论