(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(计算机应用技术专业论文)基于j2ee的机器学习功能的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 在实际开发企业级应用中,人们经常需要面对对分布式数据进行机器学习的需求。本文实现 了一个集成有机器学习分布式数据功能的j 2 e e 集成框架,在此框架结构上,能够快速、方便的 开发出需要机器学习分布式数据的企业级应用。 对于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 2 e e 开发平台。 支持向量机作为一种新的机器学习方法,在处理单点数据的机器学习中得到广泛应用。本文 实现了抽象的使用支持向量机的机器学习模块,并将其用于处理分布式数据。 本文构建了一种基7 - 白定义序列化的j a v a r m l s 1 h r l r m i 。s l i m r m i 用自定义的序列化方 法,将要传输的对象与已传输的对象相比较,使得只在网络间传输对象变化的部分。该方法解决 了传输过但值未变化的对象的重复传递问题,有效的减少r m i 通过网络传输的字节流的长度。 本文运用设计模式,实现了使用支持向量机的机器学习功能与s p r i n g 的集成。集成中充分利 片js p r i n g 的控制反转思想,使只通过简单的配置和开发,就可实现机器学习的需求。同时针对分 布式数据问题,使用s l i m r m i 将数据传输到同一地点进行机器学习。基于该框架,开发过程简洁, 而且开发出的应用具有趣好的性能。 关键字;j 2 e e ,s p r i n g ,机器学习,支持向量机,s l i m r m i a b s t r a c t p e o p l ea r eo f t e n f a c e dw i t ht h en e e d o fm a c h i n e l e a r n i n gd i s t r i b u t e dd a t aw h i l ed e v e l o p i n g e n t e r p r i s ea p p l i c a t i o n t h ep a p e rc o n s t r u c t saj 2 e ef r a m e w o r ko fm a c h i n e l e a r n i n gd i s t r i b u t e dd a t a b a s e do nt h ej 2 e ef r a m e w o r k , i ti ss i m p l ea n df a s tt od e v e l o pe n t e r p r i s ea p p l i c a t i o nw h i c hn e e d s m a c h i n e 1 e a r nd i s t r i b u t e dd a t a t h ec h o i c eo ft h ed e v e l o p i n gj 2 e ep l a t f o r mi sak e yf a c t o rt ot h ep r o j e c t t h ep a p e rb u i l d saj 2 e e d e v e l o p i n gp l a t f o r m t h ed i s p l a yl a y e rr e a l i z e sw i t ht a p e s t r y , d a t ap e r s i s t e n tl a y e rr e a l i z e sw i t h h i b e r n a t e ,a n dt h es p r i n gf r a m e w o r ks e p a r a t e sb u s i n e s sl o g i cf r o md i s p l a yl o g i ca n dd a t u ms t o r el o g i c t h ep a p e rd e s c r i b e st h ep r o c e s so f p u t t i n gt o g e t h e rt a p e s t r y , s p r i n ga n dh i b e r n a t e t h es u p p o r tv e c t o rm a c h i n ea san e wm e t h o do fm a c h i n e - l e a r n i n g ,i su s e dp o p u l a r l y t h et e x t i m p l e m e n t saa b s t r a c tm a c h i n el e a r n i n gm o d u l eu s i n gs u p p o r tv e c t o rm a c h i n e ,a n du s e si t t o1 e s l nd i s t r i b u t e dd a t a t h et e x ti n t r o d u c e san e wr e m o t em e t h o di n v o c a t i o nb a s e do ns e r i a l i z i n gm e t h o d s - - s l i m r m i s l i m r m lc o m p a r e st h eo b j e c tt ob et r a n s m i t t e dw i t ho b j e c t st r a n s m i t t e da n do n l yt r a n s m i t st h ec h a n g e d p a r t s l i m r m is o l v e st h ep r o b l e mo fr e p e t i t i v et r a n s m i s s i o n so fo b j e c t s s os l i m r m ic a nr e d u c et h e d a t at ob et r a n s m i t t e da n di m p r o v e st h ee f f i c i e n c yo f r m l t h ep a p e rp u t st o g e t h e rt h em a c h i n e - l e a r n i n gm o d u l ea n ds p r i n gu s i n gd e s i g np a t t e r n s p r i n g s i n v e r s i o no fc o n t r o lm a k e so n l ys i m p l ed e p l o y m e n to fm a c h i n el e a r n i n gi m p l e m e n tp o s s i b l e t o d i s t r i b u t e dd a t a , s l i m r m ic a nc e n t r a l i z ed i s t r i b u t e dd a t at on i l ep l a c e t h ed e v e l o p m e n tb a s e do nt h e j 2 e ef r a m e w o r ki ss i m p l e ,a n dt h ed e v e l o p m e n tr e s u l th a sg o o dc a p a b i l i t y k e y w o r d s :j 2 e e ,s p r i n g ,m a c h i n el e a r n i n g ,s u p p o r tv e c t o rm a c h i n e ,s l i m r m i i i 独创性声明 本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的 研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已发表或撰写过的研究成果,也不包含为获得中国农业大学或其他教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本课题所做的任何贡献均 在论文中作了明确的说明,并表示了感谢。 研究生签名 戴毛 时间:2 p 咕年6 月u 日 关于论文使用授权的说明 本人完全了解中国农业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。同意中国农业大学可以用不同方式在不同 媒体上发表、传播学位论文的全部或部分内容。 研究生签名: 导师签名: 时间:二u u 占 年6 月仃只 时阚:啦6 年6 窍l s b 氨冬 中国农业大学硕士学位论文 第1 章绪论 第1 章绪论 1 1 研究的背景和意义 自1 9 9 9 年6 月s u n 公司向世人推出j 2 e e ,至今短短儿年的时间来,1 2 e e 作为实现企业级 戍用的主要方式之一,已经广泛应用到了金融、电信、广电、电力、智能建筑、交通等各个行业。 企业级应用作为为商业组织、大型企业而创建部署的解决方案及应用,通常包括多个相互连接、 彼此连通的集成层,而且同时,它往往是处于不同地域的多个企业级应用的集合。开发如此复杂 的企业级应用,选择合适的企业级应用体系结构至关重要。优秀的企业级应用具有良好的正确性、 健壮性、可伸缩性、可扩展性以及可移植性。诸如j 2 e e 、n e t 这些企业级应用技术迅速地发展, 使得人们开发出性能优良的企业级应用成为了可能。人们使用企业级应用等其他网络手段,已经 可以非常方便且不分地域地获取和交换数据。但与此同时,如何使人们更加便捷有效地使用所获 取的海量数据的技术发展相对滞后。 人们在实际开发企业级应用中,常常会遇到需要构建从样本或数据中归纳出知识的机制。特 别是在缺乏求解算法,定义不明确或仅仅非正式表述的问题中,更加需要知识归纳这种形式。如 医疗或技术诊断、工程设计、项且监控等等都是这些问题的实例。人们通常会利用一个学习系统, 通过对样本进行与人类学习类似的处理,来获取这些高层次概念或问题求解策略,这种方法也就 是机器学习【1 j 。而企业级麻用的一个很突出的特点就是分布式,所以许多机器学习需求往往也是 分布式数据的机器学习。如何在保持j 2 e e 的伸缩性、安全性、异构和互通、分布式的前提下, 搭建具有学习分布式数据的机器学习功能的j 2 e e 开发平台,是一项非常有意义的课题。 1 2 国内外研究现状 本节给出国内外关丁企业应用中,机器学习分布式数据的机器学习研究现状。分两方面进行 讨论,一是从以j 2 e e 为主的技术角度,一是以机器学习为目的的理论角度。由于j 2 e e 的应用已 经相当广泛,本节的国内外现状分析只简单讨论了当前j 2 e e 的发展应用情况,更多部分内容是 关于机器学习的研究现状。 1 2 1j 2 e e j 2 e e 在1 9 9 9 年面世,其架构设计的初衷面向两个方面:一方面,对用户来讲,j 2 e e 代表着 一套开放的标准,基于该标准的产品,可以运行在不同的操作系统或工作环境下,意味着可以与 其他系统很好整合。另方面,对开发者讲,j 2 e e 提供了整套的企业级应用解决方案,其中包括 了许多关键而且复杂的技术,如:跨平台移植、事务处理、安全性等等。2 0 0 0 年前后,应用服务 器和中间件成为当时最热门产品,各公司蜂拥推出了自己的应用服务器产晶,希望能加入到j 2 e e 的人潮中。 中国农业大学硕士学位论文 第1 章绪论 j 2 e e 是一种利用j a v a 2 平台简化企业解决方案的开发、部署和管理相关的复杂问题的体系结 构。j 2 e e 提供了一个企业级的计算模型和运行环境,用丁开发和部署多层体系结构的应用。它 通过提供企业计算环境所必需的各种服务,使得部署在j 2 e e 平台上的多层应用可以实现高可用 性、安全性、可扩展性和可靠性“1 。 最近e j b 3 0 的规范已经推出,e j b 3 0 规范相对以前版本,一个 f 常明显的改进就是试图减 轻其开发的复杂性,如其降低了实体b e a n 及o r 映射模型的复杂性。在最近几年,e j b 的复杂 性已经严重影响了它在j 2 e e 架构中的表现。而同时,j 2 e e 社区中的开放源代码项目越来越形成 气候。现在一些开源的框架甚至已经成为了j 2 e e 架构中的主流,如s t r u t s ,s p r i n g ,h i b e r n a t e 。 各种开源项目在j a v a 领域中百花争艳,为j a v a 开发者提供了更多的选择。 1 2 2 机器学习 关于机器学习的定义很多,目前被普遍接受的说法是s i m o n 对学习的阐述:“如果一个系统 能够通过执行某种过程而改进它自身的性能,这就是学习。”机器学习作为人工智能研究较为年 轻的分支,对人t 智能的其他分支,例如专家系统、自然语言理解、自动推理、智能机器人、计 算机味觉、计算机听觉等方面,都起着重要的推动作用”j 。 1 9 8 9 年c a r b o n e l l 描述当时机器学习的研究方向有:连接机器学习、基于符号的归纳机器学 习、遗传机器学习、分析机器学习。随着时间的推移,d i e t t e r i c h 指出当前机器学习的主要四个研 究方向是:分类机器的集成、海量数据的有教师学习、增强机器学习、学习复杂统计模型。 机器学习的发展经过了四个阶段。第一阶段,热烈阶段是始丁- 1 9 4 3 年的m c c u l l o c h - - p i t t s 神经网络模型,该研究首次以数学的方式揭示_ 人类神经系统的工作方式。这阶段最著名的是 r o s e n b l a t t 的感知器,表现出了简单例子上的推厂能力。在这个阶段里,我国研制了数字识别学 习机。6 0 年代中叶至7 0 年代中称为冷静时期,这段时期神经网络学习机因理论缺陷转入低潮。 但是同时,统计学习理论的研究硕果累累。7 0 年代中叶到8 0 年代中叶是机器学习的复兴时期, 研究者们开始将学习系统与应用相结合,并取得了一定成就。第一个专家学习系统的出现,意味 着归纳学习系统已经成为研究的主题。此后机器学习开始得到了大量应用。2 0 世纪8 0 年代中叶 之后为机器学习研究的蓬勃发展时期,一方面部分学者仍然致力研究神经网络,1 9 8 6 年提山使j ; j 后向传播技术开创了机器学习的新时代。另方面,出现r 许多新的机器学习方法,如v a p n i k 的统 计机器学习,j | j h o p f i e l d 的h o p f i e l d 模型,h o l l a n d 的遗传算法,t k o h n e n 的k o h n e n 模型等等1 4 1 。 在以前的很长一段时间内,人们的注意力更多的放在了神经网络的代替算法上。v a p n i k 等在 6 0 年代开始研究在有限样本情况下的机器学习问题口】。到9 0 年代中叶,随着研究的逐渐深入成 熟,形成了一个较完善的统计学习理论s t a t i s t i c a l l e a r n i n g t h e o r y ( s t l 、 6 1 。 美国航气三航天局j p l 实验室的科学家在( s c i e n c e ) ) ( 2 0 0 1 年9 月) 上指出:机器学习对科学 研究的整个过程正起到越来越犬的支持作用,该领域在今后若干年内将取得稳定而快速的发展。 1 2 3 支持向量机 统计学在解决机器学习中起着基础性的作用。但传统的统计学主要研究渐进理论,即当样本 2 中国农业大学硕十学位论文 第1 章绪论 趋向无穷时的统计性质。而现实问题中,人们能获取的样本数目都是有限的。v a p n i k 等人在6 0 年代开始研究有限样本下的机器学习1 5 0 1 9 7 1 年,v v a p n i k 和a c h e r v o n e n k i s 提出v c 维理论”, 为后面支持向量机的提出奠定了重要的理论基础。不过当时v c 维理论是建立在经验风险最小化 的原则上的。1 9 8 2 年,v v a p n i k 提出结构风险最小化原则【”。9 0 年代v a p n i k 等在此基础上提出 了支持向量机方法,使得抽象学习理论成为使用的算法j 。 支持向量机提出后得到广泛研究和应_ ; j 。当前,对支持向量机的研究可以分为两人类:其一 是对支持向量机模型及训练算法的研究,如支持向量机的改进算法,处理大型样本问题的高效算 法等。其二是支持向量机的应用研究,进一步推广支持向量机的应用领域。 支持向量机模型方面,如对v a p n i k 的c 支持向景机的各种变形算法p l o l , s c h 6 1 k o p f 的” 支持向量机 1 1 1 ,加权支持向量机,r o o b a e r t 的直接支持向量机 1 3 1 ,广义支持向量机g s v m “】 等。对多分类问题,如一类对余类算法”】和k n e e r 的成对分类算法i l 。对于大型问题的训练算 法的研究上,出现了各种对求解无约束问题的基本解法一牛顿法的改进算法1 1 6 - 1 8 1 。而针对支 持向量机其最优化问题的自身特点,提出了一些非常有效的算法:如选块算法 1 9 1 分解算法1 2 u j , 序列最小最优算法【2 1 1 等。这些支持向量机相关理论的研究都进一步促进了支持向量机的实际应 用。 在应用方面,支持向量机的麻用从模式识别的常规领域,如文本分类 2 2 1 , 图象识别口“等, 已扩展到医学如心脏病诊断【2 4 1 ”1 ;生物学如血细胞分类 2 6 1 d n a 识别【2 7 】;以及服务行业的市场 分析,如银行客户信用评估畔j ,移动电话顾窖满意度评价 2 9 1 ;等等各个领域。甚至是用于大型 灾难预报,如凌汛预报 3 0 1 , 地震预报 3 1 l 。 1 2 4 分布式机器学习 在实际应用中,人们会常常需要面对处理分布式的数据。分布式机器学习也是人工智能中非 常重要的研究课题之一。人们常使用a g e n t 机制,实现分布式的机器学习功能。如,使用a g e n t 来 构成机器学习的各组成部分,将改进的遗传算法用于a g e n t 联盟以实现分布式a g e n t 的协作”1 。 在随机| 尊弈的框架下,研究多a g e n t 学习,分析多个智能体问通过自学习掌握交互技巧【3 3 1 。 使用支持向量机处理分布式数据的算法,町以使用选块算法【1 9 】,增量学习算法【3 4 1 等等。2 0 0 4 年8 月r a s m u su l s l e vp e d e r s e n 的博士论文 u s i n gs u p p o r cv e c t o rm a c h i n e sf o rd i s t r i b u t e dm a c h i n e l e a r n i n g ) ) 中提出d s v m ( d i s t r i b u t e ds u p p o r tv e c t o rm a c h i n e s ) 分布式支持向量机的定义。对支 持向量机在分布式环境的应用进行了系统的研究,详细的讨论了使用支持向量机在不同节点间进 行交互学习,提出了一些利于改进系统性能的办法。国内如基丁改进聚类算法的分布式s v m 及其应用”“,从理论的角度提出了解决支持向量机的学习过程中大规模样本的问题,提高机器 学习的速度的改进方法。 1 2 5 现状研究小节 从前面的国内外的研究现状分析来看,支持向量机已经应用到了各个学科领域,且取得了良 好的效果。支持向量机相关理论的研究发展,为支持向量机的应用奠定了理论基础。特别是能片j 中国农业大学硕士学位论文 第l 章绪论 于处理分布式数据的支持向量机算法的研究,使得使用支持向量机处理分布式数据成为可能。但 是关于使用支持向量机学习分布式数据的具体实现的研究不多。总而言之,实现使用支持向量机 学习分布式数据是一项新颖的,理论上可行的,有实际意义的,且富有挑战性的课题。 1 3 研究的内容、目标、技术路线 1 3 1 研究内容和目标 本论文的主要研究内容是:在分析当前j 2 e e 主流框架的设计,以及机器学习算法理论的基 础上,使用设计模式实现j 2 e e 开发平台与机器学习功能的集成,搭建一个能机器学习分布式数 据的j 2 e e 框架。研究目标是:在集成现有的s p r h l g 、h i b e r n a t e 、t a p e s t r y 这些开源的j 2 e e 框架 的基础上,使用支持向量机算法,在该j 2 e e 框架中集成能处理分布式数据的机器学习功能。使 得在此集成的j 2 e e 框架上,能迅速方便地开发出需要机器学习分布式数据的应用。 本文将详细讨论,在j 2 e e 框架f ,使用支持向量机算法,机器学习分布式数据的实现过程。 具体内容包括: 1 ) 分析当前流行的j 2 e e 框架,尤其是s p r i n g 、h i b e r n a t e 、t a p e s t r y ,以及s p r i n g 、h i b e r n a t e 与t a p e s t r y 的整合技术。 2 ) 对机器学习算法的研究和实现。 3 ) s p r i n g 中远程方法调用的研究,分析分布式数据的传输方法。 4 ) 一个具体实例,中国建设银行项目管理系统项日监控子系统的设计和实现。 1 3 2 技术路线 为实现上面目标需要解决卜 面问题: 1 ) j 2 e e 开发平台的选型及搭建。j 2 e e 项目成败主要取决于架构设计以及合适框架的选择。 针对项目的需求特点,选择合适的框架结构是关键一步。 本文采用的开发平台絮构是:业务逻辑层使用s p r i n g 框架,s p r i n g 提供的控制反转 和面向方面编程插件式架构降低了应用组件问的依赖性。而且提供命名服务、事务服务、 消息管理服务等等。表现层使用t a p e s t r y ,t a p e s t r y 是完全基于组件的,利于提高开发效 率。数据持久层使用h i b e r n a t e ,h i b e r n a t e 是一种当前比较流行的o r 模型。而且,t a p e s a y 、 s p r i n g 、h i b e r n a t e 都是开源的项日,便于开发者基于其上做相应的二次开发。 2 ) 分布式学习机器学习算法的选择及实现。 本文选择机器学习方法是支持向量机算法,支持向量机具有适合小样本的情况;得 到的是全局最优解,解决局部极值问题;以及克服了灾难维数等优点。 处理分布式数据,采用的结构是集中式。也就是将要处理的数据集中到同一个地方, 将来自不同地方的数据都当作当地的数据,使用常规处理单点数据的支持向量机算法, 学习这些数据。集中式结构有如下好处: ( 1 ) 常规处理单点数据的支持向量机算法有良好的理论基础,保证r 运算结果的正确 d 中国农业大学硕士学位论文 第1 章绪论 性。 ( 2 ) 支持向量机求结果的过程,是个不断跌代的过程。将数据一次性集中到某一点, 减少了网络间数据的来同传递。 3 ) 实现机器学习算法与j 2 e e 架构的集成,使得能够利用j 2 e e 框架分布式的优势,解决需 要学习分布式的数据的需求。 本文实现了支持向量机算法在s p r i n g 中的集成。利用s p r i n g 的控制反转和面向方面 编程等特点,使得基丁其上,能够非常快捷、方便地开发出处理分布式数据的机器学习 功能。 4 ) 为提高系统性能,应该尽量减少通过网络传输的数据量。 本文介绍、使用了一种基于自定义序列化的远程调用方法一s l i m r m l 。能够有效减 少需要通过传输的数据量,提供了系统性能。 上面的几点综合起来,是一个有机的整体,如机器学习算法的实现是建立在t a p e s t r y 、s p r i n g 、 h i b e r n a t e 的集成基础上的,机器学习功能的开发包括表现层、业务逻辑层、数据持久层的开发; 为处理分布式数据,机器学习算法使用s l i m r m l 调用远程数据,而其实s l i m r m i 也是基于s p r i n g 提供的r m i 方法的。 中国农业大学硕士学位论文 第2 章j 2 e e 开发平台的结构选型及搭建 第2 章j 2 e e 开发平台的结构选型及搭建 2 1j 2 e e 的多层体系结构 j 2 e e ( j a v a 2 p l a t f o r m e n t e r p r i s e e d i t i o n ,j 2 e e ) 是一个由s u n 公司定义的开发分布式企业 级麻用的规范。j 2 e e 的技术基础就是核心j a v a 平台或j a v a 2 平台的标准版,因此j 2 e e 包括了标 准版的许多优点,如包括编写一次,到处可用的可移植性、方便存取数据库的j d b ca p i 、支持 c o r b a 技术,以及能在网络应用中保护数据的安全模型。另外,j 2 e e 还提供了对e j b 、s e r v l e t 、 j s p 、x m l 等技术的支持,方便于企业级应用的开发。j 2 e e 中所包含的备类组件、服务架构及技 术层次,有着相通的标准及规格,使得基于j 2 e e 架构的不同平台之间,有良好的兼容性,解决 了企业后端使用的信息产品彼此之间无法兼容的问题。 j 2 e e 提供了一个多层次的分布式应用模型,也就是按照功能把应用逻辑分成多个层次,每 个层次对应相应的服务器和组件,而组件运行在分布式服务器的组件容器中,各容器间通过相关 的协议进行通讯,来实现组件问的相互调用。冈此,使得开发者开发企业级应用变得更加简单、 快速。 随着软件技术的发展,计算机软件为人们带来了更多的方便,人们的生活越来越依赖于计算 机,而随着人们需求的更加精确,广阔,软件系统的规模和复杂度也随之增加,软件系统结构的 选择成为了软件项目成败的首要因素。 j 2 e e 在逻辑上将应用分为:表示层,业务逻辑层,数据持久层三层结构。表现层为客户提 供应用服务的图形界面,便于客户操作麻用服务。业务逻辑层位于表现层和数据持久层之间,是 用来实现企业应用的业务逻辑一个单独的层次。这个层次封装r 与系统相关的应用模型,同时把 表示层和具体的数据隔离开。业务逻辑层提供应用程序和数据服务之间的联系,执行应用策略 和封装应用模式,并将封装的模式呈现给客户应用程序。数据持久层是三层结构中的最底层,该 层用来定义、维护、访问和更新数据,管理和满足应用服务对数据的请求。 将系统的业务逻辑与表现层分开,在开发中能人大减少开发的工作量。在项目开发中,一般 业务逻辑是变化最多的部分。在两层结构的系统中,改变业务逻辑,将使得业务模块以及其用户 界面都得重新设计开发。而在有独立业务逻辑层的设计中,一方面可以实现负责表现层和业务逻 辑层的技术人员的明确分工。另方面可仅仅改变业务逻辑层实现来改变业务逻辑,表现层町能不 需改变,或是简单调整页面。另外,单独分模块实现的业务逻辑。可以为其他模块使用,提高了 可重用性。 数据持久层为系统提供r 高层的、统一、安全、并发的数据持久机制 3 6 1 。与两层结构中的 直接存取数据不同,数据持久层中的对象管理着对数据库数据的所有操作,为业务逻辑层提供服 务。这样将系统的业务逻辑与数据的存储机制隔离开了,使得程序人员能够专注与业务逻辑的开 发。同时,业务逻辑提供对数据的集中化管理,通过连接池和数据的高速缓存来更好的管理珍贵 的数据库资源。 6 中国农业大学硕士学位论文 第2 章j 2 e e 开发平台的结构选型及搭建 2 2 项目的开发平台要求 一+ 个平台级系统的优劣完全左右了在此基础上开发的业务系统,因此开发平台必须以正确 性、健壮性、稳定性、扩展性等为基准原则,同时要保证有较高的性能,具体如f : 1 ) 正确性和健壮性。正确性是软件系统最基本的要求,健壮性是系统能够安全稳定运行的 保证,这两点是所有软件系统的基本要求。 2 ) 可伸缩、可扩展。大型系统要求软件应能够根据负载情况支持负载均衡和容错功能,这 种功能多是应用服务器提供的,但相应的软件系统必须以三层或多层体系结构为基础架 构。目前主流的开发平台为b s 结构,但作为平台级软件系统不应该牢牢束缚在w e b 卜, 而应该能够提供多种稗户支持,如c l i e n t 、w e b s e r v i c e 客户等。 3 ) 面向对象( o o ) 。面向对象技术是软件技术发展这么多年的一个精华,只有以0 0 的思 想贯彻于整个开发过程,才能享受到0 0 带来的思路清晰、软件可复用性高的好处。确 性和健壮性。 4 ) 简单,避免不必要的复杂。做可能管用的最简单事情,复杂的体系结构( 如e j b 架构) 带来复杂问题和较高的人力成本、维护成本。 5 ) 开发迅速、方便测试和可维护性好。 6 ) 可移植。操作系统无关性,应用服务器无关,数据库无关。 7 ) 采用先进主流技术。非常专业的技术往往在某一领域能发挥巨大作用,但很容易因为开 发者少而技术落后,不适合作为基础平台。只有开发的主流技术才能保证基础技术平台 能够不断更新,与先进技术同步。 8 ) 借鉴别人经验。当前软件业开源项目迅速发展,好的开源项目不于商业产品,比如 s t r u t s 、t o m c a t 、j b o s s 等等,这些项目凝聚着开发者的丰富经验和智慧。采用好的开源项 目作为开发平台架构,无论在人力、投资、风险和时问上都会比自己开发要好很多。 2 3 三层架构的开发平台结构选型 当前,j 2 e e 已经成为企业应用开发的主流框架之一。特别近年来众多基丁j 2 e e 的开源项目 不断涌现,开发者按照自己的需求,为开发平台选择合适的框架结构成为了系统实现的关键步骤。 2 3 1 表示层框架选择 2 3 1 1 s t r u t s s t r u t s 是o p e ns o u r c e 社区开发的,一种优秀的基于m v c 的w e b 应用开发框架。s t r u t s 出 现比较早,在w e b 应用开发中使用非常广泛。但足,s t r u t s 也有些不尽人意的地方。具体讲有下 面一些方面: 首先拖延_ 开发时间。数据的新增、修改、删除和查询的每一个功能实现都需要专门开发, 7 中国农业大学硕士学位论文 第2 章j 2 e e 开发平台的结构选型及搭建 如都需要实现新增功能的a c t i o n :实现修改功能的a c t i o n 和删除功能的a o i o n ,其实这三个a c t i o n 的大部分逻辑是相似的,但每次都需要开发人员编写,无疑是枯燥单调的,很容易发生粗心导致 代码稳定性降低,最主要的缺点是延长了开发过程和时间,不利于快速开发出原型系统。 其次是耦合性强。业务逻辑必须在a c t i o n 中进行调用和处理,一般包括新增a c t i o n 、修改 a c t i o n 和删除a c t i o n ,一旦业务逻辑结果有所变动,涉及到j 个a c t i o n 类的代码修改,维护量大, w e b 层和业务逻辑层存在过强的耦合性。 再次是不利于扩展和维护,当数据结构变化,增加或减少字段时,分别要实现三个a c t i o n 的修改,以及相应的e j b 调用和e j b 修改,修改工作量相当大,无法快速实现原型系统的拓展。 2 3 1 2 t a p e s t r y t a p e s t r y 是一个强有力、开放源码、基于j a v a 的用于开发高端w e b 应用的f r a m e w o r k 。它 是j s p 的一种替代方法,使用t a p e s t r y ,可以让你的页面看不到一句j s p 代码,这使页面看起来非 常干净。它可以用很少的代码来构造一个极端复杂的w e b 应用。 t a p e s t r y 使用了类似于传统c s 的开发方法:基于组件的开发。使用t a p e s t r y ,有以下好处: 1 ) 完整的m v c w e b 框架。m o d e l v i e w c o n t r o l e r 三层完全分开。v i e w 层是纯h t m l 标记, 没有任何脚本。 2 ) 基丁组件设计,具有极高的代码可复用性。 3 ) 在t a p e s t r y 中,任何事物都可以看作一个可复用的组件,组件可以组合在起形成一个 更大的组件或逻辑页面。 4 ) 将j s p 开发者从繁琐的j s p 代码中解脱山来,取而代之的是真正面像对像方法,而不是 u r l 解析 5 ) 精确地错误报告,可以将错误定位到源程序中的行,取代了j s p 中那些莫名奇妙地错误 提示 6 ) 对页面国际化的充分支持 7 ) 充分支持团队开发,美工人员和j a v a 开发人员可以融洽地相处,互相都不依赖于对方。 2 - 3 1 3j s f j s f 也是一种基丁组件技术的开发框架,然而t a p e s t r y 和j s f 设计上还是各有侧重点的。j s f 基本思路和s t r u t s 差不多,也需要标签库和组件的结合思考,不过j s f 组件这里是通用组件,所 以开发比s t r u t s 要轻松一些。 2 3 i 4 结论 表现层的开发框架还有w e b w o r k ,v e l o c i t y 等,总的来说基于组件的开发模式可以在开发中 积累一些个性化的组件,重用于新的应用中。t a p e s t r y 是种完全组件的框架,利于开发页面要求 灵活度相当高的需求,因此我们表现层选择了t a p e s t r y 。 2 3 2 业务逻辑层框架选择 业务逻辑层是整个系统的核心,e j b 和p o j o 都可咀用来创建业务逻辑层。现在在业务逻辑 8 中周农业犬学碰士学位论文 第2 章j 2 e e 开发半台的结构选型及搭建 层实现方法上,涌现出许多的采用a o p 技术和i o c 模式的轻量级容器,它们以其结构简单、应 用服务器无关和易测试等特点得到了广泛的应用。这类产品中以s p r i n gf r a m e w o r k , p l c o c o n t a i n e r ,a v a l o n 为代表,s p r i n gf r a m e w o r k 是其中一个很优秀的产品。 2 3 2 1e j b e j b ( e n t e r p r j s ej a v a b e a n ) 是服务器端可重崩组件,它是j 2 e e 体系结构中崩丁| 封装 业务逻辑的重要组成。e j b 需要一个如w e b s p h e r e 、w e b l o g i c 的e j b 容器来运行,容器为包含业 务逻辑e j b 提供了一个分布式、多线程、事务的、安全的、可伸缩和容错等企业级功能运行环境。 e j b 的出现使得开发者可以更多的关注业务逻辑的实现,而企业级应用所要求的性能完全交给 e j b 容器去管理,人大节省了开发周期同时也提高了系统的质量。 然而e j b 带来的并非全是好处,大量的麻用证明e 3 b 也存在一些比较严重的问题: 1 ) 开销大,效率较低。 2 ) e j b i ,0 规范要求所有e r g 必须实现远程接口,网络开销很大,不管e j b 本身是否运行 在同一个j v m 。远程接口需要通过网络访问,其效率比j v m 中直接引址耍慢儿百倍乃 至上千倍。即使2 , 0 规范中实现了本地接口,仍旧比采用直接引址要慢儿十倍。 3 ) 入侵的a p i 。你的应用的代码必须依靠e j b 容器提供商,虽然j 2 e e 规范保证e j b 的实 现与容器无关,人型e j b 应用的迁移就象一场噩梦。 4 ) 依赖容器。你的代码不能在e j b 容器之外工作,业务逻辑很难完成单元测试。 5 ) 部署复杂。好的e 3 b 应用必须经过精心部署才能达到较好的性能。 6 ) 启动时间氏。 e j b 并没有因为这些缺点掩盖了其光芒,在事务性要求较高或多线程的应用中,e j b 架构是 晟好的选择之一。同时e j b 也不是万能的,在普通j a v a 对象能够解狄同样问题的应用中,e j b 系统复杂性、高开销就比不上p o j o s 架构应用了。 总的米说因地制宜是我们选择一个项目架构的原则,然而作为开发平台的架构选择,应该以 适用普遍性为原则。 2 3 2 2s p r i n g s p r i n g 可以带来的好处有: 1 ) s p r i n g 可以有效的组织中间业务逻辑层对象,无论你是否选择了e j b 2 ) s p r i n g 提高了可测试性,利用s p i n g 建立的应用使单元测试变得非常简单。 3 ) s p r i n g 可以消除多样的定制属性文件的需要,用一致的配置操作贯穿整个应用。 4 ) s p r i n g 可以培养良好的编程习惯,最大程度的达到o o p 要求的编程到接口。 5 ) 采用s p r i n g 设计的应用很少依赖s p r i n g 专有a p i s ,应用中的许多业务对象根本不要依 靠s p r i n g 就可以独立应用。 6 ) s p r i n g 让应用e j b 架构成为一个实现方式上的选择。你可以选择p o j o f p l a i no r d i n a r y j a v ao b j e c t ) 或者l o c a le j b s 方式扩展业务借口,而不会影响业务逻辑的调用。 7 ) s p r i n g 可以帮助你解决没有采用e j b 架构时的许多问题,例如,在不用e j b 容器的情况 下,s p r i n g 可以通过a o p 的方式实现声明式事务管理;或者当你使用单个数据库时,甚 9 :星童些尘耋錾:盖鐾尘蝥翟塑丝型娑鲨 至不需要j t a 的实现。 8 ) s p r i n g 提供了数据持久框架,可以采用j d b c 或者类似h i b e m a t e 的o rm a p p i n g 产 品实现数据存取。 2 3 2 3 结论 而实际上两者是不冲突的。s p r i n g 把业务逻辑层使用p o j o s 实现了,而如果需要使用e j b 时,s p r i n g 中也提供了对e j b 的支持,满足我们一些要使用e b 优点的需求。 2 3 3 持久层框架选择 数据是任何计算机应用程序最重要的方面。计算机应用程序的核心是使某人或另一个计算机 系统能够访问其数据。在企业环境中,数据不仅必须是可访问的( 即与用户界面连接并按一系列 业务规则管理) 。而且还必须是持久的。持久数据存储就是即使在服务器崩溃的情况下仍能存在 的数据存储。 信息时代非常强调分布式企业计算平台的使用。在这类平台上,必须不惜任何代价保护数据 并使其永远持续存在,即使面临网络故障、内存泄漏和服务器崩溃时,也是如此。为了维护这种 持久性,应用程序组件必须能够处理并发性、连接管理、数据完整性和同步。j 2 e e 的所有四种 数据管理技术都为开发人员处理这些功能,但每种技术在处理时略有不同。 2 3 3 1j l ) b c j d b c 可以说是访问持久数据层最原始、最直接的方法。在企业级应用开发中,我们可能使 用d a o ( d a t a a c c e s so b j e c t ) 模式来把数据访问封装起来,然后在其它的层中统一调用。这种方 式的优点是运行效率最高,缺点是把d a o 对象和s o l 语言紧密耦合在一起使得在大项目中难以 维护。但是不管怎么说,使用j d b c 米直接访问持久数据层是当今企业级应用开发中使用最“泛 的。 2 , 3 3 2 实体b e a n 提供健壮的数据持久性。b e a n 容器处理大部分的数据完整性、资源管理和并发性功能,从 而使开发人员关注业务逻辑和数据处理,而不是这些低级细节。使用b e a n 管理的持久性( b e a n m a n a g e dp e r s i s t e n c e ,1 3 m p ) 实体b e a n 时,开发人员编写持久性代码而容器确定何时执行该代 码。使用容器管理的持久性( c o n t a i n e rm a n a g e dp e r s i s t e n c e ,c m p ) 实体b e a n 时,容器生成持 久性代码并管理持久性逻辑。 有下列优点: 1 ) 标准化。e j b 规范定义一组与供麻商无关的接口,j 2 e e 供应商可以实现这些接口米支 持实体b e a n 。这种标准化允许采崩最佳实践的开发并缩短雇用新开发人员时的适应期。 因为基本的组件体系结构和设计模式人家都知道,所以很容易找到合格的人才来实现它 们。 2 ) 容器管理的服务。e j b 容器管理的服务为处理诸如安全性、事务处理、连接合用和资源 管理之类的企业功能提供了极人的好处。 1 0 中囝农业大学硕士学位论文 第2 章j 2 e e 开发平台的结构选型及搭建 3 ) 透明持久性。容器管理的服务思想在c m p 实体b e a n 中得n t 迸一步加强。这里,容 器还自动管理持久性语义。使用b m p 实体b e a n 时,开发人员必须编写持久性逻辑, 而容器则确定何时调用由开发人员定义的方法。使用c m p 时,容器决定何时持续保持 b e a n 的状态以及如何确保与底层数据存储的数据完整性和并发性。 4 ) 事务支持。开发人员对c m p 事务( 隔离级别、事务需求和方法的包含排除) 有粗粒 度的控制权,对b m p 事务有细粒度的控制权,这些控制都是通过在b e a n 代码中以程 序方式处理事务语义实现的。在这两种情况f ,容器管理事务并确定是否麻该提交给定 的事务。 5 ) 基丁二组件的设计。实体b e a n 被设计成自包含组件,这些组件配置有部署描述符,无需 更改任何代码就可以将它们部署到任何j 2 e e 麻用程序服务器。 总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论