已阅读5页,还剩48页未读, 继续免费阅读
(计算机应用技术专业论文)基于j2ee的企业级应用开发技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 = = = = = = = = ;= = = = = = = = = = = = = = ;= = = 一 摘要 在基于w e b 的应用系统逐渐成为主流的今天,企业级应用需要处理的数据量越 来越大,大量历史数据的查找工作对应用系统的性能提出了挑战。我们设计并实现了 一种改进的大数据量访问设计模式索引列表处理器模式。采用该模式执行大数据 量数据库查询时,首先根据客户端提供的检索条件,查询记录的关键字,将查询结果 缓存在服务器端,在客户端的后续查询中,根据符合客户端请求的关键字对数据库进 行查询。实验结果表明,该模式具有比现有的分页迭代模式和值列表处理器模式更短 的响应时间和更好的伸缩性。 x m l 在数据显示、描述与交换等方面表现出强大的能力。在j 2 e e 平台中,有多 种方法提供了对x m l 技术的支持,但是,在实际应用中它们各有弊端。我们设计并 实现的x m l 值对象适配器能完成x m l 数据和值对象数据之间的直接转换。它主要 采用动态映射的方法,获得值对象的属性名、属性类型以及属性值。它用这些信息提 取值对象中的数据,将这些数据转换成x m l 数据的形式。它还能报据属性信息,通 过d o m 方法对x m l 数据进行获取,将数据封装到值对象中。, 我们在1 2 量曼垩台上采用! ! 曼曼夔茎设计并实现了一个业务管理系统。该系统在表 示层使用了模型视图控制模式,在业务层使用了会话外观、消息外观和数据访问对象 等多种模式。其中,针对大数据量访问的问题和提供x m l 撞盔支持的问题,分别采 用了索引列表处理器模式和x m l 值对象适配器技术。 。 关键词:数据库:模式:适配器:值对象 华中科技大学硕士学位论文 a b s t r a c t a sa p p l i c a t i o nb a s i n go nw e bb e c o m e st h em a i nc u r r e n c y , t h ea m o u n to fd a t at h a t e n t e r p r i s ea p p l i c a t i o nh a n d l eb e c o m e sl a r g e ra n dl a r g e r i ti sac h a l l e n g ef o ra na p p l i c a t i o n t ok e e pg o o dp e r f o r m a n c eu n d e rm a s sh i s t o r i c a ld a t as e a r c h i n g 。w ed e s i g na n di m p l e m e n t t h e d e s i g np a t t e r n f o rm a s sd a t aa c c e s s - - i n d e xl i s th a n d l e r p a t t e r n a sak i n do f i m p r o v e m e n t w h e ni m p l e m e n t a t i o no f t h ed e s i g np a t t e md o e sm a s sd a t aa c c e s s ,i tp i c k s o u tt h ek e yw o r d so ft h er e c o 戚sa c c o r d i n gt ot h ec u s t o m e r s r e q u e s t ,a n dt h e ns a v e st h e m o nt h es e r v e rs i d e a tf o l l o wq u e r i e s ,i ts e a r c h e sd a t a b a s ea c c o r d i n gt ok e yw o r d sw h i c h m e e tr e q u e s to ft h ec 黼t o m e lt h ee x p e r i m e n tr e s u l te x p r e s s e s ,t h ed e s i g np a t t e r nh a s s h o r t e rr e s p o n s et i m ea n db e t t e rf l e x i b i l i t yt h a nb o t hp a g eb yp a g ei t e r a t o rp a t t e r na n d v a l u el i s th a n d l e r p a t t e r n x m lh a san o t a b l ea b i l i t yi nd a t ad i s p l a y , d e s c r i p t i o na n de x c h a n g e 。i nj 2 e e ,m a n y m e t h o d sa r ep r o v i d e dt og i v es u p p o r tf o rx m l t e c h n i q u e b u te a c hh a sd i s a d v a n t a g e si n p r a c t i c e w ed e s i g na n di m p l e m e n tt h ex m l - v a l u eo b j e c ta d a p t e r i tc a na c c o m p l i s ht h e t r a n s f o r m a t i o nb e t w e e nt h ex m ld a t aa n dt h ev a l u eo b j e c td a t ad i r e c t l y 。i tu s e sd y n a m i c r e f l e c t i o nt og a i ni n f o r m a t i o na b o u ta t t r i b u t e so ft h ev a l u eo b j e c t ,s u c ha sn a m e ,t y p ea n d v a l u ee t c w i t ht h o s ei n f o r m a t i o n ,i tc a n g e td a t af r o m av a l u eo b j e c t i n s t a n c e ,a n dc h a n g e s t h e ni n t ox m lf o r m i ta l s oc a l l g e tx m l d a t ab yd o m a c c o r d i n gt ot h o s ea t t r i b u 船 i n f o r m a t i o n ,a n dt h e nw r a pd a t at oav a l u eo b j e c ti n s t a n c e o nj 2 e ep l a t f o r m ,w e d e s i g na n di m p l e m e n tt h er o u t o nb u s i n e s sm a n a g e m e n t s y s t e mf o rs o l o r a i s m o d e l v i e w - c o n t r o l l e rp a t t e r nw a su s e da tt h es y s t e m sp r e s e n t a t i o n t i e r a tb u s i n e s st i e r , s e s s i o nf a c a d ep a t t e r n ,m e s s a g ef a c a d ep a t t e r na n dd a t aa c c e s s p a t t e r nw e r eu s e d e s p e c i a l l y , a i ma tp r o b l e m so fm a s sd a t aa c c e s sa n do f f e r i n gt e c h n i c a l s u p p o r tf o rx m l ,t h es y s t e mu s e di n d e xl i s th a n d l e rp a t t e r na n dx m l - v a l u eo b j e c t a d a p t e r k e yw o r d s :d a t a b a s e ;p a t t e r n ;a d a p t e r ;v a l u eo b j e c t l l 华中科技大学硕士学位论文 := = = = = = = = = = = = = = = = = = ;= = = ;= = = = = = = = ; 1 绪论 1 1 课题背景 在竞争激烈的信息时代,现代企业级应用开发往往面临这样的挑战:竞争导致应 用系统的不断变化,原先的系统需要不断升级与维护;企业需要快速地开发和发布新 的应用系统【l 】:信息时代的发展要求企业提供完善的w e b 服务;越来越多的系统是分 布式的,信息访问的难度大大增加。面对这些需求,企业开发一个新的系统必须考虑 跨平台能力、快速开发能力、可重用、可扩展、分布式、可维护、安全、可靠性等因 素【2 1 。j a v a2 平台企业版( j 2 e e ) 正是在这样的应用背景下由美国s u n 公司引导, 各厂商共同发起而建立的工业标准。与传统的i n t e r n e t 应用程序模型相比,j 2 e e 有着 不可比拟的优势,因而在厂商与开发者中倍受推崇p j 。 现今社会是信息的社会,每个企业要处理的数据量也越来越大,对数据管理方法 的要求也越来越高,尤其在企业的现代化管理中,基于w e b 的应用系统正逐渐成为 主流,在这种方式下,对大量历史数据的查找速度是衡量系统可靠性和方便性的重要 因素 4 1 ,它对应用系统的性能提出了挑战。对于应用系统处理大数据量访问的速度和 性能问题,可以从多个方面进行解决和完善,如在编程时采用平台提供的优化查询的 对象,在数据库方面也有一些完善的理论和方法【5 l 。随着j 2 e e 架构在企业信息系统 的应用越来越广泛,从完善j 2 e e 设计模式的角度,充分利用j 2 e e 的优越性来解决该 问题也不失为一个好的办法。 作为一种元标记语言,x m l 在数据显示、描述与交换等方面表现出强大的能力。 为了扩充j 2 e e 架构的应用范围以及弥补原先j 2 e e 架构在w e b 表示和数据描述等方 面的欠缺,s u n 公司将x m l 技术引入j 2 e e 架构模型中。在j 2 e e 架构中访问或集成 x m l 的解决方案,将强大的系统架构同高度灵活的数据管理方案结合了起来1 6 1 。x m l 在j 2 e e 架构上的应用大致分为:简单数据的描述和交换、面向消息的计算和用可扩 展性样式表语言x s l 描述用户界面 。这几类应用在j 2 e e 架构中恰好有对应。其中, 数据描述和交换的功能正好由j 2 e e 架构中的中间层提供,x m l 技术可应用于该层与 客户端的交互,即应用于服务器向客户端返回数据的描述。在这种应用中,采用何种 技术来支持对x m l 的使用将对应用系统的开发效率产生较大影响。 _ _ - _ - _ _ - - _ - 一 华中科技大学硕士学位论文 总之,使用j 2 e e 作为应用开发平台已成为目前企业信息系统建设的主流。而 将更多的x m l 技术引入j 2 e e 中是j 2 e e 发展的一个重要方向【引。对j 2 e e 平台中的 技术作研究和改进,解决企业级应用中普遍存在的大数据量访问问题,以及j 2 e e 与 x m l 技术结合的问题,将对基于j 2 e e 的企业级应用产生有利影响。 1 2 国内外概况 1 2 1 企业级应用开发平台简介 近年来,随着i n t e m e t i n t r a n e t 的飞速发展,新一代的开发平台不断推出。s u n 的 j 2 e e 和微软的n e t 开发平台是目前应用开发平台中的两大阵营。 j 2 e e 是一种技术规范,它给开发人员提供了一种工作平台,它定义了标准的应 用开发体系结构和部署环境,在这个体系结构中,应用开发者的注意力集中在封装商 业逻辑和商业规则上,一切与基础结构服务相关的问题以及底层分配问题都由应用程 序容器或者服务器来处理。从属于事务、持久化、安全等方面的应用组件的运行时的 属性都可以使用高度灵活的声明方法在部署环境中定制。这个平台提供一个简化的开 发模型,它具有工业强度的可拓展性,支持合理的集成和灵活的部署,与开发商和应 用服务器无关【9 】。 m i c r o s o f t n e t 是由多种技术组成的产品,使得软件开发者能够构建基于网络的 分布式系统。整个系统是由组件组成,这些组件可以由不同的语言开发,或是由不同 的企业提供。n e t 框架包括基本的运行库、用户接口库、c l r 、c # 、c + + 、v b n e t 、 j s c r i p t n e t 、a s e n e t 以及n e t 框架a p i 的各个方面。它由以下三个部分组成: ( 1 ) n e t 平台:包括构建n e t 服务和n e t 软件的工具和基础框架: ( 2 ) n e t 产品和服务:包括基于m i c r o s o f t n e t 的企业服务器f 如b i z t a l ks e r v e r 2 0 0 2 和s q l s e r v e r2 0 0 0 ,对n e t 框架提供支持) : ( 3 ) 第三方软件开发商提供的n e t 服务:构建在n e t 平台上的第三方服务。 1 2 2 两种企业级应用开发平台的比较 ( 1 ) 生产效率 在项目的开发中时间永远是紧迫的。以当今的应用系统开发而言,数个月的时间 已经算很漫长了,错失任何一个切入市场的机会都意味着企业要花费更多的时问去追 2 华中科技大学硕士学位论文 赶,而能够有效缩短切入市场时间的方法之一就是选择能够快速开发应用系统的平 台。 为加快切入市场的速度,j 2 e e 为应用软件提供了多种服务。例如,状态管理服 务可以使开发者减少代码的编写量,不必对状态进行管理,加快了应用开发的速度: 利用持久性服务,开发者不必编写数据库访问代码,只需集中考虑纯粹的业务逻辑, 这种数据库独立性使得程序更容易开发和维护;定制的j s p 标签库功能强大,有利于 大型项目的分工合作1 0 1 。 n e t 也拥有一些特性。a s p n e t 是与客户端设备无关的技术。同j 2 e e 相似n e t 拥有消息队列的组件。n e t 还提供了一些j 2 e e 的实现中提供的业务过程管理和支持 电子商务的能力。但是,n e t 具备的特性不及j 2 e e 的全面。 总之,j 2 e e 和n e t 提供的加速应用系统的开发能力是不可等同的,j 2 e e 比n e t 要更为完善。 ( 2 ) 对语言的支持 j 2 e e 体系结构建立在j a v a 语言的基础之上。所以只能用j a v a 语言开发基于j 2 e e 的应用。 n e t 能够支持多种开发语言,如v b n e t 、c # 、c + + 、j s c r i p t 、c + + 等,它们都 被编译成相同的中间代码,由称为c o m m o nl a n g u a g er u n t i m e ( c l r ) 的虚拟机来运 行。但是,开发者使用多种语言来开发一个应用系统的可能性是值得怀疑的。并且, 使用多种语言来开发应用,会增加维护的困难,阻碍了不同语言程序员之间的沟遘以 及技术的交流。所以,在绝大多数的应用开发中,使用单一的语言进行开发会更好一 些。 因此,在对语占的支持方面,n e t 没有拥有比j 2 e e 更多的实际优势。 ( 3 ) 平台的成熟度 j 2 e e 已经被证明是一个稳定的、可扩展的、成熟的平台。已有大量企业在j 2 e e 平台上成功地开发了企业级应用解决方案。由于j 2 e e 是一个开放性的标准,多家公 司已经构建了基于该平台的工具、产品和各种应用,如i b m 、o r a c l e 、b e a 和i p l a n e t 公司等等,这些供应商相互竞争,使得j 2 e e 技术同臻成熟,他们共同起到的推动作 用比任何单个供应商的作用的总和还要多。 1 华中科技大学硕士学位论文 与j 2 e e 相比n e t 仍然相对较新,它提供企业级应用框架的能力需要被证 明。n e t 在继承旧有的技术上做得不是很优秀,如v b n e t 很难兼容以前的v b6 0 的代码,大量的v b 代码无法顺利升级到n e t 下。另外,n e t 平台的所有工具、服 务器和技术都是由微软掌控。没有竞争,技术的提供和推动也许不会是最好的。 由此看出,j 2 e e 是比n e t 更为成熟的平台,采用j 2 e e 作为应用系统的开发平 台,所承担的风险比使用n e t 更小。 ( 4 ) 跨平台性 跨平台的特性是j 2 e e 和n e t 最基本的分别。 j 2 e e 平台的基础是j a v a 技术。j a v a 技术从本质上说是一个可移植的面向对象的 环境】。用j a v a 编写的源代码被编译成字节码,字节码是与平台无关的介于机器语 言和源代码之间的代码,这使得j a v a 具有跨平台的特性。在运行时,这些字节码 由j a v a 运行环境( j r e ) 进行解释和执行。j 2 e e 是j a v a 语言的一种应用,所以在j 2 e e 匕开发的代码只需开发一次就可在任意平台上发布运行【”1 。基于j 2 e e 的应用可以在 不同的操作系统,不同的机器硬件上运行,比如可被部署到高端u n i x 与大型机系统, 这种系统单机可支持6 4 至2 5 6 个处理器。不仅如此,j 2 e e 作为一种标准,定义了 标准的a p i ,支持多种的实现,如b e a 、i b m 和s u n 对该标准的实现,扩展了j 2 e e 应用程序的跨平台的特性。所以j 2 e e 应用能够在任何与j 2 e e 标准兼容的应用服 务器上运行,而不需要对代码作任何的修改或者只是对配置文件作修改。 n e t 只能在w i n d o w s 平台上运行。虽然n e t 也提供了跨平台的可能,但是,实 际情况是有待证明的。 ( 5 ) 性能比较 应用系统的瓶颈主要在后台的数据库系统。因为,大多数的企业应用是数据驱动 系统,拥有比业务逻辑更多的数据逻辑。所以,降低数据库负载将会提高应用系统的 性能。 j 2 e e 使用两种策略来降低数据库负载:有状态业务处理,将业务处理状态写入 内存,而不是写到数据库中:长期缓存,将数据库数据长期缓存在服务器端,而不用 在每次客户端请求时重复地向数据库读取。但是微软的n e t 没有提供这些提高性能 的策略。 4 华中科技大学硕士学位论文 ( 6 、结论 总之,j 2 e e 与n e t 各有千秋。n e t 的开发策略与j 2 e e 的开发策略极为相似【l “。 它们都使用面向对象的语言来加快开发速度,它们都拥有各种服务使得开发者能方便 地进行开发,它们都在各自的环境中嵌入了w e b 服务协议,使得将已有的系统包装 成支持w e b 服务的系统的过程变得更为简单】。但是。从平台的成熟度、可移植性以 及产品的多样性等方面来衡量,j 2 e e 优越于,n e t 平台,j 2 e e 已经经过近些年市场上 众多企业用户的实际检验,它是一个成熟稳定、低风险、而且自由开放的好选择。 1 2 3j 2 e e 企业级应用开发的若干关键技术 ( 1 ) 现有的大数据量访问模式 在2 0 世纪7 0 年代,c h r i s t o p h e ra l e x a n d e r 发表了很多关于工程和建筑模式方面 的书籍。随后,软件行业逐渐接纳了这种最初建立于工程和建筑模式方面的思想。模 式用来描述所交流的问题及其解决方案。简单地说,模式可以帮助我们在一个特定的 环境里整理并记录已知的可重现的问题及其解决方案,并且通过模式来与他人交流这 些知识。模式的目标就是提倡随着时间的推移在概念上进行重用。 j 2 e e 模式是由s u n j a v ac e n t e r ( s j c ) 机构于2 0 0 0 年7 月在j a v ao n e 大会上首次提 出的。它是对设计和开发j 2 e e 平台的各种系统中出现的共性问题的标准化解决方案, 能够帮助开发者和供应商构建j 2 e e 应用系统框架【1 8 ”】。这些方案源于世界范围内的 资深设计师的经验积累,并被证实是可行的,在多数情况下是可重用的【2 0 】。 在大多数j 2 e e 的应用中会涉及对大量数据的查询。有些情况下,查询操作得到 的结果集非常大。是将所有的结果都返回给客户端还是只返回一部分呢? 这个问题的 回答将会对应用系统的性能产生较大的影响,因为大数据量的传输会大大增加网络的 负载。并且会增大客户端内存的使用量。通常,客户端只查看几个匹配的记录,然后 会抛弃其它记录。并开始一个新的查询。显然,将所有的记录集返回给客户端不仅代 价过高,而且没有必要。针对大数据量的查询问题,j 2 e e 模式提供了分页迭代模式 和值列表处理器模式【2 0 】。 分页迭代模式主要思想是每次只将查询结果集的一部分返回给客户端,该子集的 起始位置和大小由客户端来指定。该模式在全部的结果集中,从指定的位置取出指定 数目的记录子集返回给客户端。这些是在业务层完成的,如果业务层使用企业b e a l l e 华中科技大学硕士学位论文 来进行大数据量的查询,系统的性能也会因此而降低,因为企业b e a n 容器会为企业 b e a n 提供一些附加的服务,执行这些服务将牺牲应用系统的性能。所以,分页迭代 模式有一个改进版本。在业务层对数据库的访问不再通过企业b e a n ,而是通过数据 访问对象来访问数据库。该模式由分页控制部分和数据访问部分组成。分页控制部分 主要是遍历结果集,记录下符合要求的结果并返回给客户端。数据访问部分承担访问 数据库和执行查询的工作。在每次客户端请求后都会重新查询数据库。这种方式会引 起数据库的重复查询,增加数据库的工作量。 对于大数据量访问的解决方案,还有另外一种设计模式值列表处理器模式。 不同于分页迭代模式,该模式不会在每次客户端请求时都对数据库重新查询,而是在 第一次查询后将结果集缓存在服务器端,返回部分结果给客户端,待客户端再次请求 后续结果时,直接读取缓存的记录集,避免了对数据库的重复查询。该模式分为三个 部分:值列表处理器、数据访问对象和值列表。值列表处理器为用户提供查询方法, 包括获取结果集的大小:从列表中获得当前结果;获取列表中当前元素之前的指定大 小的结果集;获取列表中当前元素之后的指定大小的结果集;重新设置列表的开始位 置等等,值列表处理器通过这些方法来控制搜索,以结果集的方式为客户端提供查询 结果,其中结果集的大小和起始位置满足客户端的需求。和分页迭代模式一样,值列 表处理器模式也使用数据访问对象来访问数据库和执行查询。值列表用来存储查询的 所有结果集,结果集的每条记录都会封装成值对象。如果查询失败,不能返回任何匹 配结果则该列表为空。值列表由值列表处理器缓存。值列表处理器模式的实现有两种 策略。它可以被实现为任意的j a v a 对象,任何需要列表功能的客户端都可以使用它。 对于不使用企业b e a n 的应用程序,该策略非常有用。比如,更简单的应用程序可以 使用s e r v l e t 、j s p 、业务代表和数据访问对象来创建。其中,业务代表可以使用已经 被实现为j a v a 对象的值列表处理器来获取值列表。另一种策略是采用有状态的会话 b e a n 来实现。当应用程序在业务层使用企业b e a n 时,创建有状态会话b e a n ,使用值 列表处理器的一个实例作为它的状态就可以了。采用这种模式可以充分利用查询结 果,回避了对数据库的重复查询。 ( 2 ) j 2 e e 架构模型与x m l 技术 j 2 e e 架构为应用系统提供了一个n 层体系结构,典型的结构包括客户端层、中 6 华中科技大学硕士学位论文 间层以及数据库层等几部分。其中,中间层通常分为表示层和业务层两部分2 2 1 。这 个架构使开发者能专注于解决与应用相关的问题,而把复杂的系统级问题留给平台的 企业b e a n 容器来处理 2 3 - 2 5 】,同时,该架构还缓和了客户机和数据库服务器上的代码 膨胀,集中了对业务逻辑的管理,更为灵活地使用了数据库【2 酬。 为方便开发i n t e r n e t 商务应用程序而产生的j 2 e e 架构,需要处理大量业务数据, 因而在j 2 e e 架构中间层必须包含描述、显示以及存取这些业务数据的处理过程1 2 ”。 架构中的客户端层包括浏览器客户端和应用程序客户端两种类型,由于目前w e b 应 用程序的流行,浏览器客户端更为普遍。浏览器显示应用服务器回应的w e b 数据, 这些w e b 数据需要使用某种标记语言来定义其显示的格式以显示在客户浏览器上。 而x m l 在数据描述、显示以及处理上具有明显的优势,如,描述数据的标准性、平 台和语言的无关性f 2 8 1 ,以及它作为一个源置标语言可以使开发人员根据应用需求定义 新的标记语言【2 9 , 3 0 l ,等等。它是一种适于应用程序之间数据交换的格式,特别适合松 耦合的分布式应用系统 3 1 】。因此,在j 2 e e 架构中浏览器客户端和应用服务器之间可 以通过x m l 技术实现交互。 在使用x m l 技术时,涉及对x m l 数据的解析和存取问题。在j 2 e e 中,有两种 方式对x m l 数据进行处理,它们是d o m 方式和s a x 方式。由于d o m 方式比s a x 方式更为完善,所以得到更多的应用。用d o m 方式时,程序所面对的x m l 数据不 是一个文本数据流,而是一棵对象树【3 2 】。整个树以d o c u m e n t 对象为根,其余所属元 素及属性构成根的子树。程序可以通过d o m 提供的一系列接口来提取或修改对象树 里任意一个对象以及它的属性的值 3 3 。 为了支持w e b 服务,方便对x m l 数据的使用,j 2 e e 还提供了j a x b 接口。j a x b 可以将x m l 文档解析成j a v a 对象,或根据j a v a 对象生成相应的x m l 文档l 。使用 j a x b 不仅可以加快x m l 文档的处理,而且将程序中复杂的x m l 解析过程简单化, 有利于加快开发速度【3 5 36 1 。它的基本原理是:针对每个x m l 文档,都要有一个相应 的s c h e m a 文档,无论是何种操作,它首先绑定s c h e m a 文档。再根据s c h e m a 文档解 析x m l 文档,并生成相应的j a v a 对象,或者通过与s c h e m a 文档对应的j a v a 对象生 成相应的x m l 文档。 总之,x m l 技术可以用来生成独立于应用程序和平台的数 3 7 , 3 9 】,j 2 e e 技术可 7 华中科技大学硕士学位论文 以用来实现独立于应用程序和平台的业务逻辑。将x m l 技术与j 2 e e 架构整合,将 使得企业级应用从业务数据到业务逻辑都实现了平台的无关性【1 8 , 3 9 1 。d o m 和j a x b 地 出现,使得j 2 e e 应用可以使用x m l 文档提供的数据,执行各种业务逻辑。但是, 如果j 2 e e 业务层各功能模块分别使用d o m 对从客户端传来的x m l 数据进行解析, 将会使开发变得繁琐,开发效率得不到提高。使用j a x b 生成的j a v a 对象若直接被后 台的企业b e a n 调用,会大大增加客户端和服务器之间的耦合,j 2 e e 多层结构的优势 得不到发挥。 1 3 课题主要研究工作 在j 2 e e 平台上实现大数据量的访问时,应用系统的性能是必须考虑的问题。影 响系统性能的具体因素有很多,从系统设计的角度来看,用不同的模式会有不同的效 果,希望能找到一个较好的模式,或者在已有模式的基础上进行改进,使系统性能有 所保障。在j 2 e e 架构中浏览器客户端和应用服务器之间可以通过x m l 数据进行交 互。服务器端对x m l 技术的支持可采用多种方法,它们的代码生产效率各不相同。 由于时间有限,应尽量使用公共模块统一实现对x m l 数据的解析和拼装功能,这样 可以提高生产效率,而且集中在一个模块中提供对x m l 技术的支持有利于代码的可 读性和易维护性。在对应用系统的整个架构进行设计时,可以充分吸取前人的经验, 使用经典的设计模式为系统设计增添亮点,简化系统结构的设计工作,生产效率将得g 虢 到提高,前人的经验也得到了充分地利用。简言之,本课题的主要研究工作就是能通 过研究j 2 e e 中的技术,对这些技术进行运用、改进和综合,使得在j 2 e e 上开发企业 级应用时,能够拥有一个较为完美的解决方案。 课题的主要研究工作如下: ( 1 ) 企业级应用技术研究 大数据量访问模式技术研究 在企业级开发中,常常会遇到对大量的数据进行查询降低了系统性能的问题,本 课题希望从设计模式的角度解决这个问题,来提高系统的性能。目前,针对大数据量 的查询有两个模式值列表处理器模式和分页迭代模式,它们各有利弊,如果能够 改进访问模式,综合它们的优点,回避其缺点,那么就能产生一种性能更好的新模式。 一。 r 华中科技大学硕士学位论文 j 2 e e 与x m l 结合技术研究 要使中间层支持x m l 技术,关键是完成x m l 数据与企业b e a n 识别的值对象数 据这两种数据形式之间的转换工作。也就是说,如果能在表示层和业务层之间增加一 个适配器,那么就可以提供对x m l 技术的支持了。这个适配器的功能就是负责x m l 数据和值对象数据之间的形式转换,同时,由于x m l 数据格式和值对象的定义是多 种多样的,该适配器必须相当灵活地处理各种不同的x m l 数据和值对象。 ( 2 ) 基于j 2 e e 的大型分布式业务管理系统的设计与实现 使用j 2 e e 设计模式,结合系统的具体需求,设计基于j 2 e e 的大型分布式业务管 理系统的架构,并实现该应用系统。 一 9 华中科技大学硕士学位论文 2 一种新的基于j 2 e e 大数据量访问模式 本章提出了针对大数据量访问的模式索引列表处理器( i n d e x l i s t h a n d l e r ) 。 详细描述了索引列表处理器模式的原理、实现策略、在应用中的价值以及实验结果和 分析。实验结果表明,索引列表处理器模式降低了服务器的负载,具有比分页迭代模 式和值列表处理器模式更短的响应时间和更好的伸缩性。 2 1 对现有数据访问模式的分析 现有的数据访问模式有分页迭代模式和值列表处理器模式。这两种模式共同的优 点在于回避了传统的企业b e a n 的f i n d e r 方法,而是通过数据访问对象访问数据库, 将获得的数据封装成值对象,从而减少了网络通信。它们每次只传送部分数据到客户 端,而不是一次全部传出,缩短了查询响应时间,大大降低了网络的负载。这两种模 式的不同之处在于,值列表处理器模式将查询的结果集全部缓存在应用程序服务器 端,在以后的数据传送中,程序直接从应用程序服务器读取记录集。这种模式充分利 用了每次数据库查询的结果,减少了应用程序服务器和数据库的通信,同时也减少了 数据库的运行次数,加快了对客户端的响应速度。但是,这种对大数据量缓存的方法 必然会过多的占用服务器内存,加重了服务器的负载,如果并发访问的客户数目较大, 服务器的性能将值得担忧。分页迭代模式则不对查询的结果集进行缓存,所以不占用 系统存储空间,但是每次取记录集时都需重新查询数据库,对大数据量的重复查询又 加重了数据库的负载,降低数据库性能。而基于j 2 e e 应用系统的性能与它使用的数 据库的性能紧密相连【4 0 1 。所以,该模式也会降低整个应用系统的性能。总之,这两种 模式各有弊端,需要对它们进行改进以获得一种性能更好的模式。 2 2 索引列表处理器模式设计原理 用索引列表处理器来执行大数据量数据库查询时,首先根据客户端提供的检索条 件,查询记录的关键字,将查询结果缓存在服务器端,在客户端的后续查询中,根据 符合客户端请求的关键字对数据库进行查询,得到的查询结果被封装成值对象的列 表,再传送给客户端。 l n 华中科技大学硕士学位论文 该模式创建i n d e x l i s t h a n d l e r 类以实现对数据库的查询控制和对关键字的缓存功 能。i n d e x l i s t h a n d l e r 通过数据访问对象访问数据库,用i n d e x l i s t 列表缓存获取的关 键字集。i n d e x l i s t h a n d l e r 提供了导航功能,可以从i n d e x l i s t 中获得下一批记录的关 键字集合或者当前记录的上一批记录的关键字集合。i n d e x l i s t h a n d l e r 根据该集合提 供的关键字再次通过数据访问对象从数据库获取记录集,记录集在数据访问对象中已 被封装成值对象列表,然后被返回到客户端。 索引列表处理器模式类图见图2 1 。 i 黧幽m 咖, l 2 3 组成部分 图2 1 索引列表处理器类图 2 3 1 i n d e x l is t l t e r a t o r i n d e x l i s t i t e r a t o r 是一个接口,通过下列方法来提供迭代机制: ( 1 ) g e t s i z e 用来获取结果集的大小: ( 2 ) g e t c u r r e n t k e y 用来获取列表中当前的关键字; ( 3 ) g e t p r e v i o u s k e y s 用来获取列表中当前关键字前面的关键字集合: ( 4 ) g e t n e x t k e y s 用来获取列表中从当前关键字后面的关键字集合; ( 5 ) r e s e t i n d e x 用来重置列表中指针的起始位置: 一一 华中科技大学硕士学位论文 ( 6 ) g e t k e y s 用来获取列表中指定位置的关键字集合。 根据需求的不同,i n d e x l i s t l t e r a t o r 接口还可以包括其它的方法。 2 3 2i n d e x l is t h a n d i e r i n d e x l i s t h a n d l e r 是实现i n d e x l i s t l t e r a t o r 接1 3 的索引列表处理器对象。 在进行首次查询时,i n d e x l i s t h a n d l e r 两次调用数据访问对象,第一次是获得所 有符合检索条件的关键字集,i n d e x l i s t h a n d l e r 将这些关键字依照数据库返回的顺序 依次保存到i n d e x l i s t 中,作为后续查询的依据。另一次调用是为了获得客户端请求 的查询结果集。根据i n d e x l i s t 中的部分关键字再次调用数据访问对象获得结果集。 另外,在i n d e x l i s t h a n d l e r 中还有一种可行的流程,在首次查询时,只调用数据访问 对象一次,而这次对数据库的访问就已经得到所有的记录集,从记录集中分别获得所 有的关键字集和首次返回给客户端的n 条记录的集合,关键字集由i n d e x l i s t 缓存, 记录的集合则直接返回给客户端。采用不同的流程使i n d e x l i s t h a n d l e r 的具体实现不 同,并且数据访问对象的接口也会有不同。 在后续的客户端的查询中,根据客户端提供的查询结果集的大小和遍历要求, i n d e x l i s t h a n d l e r 从i n d e x l i s t 中取出符合要求的关键字子集传递给数据访问对象,从 而获得相对应的值对象列表返回给客户端。 i n d e x l i s t h a n d l e r 是模式中的控制模块,它根据客户端传入的参数,判断查询任 务是一个新的查询还是已有查询的后续查询,来分别调用数据访问对象的不同接口。 它控制着对查询记录的导航,根据客户端的请求对i n d e x l i s t 进行遍历,确定返回记 录的关键字集。 l n d e x l i s t h a n d l e r 对客户端的每次响应都会引发数据库查询操作。但是这些查询 工作不再都是进行大数据量的重复查询,在客户端进行后续查询的时候,数据库只是 根据有限的关键字集合获得相应的记录,数据库的查询工作大大简化,运行时间也显 著地缩短,因此降低了数据库的负载,并且数据库传送到服务器的记录数目是比较小 的,降低了网络负载。 2 3 3 数据访问对象( d a t aa c c e s so bi e c t ) 在索引列表处理器模式中,数据访问对象提供简单的a p i ,用于连接数据库,查询 数据库,以及将查询结果封装成值对象返回。数据访问对象通过j d b c 或者j n d i 完 l2 华中科技大学硕士学位论文 成对数据库的连接。为了完成数据库查询,数据访问对象在这个模式中需要提供的方 法有:根据指定的关键字的集合查询相应的记录集的方法,对所有符合查询条件的记 录关键字的查询,或者对所有符合查询条件的记录的查询。数据访问对象在获得查询 结果后,通过调用值对象提供的构造器,对值对象的属性值进行设置,从而封装整个 已录,再将封装好的值对象加入待返回的列表中。 数据访问对象在该模式中充当索引列表处理器和数据源之间的适配器,它控制对 数据库的访问,是一个相对独立的模块,不仅可以对索引列表处理器提供接口,还可 以对应用系统中的其它功能模块或组件提供接口。 使用数据访问对象使得数据源对索引列表处理器来说是透明的,而无须了解数据 源实现的具体细节。数据访问对象使该模式更加容易地迁移到一个不同的数据库上, 索引列表处理器不了解底层数据的操作,因而,数据库的迁移只对数据访问对象产生 影响,实现了该模式对数据库访问的独立性。由于数据访问对象管理所有的数据访问 复杂性,它可以简化模式中的代码,所有与实现有关的代码,如s q l 语句,都被包 含在数据访问对象中,而不是包含在索引列表处理器中。这样可以提高代码的可读性, 以及代码的生产效率。所有的数据访问操作现在都委托给数据访问对象,这种集中化 使代码更容易维护和管理。数据访问对象对访问的数据没有任何限制,甚至可以访问 x m l 数据,增强了模式的可扩展性。索引列表处理器使用数据访问对象,回避了企 业b e a n 访问数据库的方式,减少了系统的丌销。当然,使用数据访问对象将导致增 加一些额外的对象,并在一定程度上增加实现的复杂性。 23 4 in d e x l is t i n d e x l i s t 依次存放查询结果的关键字集。如果查询失败,不能返回任何匹配的结 果,则该列表为空。i n d e x l i s t 由i n d e x l i s t h a n d l e r 缓存,在处理器进行数据导航时, 根据数据在i n d e x l i s t 中的位置判断需要读取的数据。所以,i n d e x l i s t 中数据存放的 顺序与数据库返回时的数据顺序要严格保持一致。 值得一提的是,记录的关键字有可能不l 卜一个字段,可以先创建一个关键字值对 象类,将关键字封装到这个值对象的实例中,值对象中属性的值就是关键字字段的值, 然后将值对象依次加入到i n d e x l i s t 列表中。 i n d e x l i s t 是一个存储数据的模块,负责关键数据的保存,在客户端和服务器多次 l3 华中科技大学硕士学位论文 通讯之中保留历史结果,避免数据库的重复查询。 2 3 5 值对象( v a iu eo b j e c t ) 值对象代表来自查询结果的单个记录的对象视图。它是任意可串行化的j a v a 对 象也被称作值的对象,对象中的每个属性值分别对应查询记录的字段值。它包含针 对各个属性值的g e t 方法和s e t 方法。 使用值对象来封装业务数据。相应的方法调用是设置和检索值对象。当数据访问 对象封装查询结果集时,可以构造值对象,用属性值来填充。值对象类可以提供接收 所有必需的属性值以创建该值对象的构造器。该构造器可以接受数据访问对象获得的 记录的所有字段的值,这些属性是该值对象设计时要求包含的。通常,值对象中的成 员被定义为公共的,这样就可以减少获取和设置属性等方法的数量。如果需要某种保 护,则方法成员可以定义为被保护的,或者私有的,并且提供相应方法来获取这些值。 如果不提供设置这些属性值的方法,则值对象在创建之后就可以保证其属性不受修 改。如果只有部分成员允许被修改以加速更新,则可以提供相应的属性设置方法。在 设计时一定要慎重考虑是否把所有值对象属性设置为私有,并提供相应的g e t t e r 和 s e t t e r 访问方法,或者把所有属性都定义为公共的。 由于客户端在对数据进行查询后有可能对特定的记录进行编辑,所以值对象类可 以为每个能被客户端更新的属性提供设置方法。根据需要,值对象的设置方法可以包 含字段级有效性验证和完整性检测。一旦某客户端拥有来自业务对象的值对象,客户 端就
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版肾结石常见症状解读及护理技巧探讨
- 2025版高血压病常见症状及护理方式
- 乡村振兴专员工作述职报告
- 婚礼宴会设计全案解析
- 眼科青光眼手术并发症处理细则
- 2025版多发性硬化症常见症状及护理技巧培训
- 2025年自然资源管理与保护考试试题及答案
- 电扶梯安装与制作习题及答案
- 2025年老年能力评估师考试模拟试卷老年人健康干预措施评估及答案
- 现场救护练习题(含答案)
- 2025年标准个人房屋买卖合同正式版
- 物理期中达标测试练习卷-2025-2026学年物理八年级上学期(沪科版2024)
- 走近邢台课件
- 2025年低压电工操作证复审必考试题及答案
- (正式版)DB32∕T 5184-2025 《海域使用权立体分层设权技术规范》
- 个人财产作抵押担保合同7篇
- 刑法故意杀人罪课件
- 【MOOC】人工智能原理-北京大学 中国大学慕课MOOC答案
- 《中华人民共和国职业分类大典》电子版
- 建设单位平行发包与总包签署安全生产协议
- GB_T 19015-2021 质量管理 质量计划指南(高清-现行)
评论
0/150
提交评论