已阅读5页,还剩80页未读, 继续免费阅读
(计算机应用技术专业论文)spring框架下web查询性能优化研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 w e b 技术是推动i n t e m e t 发展的重要里程碑。伴随着电子商务、电子政务以 及网上教育、个人博客的蓬勃发展,w e b 服务在社会政治经济生活中发挥着越 来越重要的作用。由于对网上服务依赖加深,w e b 服务器的负载与日俱增,如 何提升w e b 站点的响应特性就成为迫切而长期需要研究的课题。解决的途径一 方面是提高通信信道的吞吐量,另一方面就涉及到提高资源子网主要是w e b 服 务器的整体性能。本课题侧重研究后一方面的问题,课题研究的主要内容包括: 1 ) 在详细分析j 2 e e 三层架构的基础上,分析影响w e b 服务器响应性能的 主要因素和等待响应的原刚,探讨用于优化w e b 查询性能最新研究技术和产品: 2 ) 着重研究了在s p r i n g 框架下针对用户不同查询模式进行不同的拦截处 理,对于用户一次性浏览大量的数据,我们使用c o m p a s s 技术进行数据榆索; 对于用户查询单个数阶事情,我们使用缓存技术对数据进行缓存,并改j i fj4 基 于更新次数、查询移:i i 匕的缓存替换算法中的v a l u e 设定的方法,从而挝。:w e b 查询的效率; 3 ) 建立了实际j 2 e e 商务网站,对系统的查询性能进行了有针列j 勺测 试,并对测试结果做j 分析和讨论,通过测试的结果说明了该查询模型能有效 提高w e b 的查询性能; 本文对w e b 查询性能优化进行初步的探索,许多研究专题还有待今后进一 步拓展和深化。 关键词:s p r i n g 框架;c o m p a s s 技术;缓存技术;w e b 查询效率 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t w e bt e c h n o l o g yi sa ni m p o r t a n tm i l e s t o n ei ni n t e r n e td e v e l o p m e n t w i t ht h e d e v e l o p m e n to fe - c o m m e r c e ,e - g o v e r n m e n t ,o n l i n ee d u c a t i o na n dp e r s o n a lb l o g s , w e bs e r v i c ei sp l a y i n ga ni n c r e a s i n g l yi m p o r t a n tr o l ei nt h es o c i e t y , e c o n o m i ca n d p e r s o n a ll i f e b e c a u s ep e o p l em o r ea n dm o r ed e e p l yo nw e bs e r v i c e s h o w t o i m p r o v et h er e s p o n s ec h a r a c t e r i s t i c so f w e b s i t e sb e c o m e sak e yi s s u e o n es o l u t i o ni s t oi m p r o v et h et h r o u g h p u to fc o m m u n i c a t i o nc h a n n e l ,t h eo t h e ro n ei st oi m p r o v et h e p e r f o r m a n c eo fw e bs e r v e r t h i st h e s i sf o c u s e so np e r f o r m a n c er e s e a r c h ,t h em a i n w o r k si n c l u d e s : 1 ) d e e p l ya n a l y z et h et h r e e - l a y e rj 2 e ea r c h i t e c t u r e ,a n a l y z et h em a i nf a c t o r s w h i c hi m p a c tt h ew e bs e r v e r sr e s p o n s et i m e ,i n t r o d u c el a t e s tt e c h n o l o g i e sa n d p r o d u c t sw h i c h c a n o p t i m i zt h ew e bq u c r ) p e r f o r m a n c e ; 2 ) f o u c u so nh o wt ot r e a tt h eu s e r s i q u e s t sa c c o r d i n gt ot h eu s e rd i f f e r e n t r e q u e s tm o d e lu n d e rs p r i n gf r a m e w o r k i ,i s e r sr e q u e s tl a r g ea m o u n to fd a t aa to n e t i m e ,w eu s ec o m p a s st e c h n o l o g yf o rd a l r e t r i e v a l ,i fu s e rw a n tt og e td e t a i l so f i n d i v i d u a ld a t a ,w eu s et h ec a c h et e c h n o lo g y i m p r o v et h ew e bq u e r ye f f i c i e n c yb y i m p r o v i n gt h es e t t i n gc a c h ee l e m e n tv a l u ew h i c hb a s eo n t h eq u e r yt i m e sa v e r a g e u p d a t et i m e sc a c h ee l e m e n tr e p l a c ea l g o r i t h m ; 3 ) i n p l e m e n ta na c t u a lw e ba p p l i c a t i o na n dt e s tt h eq u e r yp e r f o r m a n c ef o rt h e s y s t e m ,a n a l y s i sa n dd i s c u s s i o nt h et e s tr e s u l t s ; o n l yp r e l i m i n a r ye x p l o r a t i o nf o rw e bq u e r yp e r f o r m a n c eh a sb e e nd o n ei nt h i s 西南交通大学硕士研究生学位论文第l li 页 t h e s i s ,m a n yr e s e a c h st o p i c sn e e dt ob ee x p a n d e di nf u t u r e k e yw o r d s :s p r i n gf r a m e w o r k ;c o m p a s st e c h n o l o g y ;c a c h et e c h n o l o g y ;w e b q u e r ye f f i c i e n c y 西南交通大学曲南父迥大罕 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位 论文。 本学位论文属于 1 保密口,在年解密后适用1r 仅书; 2 不保密西使用本授权书。 ( 请在以上方框内打“ ) 学位论文作者签名:昆 同期:加。件相j 日 指导老师签名: 嗍:叫 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作 所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 本学位论文的主要创新点如下: 论文针对w e b 用户常用的访问模式,提出了一种高效的分类查询模型。 该模型针对用户的不同的请求进行不同的处理,针对数据缓存项替换策略, 在对已有的算法进行了研究和分析的基础上,改进了基于更新次数、查询次 数比的缓存替换算法中的v a l u e 的确定方法。 名艮七艮 2 p ,罗口够幻 西南交通大学硕士研究生学位论文第1 页 1 1 研究背景与意义 第1 章绪论 人们一直对全球信息数据库这一概念存有梦想,希望足不出户就可以查 找到自己需要的信息,并且希望相关的信息实现互联,从而能迅速地查找到 更重要的数据。一方面现在我们终于有了在全球范围实现这一梦想的技术一 全球互联网( 简称w e b ) ,另一方面网站的数量也随着i n t e r n e t 的发展而极剧 增加,据中国互联网络信息中心( c n n i c ) 发布的中国互联网络发展状况统 计报告,中国的网站数量已经从1 9 9 8 年的1 5 0 0 个【1 】到2 0 0 8 年的1 5 0 万个i 引。 现在w e b 已经成为i n t e r n e t 上最具知名度、最受欢迎的一项应用,如同 早期的f r p 和g o p h e r 。它拥有自己的软件、协议和规范通过使用h t m l 语 言和多媒体技术,轻轻松松地在w e b 上畅游已不再是梦想。很多有关w e b 业务增长的研究都得出这样的结论:w e b 上的业务是以指数的速度在增长, 如图1 - 1 所示1 3 j ,纵坐标为业务量( m b ) , q ,由于纵坐标为对数坐标因而图 中的近似直线表明业务足以指数速度增长。n s f 提供的统计数据更加令人震 惊,1 9 9 2 年1 1 月n s f n e t 主干网的数据业务为2 8 g b 月,其中只有0 1 为 w e b 业务,到1 9 t ) 5 年3 月总业务量增长了2 0 0 倍,达到5 3 t b 月,i 面w e b 占了9 0 ,相当j 雠天上涨一番。 ,7 。 _ ,一 ,- , , 塞 垂 娶 釜鑫叁嚣塞鍪塞星垂娶塞窭銮叠量 图1 - 1w e b 业务增长趋势,以指数速度增长 由于每一个u r l 请求都需要一个单独的t c p 连接,而服务器需要对每 一个连接开辟一个新的线程进行处理,在处理的过程中,每个线程都要占用 曩l l l 鼍, r , l 西南交通大学硕士研究生学位论文第2 页 一定的资源,如内存、c p u 、带宽等,随着访问用户数的增加,这些资源的 占用也会大大增加,从而降低了服务器的性能。 相信每个曾浏览w w w 的人都有这样的经历:当打开某个u r l 后,接 下来也许是一段漫长而痛苦的等待,然后才看见请求的主页缓慢的出现在计 算机屏幕上。用户等待时间问题受诸多因素的影响,首先,w e b 服务器需要 花费一定时间去处理一个请求,显然在超负荷运转或磁盘速度比较慢时要花 更多的时间;其次,w e b 客户端程序( 浏览器) 如果不能快速的对取回的数 据进行分析并将结果显示在用户面前也会增加用户的等待时间;第三,数据 的传输时间与网络的带宽有关。第四:网络的延迟还取决于数据的传输延迟 ( p r o p a g a t i o nd e l a y ) 。网络上需要花费的时间我们自己是无法控制的,如果 能减少每次对服务器查询时间来提高w e b 查询性能的话,可以想象这必将提 高w e b 查询效率,本文主要从提高服务器查询效率和减少数据传输量两个方 面来提高用户w e b 查询性能。 1 2 国内外研究现状 为了提高用户的查询效率,目前的:作主要侧重于硬件技术和软件技术 两个方面。 1 2 1 硬件技术方面 1 s m p 系统 s m p ( s y m m e t r i c m u l t ip r o c e s s i n g ) 系统,这是一种多处理器系统,它是 由多个对称的处理器,通过总线j t z 的内存和i 0 部件所组成的计算机系统。 使用s m p 可以显著地提升w e b 服务器性能,通过提高服务器的计算能力来 减少每一次请求的查询时间。 2 集群技术 集群( c l u s t e r ) 技术是目前解决服务器超载问题和提高服务器性能的一 种有效方法,它是在一组计算机上运行相同的软件并虚拟成一台主机系统为 客户端与应用提供服务,从每个终端用户的角度来看,整个集群就像一个 w e b 服务器。w e b 服务器集群概念最早出现在美国u i u c ( u n i v e r s i t yo f i l l i n o i sa tu r b a n a - c h a m p a i g n ) 大学n c s a ( n a t i o n a lc e n t e rf o rs u p e r c o m p u t i n g 西南交通大学硕士研究生学位论文第3 页 a p p l i c a t i o n s ) 提出的一个原型系统“n c s a s c a l a b l ew 曲s e r v e rc l u s t e r ”中1 4 i 。 其后,伯克利的n o w ( n e t w o r ko fw o r k s t a t i o n s ) 小组、n s c 和c o l o r a d o 大学的h a r v e s t 小组、c i s c o 公司及i b m 公司也加入了研究行列,提出了许 多新概念和新方法,并取得了一些研究成果,其中典型的有c i s c o 的 l o c a l d i r e c t o r 和d i s t r i b u t e d d i r e c t o r 、i b m 的n e t w o r kd i s p a t c h e r 、h y d r a w e b 的h y d r a w e bd i s p a t c h e r 、r n d 的w e bs e r v e rd i r e c t o r 等。 现在w e b 服务器集群研究工作主要包括以下几个方面: 1 ) w e b 服务器集群体系结构 根据w e b 应用环境和计算的特点,从体系结构的角度研究可扩展、灵活、 高效的计算结构和模式,代表性的工作有r r d n s 、单前端节点和多前端 节点等结构。 2 ) 负载分配策略 针对w e b 应用环境下密集的负载量,研究对负载分配的策略和算法,合 理调度服务器资源,使集群中的服务器保持负载均衡,充分发挥集群的计算 能力,以获得优化的响应特性,代表性的工作有v i v e ks p a i 等人的 l a r d 、m i c h e l ec o l a ja n n i 等人的c a p 和l u d m i l ac h e r k a s o v a 的w a r d 和 f l e x 等。 3 ) 分配器交换技术 w e b 集群需要在前端系统与后端服务器间高速传输请求和结果页面。前 州系统作为集群的入口,需要接收所有的请求,i l 、处理能力和执行效率对整 个系统的性能至关重要。从网络体系结构的不同j 川欠研究w e b 请求内容的交 i 嗅模式对改善系统性能具有重要的意义。代表性i ,l :ji :作有i b m 的e n e t w o r k d i s p a t c h e r 和n e b r a s k a l i n c o l n 大学的l s m a c 臂 4 ) 访问持续性 w e b 应用的基础协议是h t t p ,它是一个无状态( s t a t e l e s s ) 协议,不同 的请求之间相互独立。而一些w e b 应用需要访问的持续性,例如电子商务应 用中要求整个交易过程的每个步骤保持在同一台服务器,以便在服务器端保 持会话( s e s s i o n ) 状态。这方面的研究主要有a r r o wp o i n t 的c o n t e n ts w i t c h 和 c i s c o 的l o c a l d i r e c t o r 等。 3 多数据源集成技术 多数据源集成技术,主要包括多数据库系统( m u l t i d a t a b a s es y s t e m ) 和 西南交通大学硕士研究生学位论文第4 页 联邦数据库系统( f e d e r a t e dd a t a b a s e ) i s l 。多数据源技术是上世纪九十年代 初兴起的一个数据库研究领域,多数据源集成技术能根据用户请求的地址找 到离用户最近的数据源,查询并返回数据给用户,多数据源集成技术能够减 少数据在网络上的传输时间,从而快速的返回用户访问的数据。 最初,该研究主要成果集中在惠普( h e w l e e t p a c k a r d ) 实验室数据库技 术部开发的p e g a s u s 模型,该模型是一个较早的多数据库系统,它能提供对 本地和外部自治数据库的访| i 司【6 7 j 。 后来美国密歇根迪尔伯恩大学( u n i v o fm i c h i g a n d e a r b o r n ) 的q i a n gz h u 和加拿大沃特卢大学( u n i v o fw a t e r l o o ) 的p e r a k el a r s o n 等以及i b m 多伦多 实验室和几所北美大学的研究者们合作开发的c o r d s 项目,该项目对数据 库中查询处理特别是查询优化做了较多的研究1 8 l 。 随后土耳其中东技术大学( m e t u ) 的a d o g a c ,eo z c a n 等在m i n d 项目 中研究开发了一个基于d e c0 b i e c tb r o k e r 的多数据库管理系统,使用 c o r b a 来处理系统级的异构性和分布性。与此同时,他们对查询也做了一 些有意义的研究,并提出了几种查询优化技术p j 。 另外,许多学者对多数据库系统中的很多问题提出了一些较有意义的思 想和方法。如w e n s y a nl i 等人给出了一种多数据库系统中的动态集成方 法,c h i a n gl e e 等人提出多数据库系统中考虑模式冲突的查询优化方法1 1 。 又如,为了解决两种模式集成是否有“实际意义 的判断问题,以及保证集 成模式与原始饪t l = 表问题,m b o u z e g h o u b 等人提出了基于模式 杓i 言的集成 方法,即当儿 义当两个模式上定义的规则以及模式断言之间不, 乍冲突时, 两个模式可以f j 戍,他还给出了模断言和规则的生成方法。 1 2 2 软件技术方面 1 预取技术 用户访问的网页可能具有连续性,也就是说用户访问了网页1 ,接着就 会访问网页2 ,因此,可以通过预取技术预测用户将要访问的网页,并 将这些网页事先存储在存取速度快的存储空间( 如缓存) 上,以次来减少查 询的时间,降低响应延迟。现在预取技术的研究主要集中在研究客户的访问 模式,而现在对用户的访问模式的研究又主要集中在通过对同志挖掘的研究, 从而更好地进行缓存管理和内容预取,从而来提高缓存命中率【1 1 】。 2 减少网络流量 西南交通大学硕士研究生学位论文第5 页 通过使用代理、压缩数据等方式来减少网络流量,降低对网络带宽的要 求,可以很好地改善w 曲服务的存取时间【1 21 3 1 。 3 缓存技术 把经常访问的数据放在缓存中,当数据请求不能在缓存中被满足时,再 转向主存储结构,这样,访问速度慢的主存储结构的次数大大减少从而减少 查询时间。现在国内外研究主要是研究缓存产品上,主要包括基于通用操作 系统l i n u x ,u n i x ,b s d 的s q u i d 产品以及国际、国内各主要i t 厂商推出的 w e b 缓存产品,比如c a c h e f l o w 公司推出的c a c h e f l o w 系列产品、c i s c o 推出 的c a c h e e n g i n e 系列产品、3 c o m 推出的w e b c a c h e 系列产品、i n t e l 推出的 n e t s t r u c t u r e 系列产品、联想推出的i c a c h e 系列产品、实达推出的s t a r - c s 系 列产品、s m a r tc a c h e 等产品,开源产品主要有j a v ac a c h n i gs y s t e m 以及 o s c a c h e 、e h c a c h e 等。在这些缓存产品中,主要研究包括下面几个方面【1 4 】: 1 ) 缓存系统的体系结构:主要研究怎么配置缓存代理的问题; 2 ) 代理缓存放置的位置:主要研究为了取得最好的性能,在哪放置代理 缓存; ? 3 ) 缓存内容:主要研究缓存中能够缓存什么,是文本、链接还是动态数 据; 4 ) 缓存共享与协作:主要研究在相互协作的缓存中,怎样共享缓存数据; 5 ) 缓存路由:主要研究怎t 孙角定在哪儿获取请求的对象; 6 ) 缓存的替换:主要研究绒f 乒的管理,哪个对象应该放置在缓存中,哪 个对象应该从缓存中删瞻; 7 ) 缓存的一致性:主要研久维持缓存中的数据与元数据保持一致等; 4 多查询技术 查询处理技术作为数据库的核心技术,长期以来一直倍受关注。所谓多 查询处理( m u t i p l eq u e r yp r o c e s s i n g ,简称m q p ) 就是以多个查询请求为输 入,对比进行优化,生成一个多查询执行策略( m u l t i s t r a t e g y ) ,执行时同时 完成对多个查询请求的计算f 1 5 l 。多查询技术能避免存取相同的页面,可以显 著提高查询性能。 西南交通大学硕士研究生学位论文第6 页 1 3 本文的主要贡献 论文在详细了解了提高w e b 查询性能的研究意义和目前国内外研究现状 的基础上主要做了以下工作 1 ) 分析影响w e b 服务器响应性能的主要因素和等待响应的原因,探讨 用于优化w e b 查询性能最新研究技术和产品; 2 ) 着重研究了在s p r i n g 框架下针对用户不同查询模式进行不同的拦截 处理,对于用户一次性浏览大量的数据,使用c o m p a s s 技术进行数据检索; 对于用户查询单个数据详情,我们使用缓存技术对数据进行缓存,并改进了 基于更新次数、查询次数比的缓存替换算法中的v a l u e 设定的方法,从而提 高w e b 的查询的效率; 3 ) 建立了实际的j 2 e e 商务网站,对系统的查询性能进行了有针对性的 测试,并对测试结果做了分析和讨论; 1 4 论文的章节结构 本课题首先介绍了w e b 服务的概念、体系结构和促进w e b 查询性能的 关键技术,同时对s p r i n g 框架做了相应研究工作。在对已有研究成果的深入 研究的基础之上,提出了一个适用于w e b 领域的高效的分类查询模型。具体 研究内容如下: 第一章:绪论,介绍课题的背景、研究的内择和意义、国内外研究现状。 第二章:介绍的三层架构和s p r i n g ,同时分f j i 了s p r i n g 的优点和为什么 本文要选择在s p r i n g 做研究工作。 第三章:结合第四章中使用的搜索引擎技术和缓存技术,详细的分析了 这两种技术。 第四章:分析三层架构的性能瓶颈,分析和改进了传统用户查询模式, 提出了一种新的分类查询模型,并介绍了该模型的体系结构、工作流程及实 现,并改进了该查询模型中基于更新次数和查询次数比的缓存替换算法。 第五章:把改进后的查询模型运用到真实的商务网站中,并利用该网站 进行测试,测试表明该查询模型可以很好提高网站的整体性能。 结束语部分总结论文的研究工作,肯定了该查询模型的有效性,接着分 析该方法存在的不足,并对不足提出了进一步的研究期望。 西南交通大学硕士研究生学位论文第7 页 第2 章w e b 三层架构与s p rin g 框架 2 1 基于j 2 e e 的三层架构 2 1 1j 2 e e 简介 j 2 e e 是s u no n e 的重量级产品,作为一种企业级w e b 应用程序开发技 术,j 2 e e 是目前在市场上得到了广泛应用的技术体系。j 2 e e 以j a v a 为核心 技术,更接近或者满足于互联网在智能化w e b 服务上对分布性、开放性和平 台无关性的要求,同时它在安全性、健壮性、组件化等方面也更为成熟稳定, 获得了众多i t 厂商如i b m 、o r a c l e 、b e a 等共同制定标准并提供技术支持, 因此具有强大的功能,是三层架构开发的首选平台。 j 2 e e 框架技术的优势在于: 1 ) 高效的开发。j 2 e e 的架构提高了代码的重用性,允许公司把一些通 用的、很繁琐的服务端任务交给中间件供应商去完成,这样开发人员i 叮以集 中精力在如何创建商业逻辑上,相应地缩短了开发时间。 2 ) 支持异构环境:j 2 e e 拥有多种厂家支持的不同平台,开发人员能够 通过开发部署存异构环境中的可移植程序在各种平台上运行,基于j 2 e e 的 应用程序不依赖任何特定操作系统、中间件、硬件,因此设计合珊的基于j 2 e e 的程序只需歹j :发一次就可以部署到各种平台。 3 ) 可用f ,i 稳定:在企业的生产运行中,一个服务器端平台必须全天候运 转以满足公司。苒户、合作伙伴的需要,j 2 e e 部署到可靠的操作纠:境中,它门 支持长期的可j 日性,这是实时性很强商业系统理想的选择。 4 ) 可伸缩性:随着企业的不断发展,系统平台无疑也需要小段更新,因 此企业必须要选择一种服务器平台,这种平台应能提供极佳的可伸缩性去满 足那些在它们系统上进行商业运作的大批新客户。基于j 2 e e 平台的应用程 序可被部署到各种操作系统上。j 2 e e 领域的供应商提供了更为广泛的负载平 衡策略,能消除系统中的瓶颈,允许多台服务器集成部署。 2 1 2j 2 e e 与三层架构 随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对 西南交通大学硕士研究生学位论文第8 页 封装、复用、扩展、移置等方面的要求,使得双层架构显得更加臃肿繁琐, 三层程序架构体系应运而生。所谓三层架构,是在客户服务之间加入了一个 ”中间层”,也叫组件层。它与客户层、服务器层共同构成了三层体系。这里 所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层 体系结构,也不是仅有b s 应用才有三层体系结构,三层是指逻辑上的三层。 通过引入中间层,将复杂的商业逻辑从传统的双层结构( c l i e n t s e r v e r ) 应用模 型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种 应用服务分别封装部署于应用服务器,同时增强了应用程序的可用性、安全 性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小 化,从而实现了便捷、高效、安全、稳定的企业级系统应用。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了 中间层进行处理。三层架构的处理方式是:业务逻辑分布到应用服务器上, 数据库上不再具有业务逻辑处理单元,而只负责基础业务数据的管理,主要 的计算任务由应用服务器完成,从而充分利用了应用服务器在并发处理和逻 辑计算方面的优势。另外,应用服务器还可以做集群的配制,即在物理上, 统一应用管理多台应用服务器对外部清求的分配和并行处理。这样,当计算 请求并发量巨大时,集群的多台应刚服务器之间可以动态的进行任务分配, 实现负载均衡,保证了系统性能不会因为大量并发用户的访问而急剧下降, 另外系统也同时具备了很好的f i ,扩展性和伸缩性,即在请求并发量增大或减 少时,可根据实际情况增加或减少应用服务器数量,以便在保证性能的前提 下,合理利用硬件资源,这些揶是两层结构所不具备的优点。 三层结构分为表示( p r e s e n l a t i o n ) 层,业务逻辑( 1 0 9 i c ) 层, 以及数 据存储( i n f r a s t r u c t u r e ) 层。如图2 1 所示 西南交通大学硕士研究生学位论文第9 页 图2 1 典型的三层架构 2 2s p r i n g 框架的组成模块 s p r i n g 是一个开源的项目,它是一个基于i o c 和a o p 架构的多层j 2 e e 系统的框架,是一个服务于所有层面的应用框架。 s p r i n g 框架由7 个模块组成,如果2 2 所示。从整体上看,这个模块提 供了开发企业级系统所需要的一切。并且,s p r i n g 使应用系统不必建立在整 个s p r i n g 框架之上,只需要选择适合本系统的模块,而不用附加其它多余的 模块。 曰 臣雪臣! 口 臣囝臣! 圈 图2 - 2s p r i n g 的组成模块 下面对这几个组成模块进行简要说明。 1 ) 核心容器 s p r i n g 框架中最基础、最重要的模块,s p r i n g 的所有模块都是建立在核 心容器之上的。这个模块中b e a n f a c t o r y 类是所有基于s p r i n g 框架系统的核 西南交通大学硕士研究生学位论文第1o 页 心,它采用工厂设计模式来实现i o c ,将系统的配置和依赖关系从代码中独 立出来。 2 ) a o p 模块 实现了a o p 联盟中定义的a o p 编程实现,s p r i n g a o p 模块对面向切面 开发提供了丰富的支持。s p r i n ga o p 模块还引入了m e t a d a t a 编程,这样使得 s p r i n g 能通过代码中了解在那里以及如何应用切面。 3 ) j d b c 和d a o 模块 提供了j d b c 抽象层,使得开发者不用再去编写r d b m s 交互、非业务 功能的j d b c 代码,数据库的代码变得简单明了,同时避免了因为释放数据 库资源失败而引起的问题。同时,这个模块在s p r i n g 中利用a o p 模块为系 统中的对象提供事物管理服务。 4 ) 为当前流行的o r 映射( o b j e c t r r e l a t i o n a lm a p p i n g ) 技术提供了集成。 s p r i n g 不想做重复的工作来实现自己的o r m 解决方案,而是为许多流行的 o r m 框架提供了钩子程序,比如h i b e r n a t e 、j d o 、i a t i s 。s p r i n g 的事务管 理支持所有这些o r m 框架以及j d b c 。 5 ) a p p l i c a t i o nc o n t e x t 模块 即s p r i n g 应用上下文模块,直接位于s p r i n g 核心模块之上。s p r i n g 上下 文模块除了继承了s p r i n g 核心模块的功能外,还添加了资源绑定、事件移植、 资源装载以及透明地转载上下文的功能。这种对j 2 e e 平台服务的抽象大大 地简化了w e b 应用和j 2 e e 应用的开发。 6 ) w e b 模块 w e b 上f j 文模块建立在应用上下文模块的基础之上,提供j 面向w e b 应 用集成的功能,包括对s t r u t s 、t a p e s t r y ,j s f 的继承支持。 7 ) m v c 框架 s p r i n g 提供了m v c ( m o d e l v i e w c o n r o l l e r ) 框架的实现,并且很容易 与其它m v c 框架( 如s t r u t s ,t a p e s t r y ) 集成。s p r i n g 的m v c 框架利用i o c 将控制逻辑和业务逻辑清晰的分离开来,在该框架中还可以使用s p r i n g 的其 它服务,如信息国际化和验证服务等。 西南交通大学硕士研究生学位论文第1 1 页 2 3s p r i n g 关键技术 2 3 1i n v e r s i o no fc o n t r o l ( i o c ) s p r i n g 是一个以l o c 原则为基础的轻量级框架。控制倒置是一个用于“基 于组件体系结构”的设计模式,它将“判断依赖关系”的职责移交给容器, 而不是由组件本身来判断彼此之间的依赖关系。当在s p r i n g 内实现容器时, 容器“轻量级”的方面就展现出来了:针对s p r i n g 开发的组件不需要任何外 部库,而且容器是轻量级的,它避免了e j b 容器那样重量级方案的主要缺点, 例如启动时间长、测试复杂、部署和配置困难等。 它的主要优点是: 一,因为组件不需要在运行时寻找合作者,所以可以简单的编写和维护。 在s p r i n g 的i o c 里,组件通过暴露j a v a b e a n 的s e t t e r 方法表达其依赖的其它 组件。这相当于e j b 通过j n d i 来查找,而e j b 查找需要开发人员编写代码。 二j 应用代码更容易测试。j a v a b e a n 属性是简单的,属于j a v a 核心的, 并且是容易测试的:仅编写一个包含j u n t 测试方法来创建和设置相关属性即 可。 三,大部分业务对象不依赖于l o c 容器的a p i 。这使得很容易重用代码, 且很容易使用对象。 四,i o c 是不同于传统容器( e j b ) 的体系结构,其应用代码最小程度地 依赖于容器。这意味着业务绀象可以潜在地被运行在不同的i o c 框架上,或 者在任何框架之外,而不需暌任何代码的改动。 2 3 2a s p e c to r i e n t e dp r o g r a m m i n g ( 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 ( a o p ) ,面向切面编程,是近来程序界的一个 热点。所谓切面,是指对象操作过程中的截面。比如应用开发中的用户权限 检查。只要是完整的应用,都少不了用户权限的检查模块,不管用户的身份 可以做什么,不可以做什么,均由这个模块加以判断,而这个模块调用的位 置通常也比较固定:用户发起请求之后,执行业务逻辑之前。针对权限检查 这个切面,如图2 3 所示: 西南交通大学硕士研究生学位论文第12 页 冈 l 件l 1 _ j 图2 3 a o p 功能效果图 切面的意义:假设我们实现了一个通用的权限检查模块,那么就可以在 这层切面上进行统一的集中式权限管理。而业务逻辑组件则无需关心权限这 方面的问题。也就是说,通过切面我们可以将系统中各层次上的问题隔离开 来,实现统一集约式处理。各切面只需要集中于自己领域内的逻辑实现。 2 3 3b e a n f a c t o r y o r g s p r i n g f r a m e w o r k b e a n s f a c t o r y 包及其子包提供了s p r i n gi o c 容器的基 础。b e a n f a c t o r y 接口通过一个中心配置仓库提供了一个按名获得b e a n 的方 法,免除了需要在不同地方使用单独的j a v a 对象而从实例配置文件读取配置 参数的不便。b e a n f a c t o r y 的职责是在需要的时候创建可用的实例。 1 ) b e a n f a c t o r y 的作用 由于o r g s p r i n g f r a m e w o r k b e a n s f a c t o r y b c a n f a c t o r y 是一个简单的接口, 它能被大量底层存储方法实现。你能够方便地实现你自己的b e a n f a c t o r y ,下 面介绍两个常用的定义: x m l b e a n f a c t o r y :可以解析简单直观的定义类和命名对象属性的x m l 结构。提供了d t d 来使编写更容易。 l i s t a b l e b e a n f a c t o r y i m p :提供了解析存放在属性文件中的b e a n 定义的 能力,并且通过编程创建b e a n f a c t o r i e s 。 b e a n f a c t o r y 扮演着s p r i n g 的核心角色,s p r i n g 利用b e a n f a c t o r y 来管理 和配置各种b e a n 。b e a n f a c t o r y 实际上是一个可以配置和管理任何j a v a 类的 内部接口,负担着初始化各种b e a n 和调用它们生命周期方法的重任。 x m l b e a n f a c t o r y 从x m l 文件中读取b e a n 的定义。当创建了一个b e a n f a c t o r y 西南交通大学硕士研究生学位论文第13 页 时,s p r i n g 就会验证每个b e a n 的配置。然后每个b e a n 的属性直到b e a n 创 建完成时才进行配置。单态b e a n 是在b e a n f a c t o r y 加载时就创建好,而其它 b e a n 则是根据需要进行创建。 2 ) b e a n 的存在形态 b e a n 通常以两种形态存在:s i n g l e t o n s ( 单态) 形式和p r o t o t y p e ( 原形) 形态。其中s i n g l e t o n s 形态是b e a n 的默认形态。 当b e a n 以s i n g l e t o n s 形态存在时b e a n f a c t o r y 只管理一个共享的实例。 所有对这个特定b e a n 的实例请求,都导致返回这个唯一b e a n 实例的引用。 当b e a n 以p r o t o t y p e 形态存在时,每次对这个b e a n 的实例请求都会导致 一个新实例的创建,当用户需要不受其他用户影响的对象或有类似的需求时, 这是一个比较理想的解决办法。 3 ) b e a n f a c t o r y 的实现 s p r i n g 已经提供了一组现成的b e a n f a c t o r y 实现。x m l b e a n f a c t o r y 类支 持x m l 文件中b e a n 的定义,其位于o r g s p r i n g f r a m e w o r k b e a n s f a c t o r y x m l 包中。x m l b e a n f a c t o r y 提供了在x m l 文件中指定b e a n 定义的能力。s p r i n g 提供了相应的d t d ,使效验b e a n 定义x m l 文件合法性的工作变得简单些。 s p r i n gx m lb e a n 定义文档的根元素是 。 元素可以包含一 个或多个b e a n 定义。我们通常指定每个b e a n 定义的类和属性,同时我们也 必须指定b e a n 的名字i d ,在代码中我们将以这个i d 为名字使用这个b e a n 。 前面提到的仞始化方法和析构方法都可以指定为 的a l t r i b u t e s 。自动装 配功能和依赖检查也可以作为a t t r i b u t e s 在同一元素中指定。此外,属性及合 作者可以被指定为嵌套 元素。 2 3 4c o n t e x t 包 c o n t e x t 包提供了管理和操作b e a n 的一般能力,在应用程序中扮演了一 个对象注册表的角色。c o n t e x t 包的基础是o r g s p r i n g w o r k c o n t e x t 。 a p p l i c a t i o n c o n t e x t 接口,提供了国际化、事件处理及b e a n s 在c o n t e x t 中的自查能力。它可创建具有层次结构的c o n t e x t 环境,将b e a n 的作用域和 可访问区域限制在应用程序的一个特定部分中。 a p p l i c a t i o n c o n t e x t 包括了b e a n f a c t o r y 的所有的功能,可以使用 x m l b e a n f a c o t r y 定制b e a n 并且通过指定名字或者l d 查找b e a n 。对于 b e a n f a c o t r y 提供给用户所有的特征,包括生命周期接口、初始化方法、析构 西南交通大学硕士研究生学位论文第1 4 页 方法、依赖关系检测及自动化装配等,a p p l i c a t i o n c o n t e x t 也同样提供。 2 4 本论文使用s p r i n g 框架的原因 首先,s p r i n g 不仅能像一般框架那样能有效的组织你中间层的对象,用 统一的方法来处理系统中所有的配置文件,而且s p r i n g 为数据存取提供了一 个一致的框架,不论使用的是j d b c 还是o rm a p p i n g 产品( 如h i b e r n a t e ) 。 更重要的是,s p r i n g 框架提供了对其它很多技术的支持,我们只需要把 该技术以b e a n 的形式注入到我们的b e a n f a c t o r y 中,而不必花费大量的时间 去调用和实现该技术。在本文中,笔者使用的s c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合法的合同补充协议书
- 吊篮安装租赁合同范本
- 同安电车买卖合同范本
- 探索新颖学习方法
- 双方众筹买房合同范本
- 合作建设学校合同范本
- 医疗器械租借合同范本
- 医院岗位聘用合同范本
- 合同中的谅解备忘协议
- 合同诈骗提前终止协议
- 餐饮防火安全知识培训课件
- YY 0780-2025中医器械电针治疗仪
- 新教材【人音版】八年级上册第三单元《化蝶》教案
- 英语考级-a级词汇完整版
- 水电站空气围带更换检修工艺及方案
- 药物外渗的预防与处理
- 青少年社会工作
- 工作价值观测试(WVI量表) 完整版
- 医疗机构消毒技术规范(2023年版)
- GB/T 6672-2001塑料薄膜和薄片厚度测定机械测量法
- Unit 4 Understanding ideas (Click for a friend) 公开课课件【知识建构+备课精研】高中英语外研版(2019)必修第一册
评论
0/150
提交评论