已阅读5页,还剩80页未读, 继续免费阅读
(通信与信息系统专业论文)基于tsh的轻量级j2ee架构研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 软件架构犹如人体骨骼支撑着整个系统的各个方面。软件架构的设计不仅 要解决系统的稳定性、扩展性、可维护性等问题,还面临着如何提高系统复杂 性、缩短开发周期、兼顾灵活性、安全性和实用性等诸多难题的挑战。框架技 术是实现大粒度软件复用的新途径,极大的提高了软件的开发效率。j a v a 领域 不断涌现的优秀的开源框架正积极的推动着j 2 e e 技术的发展。通过开源框架 整合技术实现软件架构能够很好的满足企业应用快速开发的要求。 t a p e s t r y 、s p r i n g 、h i b e r n a t e 是j a v a 世界优秀开源框架的杰出代表。t a p e s t r y 面向组件的开发模式完全实现了表示层技术的面向对象;s p r i n g 作为轻量级的 i o c 和a o p 容器能实现对象间的松散耦合、方便单元测试并能与各种框架良好 集成;作为杰出的o r m 工具,h i b e r n a t e 可以使开发人员以面向对象的思维操 纵数据库,显著提高数据持久化效率、全面减轻维护数据的复杂度、使系统性 能良好可移植性强。 本文通过对上述三种开源框架关键技术的研究形成了轻量级的t s h 架构 设计方案。通过对企业信息化综合服务平台业务需求的实地调研,作者对角色 功能进行了分析、对数据库进行了设计、对软件进行了分层详细设计。以此为 基础,成功将t s h 架构应用在具有s a a s 理念的企业信息化综合平台的开发工 作当中。实践证明,基于t h s 的轻量级j 2 e e 架构设计使系统层次更加清晰、 层间耦合更加松散。各层可独立开发,极大的提高了开发效率,满足了企业信 息化综合服务平台快速开发要求。 关键词:j 2 e e t a p e s t r ys p r i n g h i b e r n a t e 框架 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t s o f t w a r ea r c h i t e c t u r es u p p o r t se v e r ya s p e c to ft h ew h o l es y s t e ml i k eah u m a n s k e l e t o nd o e s t h ed e s i g no ft h es o f t w a r ea r c h i t e c t u r es h o u l dn o to n l ym a k et h e s y s t e mm o r es t a b l ea n de a s i e rt oe x p a n da n dm a i n t a i n b u ta l s oi m p r o v et h es y s t e m c o m p l e x i t y , s h o r t e nt h ed e v e l o p m e n tc y c l ea n dm e e tt h er e q u i r e m e n t so ff l e x i b i l i t y , s e c u r i t ya n dp r a c t i c a l i t y f r a m e w o r kt e c h n o l o g yi san e wa p p r o a c ht oi m p l e m e n t t h er e u s eo ft h es o 脚a r eo fl a r g es i z e w h i c hg r e a t l yi m p r o v e st h ee 衔c i e n c yo f s o f t w a r ed e v e l o p m e n t t h eg r o w i n ge m e r g e n c eo fi a v ao p e ns o u r c ef r a m e w o r k si s a c t i v e l yp r o m o t i n gt h ed e v e l o p m e n to fj 2 e et e c h n o l o g y t h es o f t w a r ea r c h i t e c t u r e b vi n t e g r a t i n go p e l ls o u r c ef r a m e w o r kc a nm e e tt h em a x i m u mr e q u i r e m e n t so ft h e r a p i dd e v e l o p m e n to fe n t e r p r i s ea p p l i c a t i o n t a p e s t r y , s p r i n ga n dh i b e r n a t ea l la r et h ee x c e l l e n tf r a m e w o r ki nj a v aw o r l d b yu s i n gt h ec o m p o n e n t o r i e n t e dd e v e l o p m e n tm o d e l ,t h et a p e s t r yh a sf u l l y r e a l i z e dt h eo b j e c t o r i e n t e dt e c h n o l o g yi nw e bt i e r a sal i g h t w e i g h ti o ca n da o p c o n t a i n e r ,t h es p r i n gc a l lr e d u c et h ec o u p l i n gd e g r e eo fi n t e r - o b j e c t s ,f a c i l i t a t eu n i t t e s t i n ga n da c h i e v et h ep u r p o s eo fi n t e g r a t i n gw i t ho t h e rf r a m e w o r k s a so n eo ft h e m o s to u t s t a n d i n g0 r mt 0 0 1 t h eh i b e r n a t ea l l o w sd e v e l o p e r st o m a n i p u l a t e d a t a b a s et h r o u g ho b j e c t o r i e n t e dt h i n k i n g ,s i g n i f i c a n t l yi m p r o v et h ee f f i c i e n c yo f t h ed a t ap e r s i s t e n c e f u l l yr e d u c et h ec o m p l e x i t yo fm a i n t a i n i n gd a t a a n dm a k et h e s y s t e mw i t hg o o dp e r f o r m a n c ea n dp o r t a b i l i t y i nt h i sp a p c r , t h ea u t h o rr e s e a r c h e dt h ek e yt e c h n o l o g i e so fa b o v e m e n t i o n e d f r a m e w o r k sa n dd e s i g n e dt h el i g h t w e i g h tt s ha r c h i t e c t u r e b yf i e l dr e s e a r c hb a s e d o nt h ed e m a n d so ft h ei n t e g r a t e ds e r v i c e sp l a t f o r mf o re n t e r p r i s ei n f o r m a t i o n ,t h e a u t h o ra n a l y z e dt h er o l e sf u n c t i o n s ,a n dd e s i g n e dt h ed a t a b a s ea n de v e r yt i e ro ft h e s o f t w a r e t h em o s ti m p o r t a n tt h i n gi st h ei m p l e m e n t a t i o no ft h ep l a t f o r m d e v e l o p m e n tb yu s i n ga b o v ed e s i g n i th a sb e e np r o v e db yp r a c t i c e t h a tt h e l i g h t w e i g h tt s ha r c h i t e c t u r em a k e st h et i e r sm o r ec l e a r l y , a c h i e v e st h ep u r p o s eo f l o o s i n gc o u p l ea n dg r e a t l yi m p r o v e st h ee f f i c i e n c yo f t h ed e v e l o p m e n t k e y w o r d s : j 2 e e t a p e s t r ys p r i n g h i b e r n a t ef r a m e w o r k 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所 得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均己在 文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 本学位论文的主要创新点如下: 1 通过对t a p e s t r y 、s p r i n g 、h i b e r n a t e 三种开源框架关键技术的研究,完 成了基于上述三种框架的轻量级t s h 架构设计; 2 通过t s h 架构在企业信息化综合服务平台中的成功运用,实现了w e b 表示层面向组件的开发、实现了系统模块之间和各层之间的松散耦合、 有效解决了对象关系阻抗不匹配等问题。 3 实践证明,t s h 架构能够很好的满足企业应用的快速开发要求,能够 有效提高系统稳定性、灵活性、安全性、可扩展性以及可维护性。 学位论文作者签名: 日期:删多,7 西南交通大学曲南父逋大字 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密彤使用本授权书。 ( 请在以上方框内打“4 ”) 心 碍 签硝, 师加 一叫 导期乜日丁一 阳耘 :1 名 签易 储吵 文坊 做抄 位期学日 西南交通大学硕士研究生学位论文第1 页 第1 章绪论 1 1 课题背景 中小企业信息化是中国“以信息化带动工业化”战略的重要组成部分。国 内中小企业( s m a l l m e d i u mb u s i n e s s :s m b ) 多达到4 2 0 0 万户,占企业总数9 9 以上f 1 】。大多数中小企业资金较少、企业内部网络建设薄弱、信息化专业人才 缺乏,使得中小企业独自承建信息化服务平台举步维艰。为了降低运营成本, 提高运营效率,多数中小企业不愿意花费大量金钱在软硬件、技术人员以及技 术维护上,他们更愿意以租赁的方式,通过互联网享受到相应的硬件、软件和 维护服务,以低廉的价格享有软件使用权和不断的升级服务。s a a s ( s o t t w a r ea s as e r v i c e :软件即服务) 定位于为中小企业提供在线信息化服务,能够满足中小 企业以低廉的价格方便地实现信息化的需要,同时也让商家看到了巨大的商业 机会。电信运营商在中小企业信息化市场中具有得天独厚的优势。电信运营商 可以依托自身品牌、产品、网络渠道和客户资源优势,通过中小企业信息化综 合服务平台的建设和运营,在中小企业和s a a s 服务提供商之间架起沟通的桥 梁,能够更好满足中小企业信息化需求。成都中科前程科技有限公司是中国联 通的战略合作伙伴,作为中国科学院软件所电子商务中心产业化基地,专业从 事电子商务平台的开发和系统集成,具有丰富的电信专业技术开发和系统集成 背景。企业信息化综合服务平台就是该公司针对中国联通量实际情况,面向中 小企业的信息化解决方案。 作为大型b 2 b ( b u s i n e s st ob u s i n e s s ) 电予商务解决方案,企业信息化综合 服务平台不仅要满足互联网模式下高并发、高负载的苛刻要求,还要解决电子 商务业务逻辑复杂、产品需求层出不穷与商务应用快速开发之间的矛盾。平台 在保证系统的稳定性、扩展性和可维护性的同时,还要兼顾灵活性、安全性和 实用性。因此,作为系统支撑的软件架构在企业信息化综合服务平台中显得尤 为重要。长期的软件工程实践使人们深刻的认识到系统总体结构设计和规格说 明的重要性己远远超过特定算法和数据结构的选择,良好的软件架构对保证系 西南交通大学硕士研究生学位论文第2 页 统的成功至关重要忙j 。软件架构的设计已经成为软件生命周期中最为重要的环 节之一。软件架构的建立是一个复杂而又持续改进的过程,面对企业信息化综 合服务平台复杂的业务逻辑和紧张的开发周期,我们没有足够的时间和资源自 行开发一套完整的平台。幸好j a v a 世界涌现出的众多优秀开源框架为企业信息 化综合服务平台的快速开发提供了宝贵的资源。面对j a v a 领域浩如烟海的开源 框架,我们应该如何优中选精,应该选择怎样的框架、以怎样的形式加以整合 集成才能最大限度的满足企业信息化综合服务平台建设的各项要求,这些都是 摆在平台软件设计人员面前的一道重要的研究课题。 1 2 作者的主要工作 本课题结合企业信息化综合服务平台的设计开发实践,以自身全程参与平 台建设需求分析、软件架构整合设计、产品开发等一系列相关工作为基础进行 课题研究。课题工作的主要包括以下两方面内容: 技术研究工作 对j 2 e e t 3 h 6 】技术现状、m v c 设计模式【7 】【引、w e b 框架技术、面向组件的开 发模式、控制反转依赖注入、面向方面的编程,对象持久化技术进行了详细研 究,以此为基础,对课题架构设计所涉及的三种框架( t a p e s 仃y 【9 1 、s p r i n g f l 0 】【1 l 】、 h i b e r n a t e l l 2 1 ) 的具体特性进行了较为洋细的剖析。上述理论研究工作为企业信 息化综合服务平台的设计和实现夯实了理论基础。 设计开发工作 基于上述研究工作,作者首先完成了基于t s h 的轻量级j 2 e e 架构总体设 计方案,结合企业信息化综合服务平台的实际业务需要,对平台进行了总体规 划、角色定义、功能模块分析、数据库设计以及对软件系统进行了分层详细设 计。最后将t s h 架构成功应用于企业信息化综合服务平台的开发实践当中。 在整个项目进行过程中,作者完成了权限管理、用户管理、服务管理、集团管 理、数据字典、计费结算等6 大模块的设计开发工作。 1 3 论文的组织结构 全文共分6 章。 第l 章绪论,对课题背景、作者研究和开发工作以及全文组织结构予以简 西南交通大学硕士研究生学位论文第3 页 要的介绍; 第2 章,对轻量级j 2 e e 架构所涉及的相关理论与技术原理进行较为深入 研究; 第3 章,结合第2 章技术基础,对t a p e s t r y 、s p r i n g 、h i b e r n a t e 三种开源 框架关键技术进行研究、探索各自应用配置方案、进行框架整合总体设计; 第4 章,根据企业信息化综合服务平台的业务需求,对平台进行总体规划、 对角色进行功能分析、进行业务流程和数据库设计以及软件系统分层详细设 计; 第5 章,将轻量级t s h 架构应用于企业信息化综合服务平台的开发实践, 对平台实现过程中的相关细节进行了深入剖析; 第6 章,对论文工作进行了全面总结,指出了课题研究过程中的存在问题 和不足,并为进一步的研究工作提出了建议。 西南交通大学硕士研究生学位论文第4 页 第2 章相关理论与技术原理 2 1j 2 e e 技术现状 j 2 e e ( j a v a2p l a t f o r me n t e r p r i s ee d i t i o n ) 是一系列技术和标准的集合,用于 创建大规模、分布式、基于组件的多层应用程序。j 2 e e 是基于分布式的多层 应用模型”】,传统的j 2 e e 体系结构图如图2 - 1 所示: 图2 - 1 传统的j 2 e e 体系结构 从上图可以看出,j 2 e e 应用系统分为客户层( c l i e n t t i e r ) 、w e b 表示层( w e b t i e r ) 和业务逻辑层( b u s i n e 鼯t i e r ) 和企业信息系统层( e n t e r p r i s ei n f o r m a t i o n s y s t e m st i e l - :e i st i e r ) 。其中,w e b 表示层和业务逻辑层组件运行在j 2 e e 应 用服务器上。在传统j 2 e e 架构中,业务逻辑层的e j b ( e n t e r p d s ej a v ab e a n ) 无 疑是其最为核心的部分。e j b 运行在e j b 容器之中,根据特性不同e j b 分为 会话b e a n ( s e s s i o nb e a n ) 、实体b e a n ( e n t i t yb e a n ) 、消息驱动b e a n ( m e s s a g e d r i v e nb e a n ) = 种类型。e j b 规范的初衷是简化应用代码。然而,事与愿违! 大量应用实践表明,e j b 从来就没有使开发变得更加容易,以e j b 为核心的 j 2 e e 架构常常由于不必要使用e i b 而造成了在概念、实现和部署上部有着不 可避免的复杂性。表2 - 1 列举了e j b 存在的严重问题【】4 ”】: 囵 ii:ie r 【li 囵 盈玉 西南交通大学硕士研究生学位论文第5 页 表2 - 1e i b 存在的严重问题 问题 描述 e i b 规范要求所有e j b 必须实现远程接口。即使e i b 本身运行 效率低下 在唰一个j v v l ( j a v a v i l a u a l m a c h i n e :j a v a 虚拟机) 中,远程接口 也需要通过网络来访问,凶此网络开销很大。 应用代码的运行必须依靠e j b 容器,造成使用大量入侵的a p i , 过度依赖第三方容器尽管j 2 e e 规范保证了e j b 实现与容器无关,但大型e j b 应用 的迁移工作仍然相当麻烦。 e j b 应用程序依赖于特定容器的特点,使得单元测试非常困难。 测试困难 开发人员须熟悉最终的部署平台,才能进行测试。由于不能有 效的进行单元测试,使得e j b 应用程序的开发变得更加繁重。 部署复杂 e j b 部署描述符相当复杂,极易出错。同时,须经精心的部署 e i b 应用才能达到较好的性能。 针对传统j 2 e e 架构的存在种种问题,越来越多的开发人员开始反思e j b 的复杂性,并提出一系列轻量级j 2 e e 设计思想。多年以来,许多专家和开源 组织付出了巨大的努力不断推动着轻量级j 2 e e 技术的进步。他们开发出一系 列轻量级的、灵活的框架,来替代传统的基于e j b 的j 2 e e 架构。图2 - 2 展示 了j 2 e e 分层结构中与各层相对应的部分轻量级应用开发框架: 目鱼曰 图2 - 2 基于j 2 e e 平台的轻量级框架 一般而言,轻量级具备以下两个方面的含义: 框架的核心是轻量的,体积小,是一种微内核结构,具有简化的编程模 型旨在消除与传统j 2 e e a p i 有关的不必要的复杂性和限制; 西南交通大学硕士研究生学位论文第6 页 不会强迫业务对象遵循特定平台专有的接口,允许在p o j o ( p l a i no l d j a v ao b j e c t :普通j a v a 对象) 中实现业务逻辑,这就意味着它具有松耦合其它 工具或组件的能力。 通过以上表述我们可以看出,轻量级框架是相对于传统以e j b 为核心的 j 2 e e 架构而言的。轻量级j 2 e e 架构“没有重复发明轮子【1 7 j ,仍然采用j 2 e e 规范的分层结构思想,它没有提出任何新的j 2 e e 规范,只是针对j 2 e e 分层结 构中的每一层,用一个轻量级的框架来实现,最终组成一个更加轻盈的j 2 e e 架 构【1 8 】【1 9 1 。轻量级j 2 e e 架构不考虑完整的j 2 e e 服务层次,对各个常用的服务 进行轻量级的封装,其最重要的目标是解耦合以使企业级的应用开发像组装机 器一样轻盈简便瞄叭。上述框架各有特点,根据j 2 e e 分层模型和业务需要,选 择不同层次上的框架加以组装可以开发出多种轻量级的j 2 e e 架构。目前,最 为流行的整合集成形式就是s s h ( s t r u t s + s p r i n g + h i b e m a t e ) 架构。 面对轻量级j 2 e e 架构的巨大冲击,e j b 也在反思中前进。j 2 e e 5 0 规范中 提出e j b 3 的目标是简化开发。随着e j b 3 技术的发展,对于大型企业应用以 及将来可能需要扩展的中小型应用来说,这也是一种十分值得推崇的技术。 2 2m v c 设计模式 m v c ( m o d e l v i e w c o n t r o l l e r :模型- 视图- 控制器) 设计模式是目前用得比 较多的一种设计模式,最早出现在s m a l l t a l k 中,后来广泛应用于j a v aw e b 应 用程序中f 2 1 】。它将w e b 应用分成三层:模型( m o d e l ) ,视图( v i e w ) ,控制器 ( c o n t r o l l e r ) 。m v c 设计模式结构如图2 3 所示: 2 - 3m v c 模式结构图 西南交通大学硕士研究生学位论文第7 页 m o d e l 模型是应用程序的主体部分,负责业务逻辑的处理以及业务规则的制定。 其本质上封装了包含对数据控制及修改的规则在内的数据和行为,提供了一套 查询、改变模型状态的方法。模型位于j 2 e e 架构的业务逻辑层,通常用服务 器端j a v a b e a n 或e j b 实现。 v i e w 视图是应用程序中负责生成用户界面的部分。视图代表用户交互界面,是 应用程序的外在表现。视图一般位于j 2 e e 架构的客户层和w e b 表示层,通常 用j s p s e r v e l e t s 实现。 c o n t r o l l e r 控制器是模型和视图的纽带,负责解释用户的输入并将其映射为模型的操 作,同时定义应用程序的行为,分派用户的请求并选择恰当的视图用于显示。 通过控制器将模型和视图连接起来,可以在模型和视图之间实现松耦散合。控 制器位于j 2 e e 架构w e b 表示层,通常用s e r v e l e t s 实现。 m v c 经常作为一种设计模式出现在各种讨论中,但实际上m v c 是结构模 式而非设计模式【2 2 】。m v c 模式与其它设计模式的关系密不可分,把m v c 模 式视作比设计模式粒度更大、层次更高的架构( 模式) 较为妥当。m v c 体现了 “分治 的思想,它将用户界面设计、流程控制和事务逻辑进行了分离,把界 面设计同数据操作完全隔离开来,使得整个开发设计清晰,给系统的测试及维 护带来了相当多的便利。在j 2 e e 企业应用开发中采用m v c 模式,能使软件 开发有章可循、结构清晰、缩短开发周期,同时,还能有效的改善软件系统的 性能,大大提高软件的可维护行与可扩展性。 2 3w e b 框架技术 在j 2 e e 体系中,应用m v c 模式进行w 曲应用开发比简单的j s p 开发要 复杂很多,其学习曲线长难以快速掌握。在开发过程中,开发人员必须以m v c 的方式重新思考和设计应用程序,原先只需一个简单的j s p 页面就能实现的功 能现在要变成多个步骤去设计和实现。因此,从某种意义上来说,开发中引入 m v c 设计模式会增加额外工作量。 框架技术作为一种重要的软件重用技术,是应用软件部分或整体的可重用 西南交通大学硕士研究生学位论文第8 页 设计。它规定了应用的体系结构,阐明了整个设计、协作构建之间的依赖关系, 责任分配和控制流程,表现为一组抽象类以及它们的实例之间的协作方法【2 引。 采用框架技术有利于整个系统结构的改善和流程的固定化,有利于提高系统的 可重用性和易维护性。对于大型、复杂的应用来说,采用己经开发和测试好的 框架进行二次开发,可以提高软件的生产效率、保证软件质量、能够比从头开 发取得更为显著的投资回报。因此,为了降低上述m v c 模式实现的复杂度, 可以在应用开发中采用基于m v c 模式的w e b 框架技术。目前,在开源的j a v a 领域,比较流行的w e b 框架有s t r u t s 、s p r i n gm v c 、w e b w o r k 、t a p e s t r y 、j s f 等。表2 2 列出了上述框架各自的优缺剧2 4 心】: 表2 - 2 各种框架性能比较 框架名称优点缺点 1 s t r u t s 业界“标准”,有很多成功案例,a c t i o n f o r m s 使用不便,无法进行单 标签库很优秀元测试 2 s p r i n gm v c易于与其他v i e w 框架( t i l e s ) 无缝 使用人数少,j s p 中代码量大,控制 集成,采用i o c 便于测试过于灵活,缺少一个共用控制器 3 w e b w o r k 结构简单,易于扩展、标签库易文档示例很少、客户端验证技术不 于定制,拦截器非常出色成熟 4 t a p e s t r y 基于组件、复用度高、开发高效、文档相对概念化、学习曲线较长 t m l 模板、拥有良好的开发社区 5 j s fj 2 e e 标准、易于开发、有丰富的j s p 标签差、技术不成熟、需要编辑 导航框较多的源文件 采用w e b 框架技术进行w e b 应用开发可以很好的提高开发效率、满足企 业应用快速开发的需要,其开发模式不外乎面向元素开发和面向组件开发两 种。所谓面向元素就是以u r l 为中心的开发方式。目前,绝大多数w e b 框架 采用的都是这种开发模式,上表1 3 项就是采用此种方法。在面向元素的开发 模式中,我们的思维是线性的【2 6 1 。作为应用开发真正核心的业务逻辑很容易由 于这种开发方式对u r l ( u n i f o r mr e s o u r c el o c a t o r ) 的过分关注而顾此失彼。很 多情况下,程序员对这些h t m l 元素属性的关注甚至超过了对应用程序业务 逻辑的关注。为了弥补上述开发方式的种种不足,近年来,在面向元素开发方 式基础上兴起了面向组件的开发模式。这种开发模式将应用程序分成若干个页 西南交通大学硕士研究生学位论文第9 页 面,而一个页面由若干组件所组成。面向组件开发方式的原理如图2 4 所示: 图2 - 4 面向组件开发方式的不恿 采用面向组件的开发模式进行w e b 应用开发,我们的思维是块状的、是面 向对象的思维方式 2 6 1 。我们不再关注s e r v l e t 底层实现,也不再过问u r l 的结 构;我们通过创建页面来构成应用程序,通过在页面中调用组件来实现页面功 能。我们不必关心页面如何通过u r l 跳转到另外一个页面,也不关心f o r m 表 单如何通过u r l 将数据包装在请求中提交到服务器端。面向组件的开发模式 有利于我们将注意力集中在页面逻辑实现上,有利于提高工作效率。因此,可 以认为面向组件的开发模式比面向元素的开发方式更加先进。表2 2 中的4 、5 两项均采用面向组件的w e b 框架技术。 2 4 轻量级容器技术 2 4 1 轻量级容器概述 容器( c o i n a i n e r ) 是一组提供一系列服务的管理器,只要符合容器的服务要 求( 规范) ,容器就可以使用容器范围内的管理服务。应用对象在容器里运行, 被容器管理。容器里包含的服务【2 7 】如表2 - 3 所示: 西南交通大学硕士研究生学位论文第l o 页 表2 3 容器提供的服务 服务 描述 生命周期管理 既然要管理运行的组件( 或程序片断) ,容器至少可以通过某种 方法在需要时候创建,不用的时候销毁它们。 查询定位管理器的主要工作是通过一定的策略( 通常用文件名称) 确定 需要调用哪个组件或者资源。 配置器提供静态配置策略。让用户可以控制服务的细节部分,如指 定资源在哪里等。 依赖解析如果组件之间存在关系,或者需要相互通讯等等。这就需要 分析出组件之间的依赖关系,动态管理。 程序片断不是单独就可以完成所有的计算,还需要和不同的 不同协议层的通讯支持系统( 平台) 进行通讯,如用j d b c 操作数据库、用r m i ( r e m o t e m e t h o di n v o c a t i o n ) 进行远程方法调用等。 扩展支持扩展服务不仅是容器需要的,也是任何软件需要的,如增加 安全策略等。 在j 2 e e 标准里,服务器端有w e b 容器和e j b 容器两种。轻量级容器是相 对于以e j b 为代表的重量级容器而言的。它不是接口的抽象,没有j 2 e e 概念 中的部署和移除,从本质上讲轻量级容器就是一个拥有i o c ( i n v e r s i o no f c o n t r o l :控制反转) 支持的b e a n 工厂。同时,轻量级容器还可以通过动态代理 和字节码增强技术提供a o p ( a s p e c to r i e n t e dp r o g r a m m i n g :面向方面的编程) 的支持。可以将轻量级容器看成是j 2 e e 容器概念的一种有力补充,其用法更 加灵活、适用的范围更广,开发、测试和管理比标准容器对象开发更加简单。 目前,轻量级容器在o p e ns o u r c e ( 开放源代码) 范围得到了广泛的认可。作为下 一代j 2 e e 构架的基础有着无法比拟的优势。当前已存在的轻量级容器框架, 绝大部分来自o p e ns o u r c e 社群,这为我们对该技术的了解降低了门槛。下面 两小节,我们将介绍轻量级容器中两个最重要的概念i o c 和a o p 的技术原理。 2 4 2 控制反转依赖注入 控制反转依赖注k ( d e p e n d e n c yi n j e c t i o n :d i ) 是轻量级容器技术中用来解 西南交通大学硕士研究生学位论文第1 1 页 决组件间依赖关系、配置及生命周期的一种设计模式实现技术。控制反转的实 际意义就是控制权由应用代码中转到外部容器,控制权的转移,即所谓反转口”。 控制反转使组件之间的依赖关系由i o c 容器在运行期决定,各个组件之间不存 在硬编码的关联,我们只需在配置文件中予以声明就可由容器去实现各种依赖 关系。这就是经典的h o l l y w o o d 原则“d o n tc a l l m e ,i l lc a l l y o u ”。 根据实现是否具有侵入性,控制反转分为依赖查找和依赖注入两种类型 1 2 9 】如图2 - 5 所示: 雷三型 鼋霎广喜 二二 鸯垂蠢 图2 - 5 控制反转的分类 依赖查找具有侵入性,对象中方法的实现与具体的容器或框架相关,通过 容器a p i 来查找相关的资源。依赖查找可由接口注a ( i n t e r f a e e 蜥e c t i o n ) 实现。 接口注入方式比较陈旧,其核心思想是借助接口将调用者与实现者分离。 依赖注入是非侵入性的,其最根本的原则是应用对象不需要负责查找它们 依赖的资源或协作对象,由容器管理对象之间的依赖关系。在轻量级容器技术 中广泛采用这种方式。依赖注入保证了对象中方法的实现与特定的容器或框架 的无关性。依赖注入可通过设值注入( s e t t e rl n j e c f i o n ) 或构造方法注入 ( c o n s t r a c t o r 圳e c t i o n ) 来实现。设置注入模式在实际开发中应用最为广泛,它利 用属性注a ( s e t t e r 方法1 的方式完成依赖注入,因此显得更为直观、更为自然。 然而,对属性显式的设置从一定程度上破坏了封装原则,且属性初始化的先后 顺序无法保证,会导致一些安全隐患、可能使得程序模块在容器内外的行为不 一致。构造方法注入通过构造函数完成依赖关系的设定,依赖关系通过类构造 函数建立,容器通过调用类的构造方法,将其所需的依赖关系注入其中。其优 势在于通过构造函数来强制依赖关系,生成的类在创建后就具备了所需的必要 西南交通大学硕士研究生学位论文第1 2 页 参数,保证了不会出现实例化不完全或无法使用的类。 依赖注入是实现控制反转的主要方式,它使得任何组件都能得到最大程度 的重用。依赖注入最根本的思想是将调用者与被调用者分离。依赖注入的目标 不是为软件系统带来更多的功能,而是为了提升组件重用的概率,并为系统搭 建一个灵活、可扩展的平台。依赖注入的意义是保留抽象接口,让组件 ( c o m p o n e n t ) 依赖于抽象接口,当组件要与其它实际的对象发生依赖关系时, 通过抽象接口来注入依赖的实际对象3 0 】口”。依赖注入的最大好处就是把对象生 成放在了x m l 里定义,如果程序开发人员需要更换一个实现子类将只需要修 改x m l 配置文件,显得十分方便。 2 4 3 面向方面的编程 分离关注点是软件设计的核心问题之一。通过将软件模块化,使每个模块 只关心一个问题,从而获得清晰、灵活的设计。面向对象技术从系统角度较好 的实现了关注点的分离。但是,我们还应该注意到,面向对象系统中存在诸多 类似同志记录、事务管理、身份验证这样的横切关注点,形成了交叉业务,如 图2 - 6 所示: z = = = = 刁, :2 z e z 2 2 2 2 2 7z = = = = = 7z = = = = 刁、 ,。, 。 图2 - 6 软件开发中的交叉业务示意图 对于多数模块都需要实现的交叉业务,如果让每个对象都去实现这些行为, 势必造成大量重复的代码、增加程序员编码的工作量并使他们感到枯燥乏味。 当系统中某项功能发生变化的时候,相关模块都要做相同的改动,给系统的维 西南交通大学硕士研究生学位论文第1 3 页 护带来了极大的不便。能否将这些横切关注点看成一个“切面 ,让所有对对 象的访问都经过这个切面呢? 作为面向对象技术的延续,面向方面编程能够较 好的解决上述问题。通过该技术可以将分散到多个模块的重复性业务逻辑功能 封装到一个模块当中,从而实现横切关注点的局部化【3 2 1 。 松散耦合是设计模式t 3 3 】【3 5j 孜孜不倦追求的目标,a o p 也可以看成是这一目 标的又一实现。面向方面的编程并不是要替代面向对象技术,而是o o p ( o b j e e t o r i e n t e dp r o g r a m m i n g :面向对象的编程) 概念最好的延伸与补充。a o p 针对业 务处理过程中的方面进行提取,面对的是处理过程中的某个步骤或阶段,以获 得逻辑过程中各部分之间低耦合性的隔离效果【3 6 l 【3 7 】。a o p 分为静态和动态两 种方式。静态方式以a s p e c t j 为代表,其特点是速度快、技术相对成熟,缺点 是比较复杂。该方式中方面在编译时应用。动态a o p 通过动态代理( d y n a m i c p r o x y ) 模式,在目标对象的方法调用前后插入相应处理代码。该方式中方面在 运行期应用。上述两种a o p 互为补充,组合使用效果更佳。a o p 还有一个重 要特性源码组成无关性。体现在具体设计中就是组件与应用代码无关,即 应用代码可以脱离a o p 组件独立编译。面向方面的编程涉及如下重要的概念 例【眇j ,如表2 4 所示: 表2 - 4 面向方面编程中的重要概念 概念名称概念描述 方面( a s p e c t ) 方面是要实现的交叉功能,是应用系统模块化的一个方面或领域。 连接点( j o i n p o i n t ) 应用程序执行过程中,插入方面的地方( 方法调用、异常抛出或 是要修改的字段) ,是a o p 的核心概念。 通失l ( a d v i c e )方面的实际实现,即某个连接点的处理逻辑。有胁吼d 、b e f o r e 、 a f t e r 、n w s 四种方式。 切入点( p o i n t c u t ) 引发通知的一系列连接点的集合。 引入( i n t r o d u c t i o n ) 为已存在的类添加新的方法和属性,可动态为业务类添加新的接 口的实现。 目标对象( t a r g e t ) 被通知的对象,可以是自定义类也可以是添加定制的第三方类。 代理( p r o x y ) 将通知应用到对象后创建的对象。 织入( w e a v i n g ) 将方面应用到目标对象以创建新的代理对象的过程。可在编译器、 类装载期或运行期完成。 西南交通大学硕士研究生学位论文第1 4 页 图2 7 展示了a o p 中部分关键概念的动态过程: 连援点 图2 7a o p 技术中关键概念的动态过程 a o p 主要有动态代理、动态字节码生成、j a v a 代码生成、使用定制的类加 载器、语言扩展等5 种实现策略。轻量级容器中通常使用前两种策略来实现面 向方面的编程。动态代理是实现a o p 最容易的方式。它是一种强大的语言结 构,可为一个或多个接口凭空的创建实现对象而不用预先定义这个实现类。该 方式只能针对接口进行代理,不能针对类进行。动态字节码生成能够为类提供 代理。c g l i b ( c o d eg e n e r a t i o nl i b r a r y ) 是实现该方式的有力工具。使用c g l i b 可动态为指定的类生成一个子类,覆盖其中的方法可实现方法拦截。该方式通 过继承来实现代理的,因而无法为f i n a l 方法提供代理。 2 5 对象持久化技术 面向对象是企业应用开发中的主流技术。内存中的对象寿命有限,要想永 久保存对象状态,需将对象持久化。与软件相关的持久化的常见定义是,使数 据的存活时间超过创建该数据的进程的存活时间。数据持久化后,可重新获得 它;如果外界进程没有修改它,它将与持久化之前相同【4 0 1 。简言之,数据持久 化就是将内存中的数据保存到磁盘加以“固化 。 我们知道,大多数企业应用数据都是依据关系模型被持久化在数据库之中 的。关系数据库为管理数据而设计,使用二维表来表示和存储关系数据。而面 向对象的应用是为业务问题建模而设计的。通常情况下,应用中的业务实体表 现为对象和关系数据两种形式,在内存中,表现为对象;在数据库中则表现为 西南交通大学硕士研究生学位论文第1 5 页 关系数据。内存中的对象间存在关联、继承等关系而数据库中的关系数据却无 法直接表达对象之间的各种关系。上述矛盾称为对象关系阻抗不匹配 ( o b j e c t r e l a t i o n a li m p e d a n c em i s m a t c h ) 。为了让对象模型与关系数据模型协同 工作,将对象持久化到关系数据库中,需要进行对象关系的映射( o b j e c t r e l a t i o n a lm a p p i n g :o r m ) 。 j a v a 发展初期,直接调用j d b c ( j a v ad a t a b a s ec o n n e c t i v i t y :j a v a 数据库连 接) 几乎是访问数据库的唯一手段。该方法运行效率高,但程序中嵌入了大量 s q l ( s t r u c t u r e dq u e r yl a n g u a g e :结构化查询语言) ,使应用系统便得难以维护。 随着设计思想和j a v a 技术本身的演化,人们逐渐认识到,在设计企业应用系统 时,可以抽象出一个相对独立的逻辑层面,专注于数据持久化逻辑的实现。人 们通过j d b c 编程将数据库访问的操作进行封装来实现持久化层,以便为上层 提供统一简洁的a p i 。这些j d b c 封装技术以优良的设计大大提高了持久层的 开发效率,通过对数据访问中各种资源和数据的缓存调度可实现良好的性能。 然而,面对非常复杂的关系数据模型,直接通过j d b c 编程来实现持久层需要 有非常专业的知识,对于一般程序员来说进行这样的开发就显得提襟见肘。实 践证明,企业应用开发人员花费大量的时间从头开发持久化层并不划算。在产 品开发中引入成熟的持久层框架将明显减少乏味的代码、带来更加面向对象的 设计、更好的性能以及更好的移植性。表2 5 归纳了对象关系映射实现持久化 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃利鸿新材料科技有限公司招聘33人笔试参考题库附带答案详解
- 2025湖南兴湘资产经营管理集团有限公司招聘11人笔试参考题库附带答案详解
- 2025浙江钱江生物化学股份有限公司招聘笔试及复审对象笔试参考题库附带答案详解
- 2025浙江温州市平阳县城发集团下属房开公司招聘项目制员工(9月27日)拟聘用(一)笔试参考题库附带答案详解
- 2025浙江嘉兴平湖市国有企业招聘拟录用人员(一)笔试参考题库附带答案详解
- 2026及未来5年中国2-甲氧基-5-硝基苯酚钠盐市场数据分析及竞争策略研究报告
- 四川九洲电器集团有限责任公司招聘天线工程师(校招)等岗位3人笔试历年备考题库附带答案详解
- 陕西省2025陕西省科学技术厅直属事业单位引进高层次人才招聘(2人)笔试历年参考题库典型考点附带答案详解
- 覃塘区2025广西贵港市覃塘区统计局招聘编外人员1人笔试历年参考题库典型考点附带答案详解
- 盘锦市2025年辽宁盘锦市市场监管事务服务中心(盘锦市消费者协会办公室)面向社会笔试历年参考题库典型考点附带答案详解
- 车间划线及颜色标准
- 济南版七年级生物下册期中试卷(含答案)
- DB33-T 2360-2021 彩色森林营建技术规程
- 急慢性肾小球肾炎病人的护理课件
- 人教版初中中考物理电学专题试题及答案详解
- 17G911 钢结构施工安全防护
- 招标控制价编制实例
- 骨关节炎药物治疗进展
- ISO-TS16949:质量管理体系中英文对照版
- GA 676-2007警用服饰刺绣软肩章
- 四川省成都市《综合应用能力测试》事业单位国考真题
评论
0/150
提交评论