(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf_第1页
(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf_第2页
(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf_第3页
(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf_第4页
(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机应用技术专业论文)基于ssh架构的代码自动生成技术的研究.pdf.pdf 免费下载

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

文档简介

摘要 本文首先分析了企业级应用面临的挑战,简要介绍了w e b 开发技术的发展过 程,针对亚信科技有限公司的网管产品n e t x p e ri p 综合网管系统中编码不规范, 架构不清晰,代码冗余度低,模块耦合度大等不足,提出了基于s s h 架构的代码 自动生成的设计思想。 本文介绍了主流的w e b 开发技术,在分析了各种技术的工作原理及优势的基 础上,提出了s s h 技术的整合框架及整合模式技术路线,设计了基于s s h 整合架 构的代码自动生成的技术解决方案,并将该技术解决方案应用于n e t x p e r ti p 网管 系统的资源管理子系统中。与传统的开发方式在开发与维护工作量方面的比较, 该方案有效的提高了系统开发效率,提供了一个稳定、快速、高效的软件开发模 式,从真正意义上实现了编码的自动化。 关键词:s t r u t s :s p r i n g ;h i b e r n a t e ;x d o c l e t ;m i d d l e g e n :代码自动生成 w i t ht h er a p i dd e v e l o p m e n to ft e l e c o m m u n i c a t i o na n dc o m p u t e rs c i e n c e ,w i d e a p p l i c a t i o no fi n t c r n e ta n di m m e r g i n go fn e wb u s i n e s s ,t h er e q u i r e m e n tc h a n g e sf a s t , w h i c hc a l l sf o rh i g h e rq u a l i t yo fw e b b a s e ds y s t e m t oa d a p tt ot h ec h a n g eo fm a r k e t a n dm a k ce n t e r p r i s em o r ec o m p e t i t i v e ,a p p l i c a t i o ns y s t e ms h o u l db es c a l a b l ea n d c a s i l ya d a p tt om a r k e tc h a n g e t os o i v ct h ep r o b l e mh o wt od e v e l o ps t a b l ea n ds c a l a b l es y s t e me 伍c i e n t l ya n d c o n t r o lt h ed e v e l o p m e n tp r o c e s sa n dq u a l i t yo fc o d e t h ea r t i c l ed e p i c t sas o l u t i o nt o g e n e r a t ec o d ea u t o m a t i c a l l yb a s e do ns s h ( s t r u t s + s p r i n g + h i b e m a t e ) ,a sj 2 e eh a s b e e nt h es o l u t i o no fm a n ye 历c i e n tb ss y s t e m 1 1 l i sa r t i c l ei n t r o d u e c st h em a i n s t r e a m w e bd e v e l o p m e n tt e c h n o l o g y , a f t e ra n a l y z i n gt h et h e o r ya n da d v a n t a g eo fa l lt h e t e c h n o l o g i e s i tb r i n g sf o r w a r dai n t e g r a t i o nf r a m e w o r ko fs s ht e c h n o l o g y , i ta l s o d e s i g n st h ec o d ea u t o g e n e r a t i o nt c c h o n o l ys o l u t i o nb a s i c e do i lt h a ti n t e g r a t i o n f r a m e w o r k , w h i c hi su s e di nt h er c s o u f c cm a n a g e m e n ts u b s y s t e mo fn e t x p c r t ( ai p n e t w o r km a n a g e m e n ts y s t e m ) 1 1 他s o l u t i o no f f e r sas t a b l e e 伍c i e n ts o f t w a r e d e v e l o p m e n tp a r c m , c o m p a r i n gw i t ht r a d i t i o n a ld e v e l o p m e n tw a y , i ts p e e d su pb o t h t h ed e v e l o p m e n ta n dm a i n t e n a n c ew o r k i ti m p l e m e n t st h et e c h n o l o g yo fc o d e a u t o - g e n e r a t i o ni nar e a ld e v e l o p m e n te n v i r o n m e n t k e y w o r d s :s t x u t s ;s p r i n g m i b e r n a t e ;x d o c l e t ;m i d d l e g e n ;g e n e r a t ec o d ea u t o m a t i c a l l y 学位论文版权使用授权书 本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国 家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:谭吹 签字日期:p 刁年f 工月f7 日 导师签名: 了川 祥醐5 年,二月,7 日洲) 。一 北京交通大学硕士学位论文 独创性声明 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他入已经发表 或撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:谭彩己签字日期:知口7 年腿月,7 日 致谢 本论文的工作是在我的导师于双元老师的悉心指导下完成的。因此首先,我 要衷心地感谢于老师。在课题研究期问,于老师在学业上和生活上给予了我很多 的指导、帮助和关心,她高尚的师德、宽以待入的作风以及对学生认真负责的态 度都使我终身难忘。于老师对我的科研工作和论文都提出了许多宝贵意见。在此, 我向于老师表示诚挚的敬意和由衷的感谢。 我还要真诚地感谢亚信科技( 中国) 有限公司所提供的良好的实习环境,感 谢同一项目组的各位同事,由于大家的通力合作与互相帮助,才使得项目能够顺 利完成,使我能够顺利的完成课题的研究、设计、编码、调试以及文档资料整理 等工作,没有他们的帮助,就不会有今天的工作成果。 在研究生学习期间,有很多同学和朋友都给予了我真诚的关心和热情的帮助, 没有他们的帮助就没有今天毕业论文的顺利完成,在此我也衷心的感谢他们。 最后,特别感谢我的家人,他们的理解和支持使我能够在学校专心完成我的 学业! 北京交通大学硕士学位论文绪论 1 绪论 1 1研究背景 市场是瞬息万变的,需求也是随之不断变化的。优秀的企业级应用必须具备 良好的可扩展性和可伸缩性。因为良好的可扩展性可允许系统动态增加新功能, 而不会影响原有的功能。企业的信息是瞬息万变的,与之对应的系统必须能与时 俱进。对于企业级应用,时间的限制则更加严格。快捷、可控是企业信息化系统 必须面对的挑战。企业级应用还有个显著特点:并发访问量大,访问频繁。因此 稳定性、高效性是企业级信息化系统必须达到的要求。要使得软件开发利益最大 化,主要是要求开发的软件系统具有很好的复用性。尽可能让软件可以有高层次 的复用,这也是软件行业的发展趋势【l l 。 亚信科技有限公司为网络运营商开发的n e t x p e r ti p 综合网管系统就是一个需 求驱动开发的企业级应用。n e t x p e r t 是b s 架构的综合网络管理系统,随着j 2 e e 的分层架构不断发展,开源的框架的不断成熟,用户需求的不断增加,网络运营 商网络的不断扩容,对n e t x p e r t 系统的敏捷性、稳定性、安全性都提出了更高层 次的要求。 由于n e l x p e r t 系统开发初始缺少文档,大部分的业务逻辑都写在j s p 代码中, 一个页面嵌套上千行代码现象很常见,代码书写不规范,缺少必要的注释说明, 可读性差,随着系统需求的频繁变更,给开发人员维护系统带来很多不必要的麻 烦。n c t x p e r t 系统经历了两次版本的升级,随着w e b 技术的不断发展,系统中多 种w 曲技术并存,使得系统架构不清晰,代码冗余度增加,代码复用度降低,模 块间耦合度加大。目前来讲,n e t x p e r t 系统已经不能对市场的变化做出灵敏的反 应,不能适应时代要求,提出了重新开发部分子系统的需求。 为了构建高质量、稳定、安全、与时俱进的软件系统,提出了基于架构的代 码自动生成技术方案。框架本身就是从实际开发中抽取的通用部分,使用框架就 可以避免开发重复的代码。而开源的框架经过多年的发展,框架的性能比较稳定。 使用优秀的框架不仅可以直接使用框架中的基本组件和类库,还可以提高软件开 发人员对系统架构设计的把握。为了快速有效地开发软件,代码自动生成技术应 运而生,它旨在自动产生高度可定制和优化的中问或者最终产品,从而提高软件 开发效率和构件可复用性等。 北京交通大学硕士学位论文绪论 1 2w e b 开发技术的发展 随着i n t e m a t e 网络的发展,b s 系统易于部署、维护和升级等优势逐渐凸现, 越来越受到系统开发者和用户的青睐。区别于传统c s 的两层开发结构,典型b s 开发结构是按应用功能分为表示层、业务层和数据剧2 1 。 i业务层( 业务逻辑) i i 数据层( 数据库) i 1 _ j 图1 - 1 :基于w e b 的三层结构 f i g u r e1 - l :t h r e e - t i e rs l z u c t u r eo f w e bb a s e d 表示层:即客户端的浏览器通过h t m l 向最终用户显示被请求的信息。 业务层:由若干运行在e j b 容器,服务器下的e j b ( e n t e r p r i s ej a v a b e a n ) 组件或 j a v a b e a n 组成,这些组件是可以重复利用的,可以不做任何修改就移植到其他的 服务器上。而e j b 或j a v a b e a n 对数据库的访问是通过j d b c 来实现。 数据层:由一个或者多个数据库系统组成,其中可能包括由存储过程组成的 和数据存取相关的逻辑模块【3 j 。 j 2 e e ( j a v a2p l a t f o r m ,e n t e r p r i s ee d i t i o n ) 完美的实现了b s 的三层结构,它 通过j s p ,s e r v l e t ,j a v a b e a n ,e j b ,i n d i ,r m i ,j d b c 等技术来实现n 层结构。 图1 2 :轻鼍级j 2 e e 二层架构 f i g u r e1 - 2 :t l a e e - t i e rs t r u c t u r eo f l i g h t w e i g h tj 2 e e 2 北京交通大学硕士学位论文绪论 传统的j a v aw e b 应用程序就是采用j s p + s e r v l e t + j a v a b e a n 来实现的,这种模式 实现了最基本的m v c 分层,m v c 是m o d e l 、v i e w 、c o n t r o l l e r 三个词的缩写, 三个词分别代表应用的三个组成部分:模型、视图与控制器。在传统的开发模式 中有负责显示的j s p 、负责流程逻辑控制的s c r v l c t 、负责数据封装的j a v a b e a n 。 使应用不受任何特定操作系统、网络环境、硬件平台的束缚。应用可开发并部署 在异构的环境中,并能确保系统的可移植性。 但是这种结构仍然存在诸多问题,如: j s p 页面中需要嵌入很多的j a v a 代码,造成页面结构混乱; s e r v l e t 和j a v a b e a n 负责了大量的跳转和运算工作,耦合紧密; 程序复用度低。 于是出现了s t r u t s 框架,它是一个完美的m v c 实现,它有一个中央控制类, 针对不同的业务,由a c t i o n 类负责页面跳转和后台逻辑运算,j s p 页面负责数据的 输入和输出显示,a c t i o n f o r m 类负责传递a c t i o n 和j s p 中间的数据,由 s t r u t s - c o n f i g x m i 配置文件负责请求分发和页面跳转,从而降低了系统的耦合度。 s t r u t s 框架还提供了一个标签库供页面显示,s t r u t s 标签就像使用h t m l 标签一样简 单,但是可以完成非常复杂的逻辑,使页面源码干净整洁,逻辑清楚1 4 】。随着s t r u t s 的不断发展成熟,逐渐替代j 2 e e 分层结构的s e r v l e t 部分,在b s 架构系统中被 广泛应用。 使用d b c 连接来读写数据库,最常见的就是打开数据库连接、使用复杂的 s q l 语句进行读写、关闭连接,获得的数据又需要转换或封装后传给业务逻辑层,这 是一个非常烦琐的过程。 这时出现了h i b e r n a t e 框架,h i b e r n a t e 是一种新的o r m ( o b j e c t r e l a t i o n m a p p i n g ) 映射工具,它同时提供了从j a v a 类到数据表的映射和数据查询、恢复等 机制,实现数据层对象的持久性。相对于使用j d b c 和s q l 来手工操作数据库, 使用h i b e r n a t e 可以大大减少操作数据库的工作量。而且h i b e r n a t e 可以和多种w e b 服务器以及应用服务器良好集成【5 1 。 h i b e r n a t e 不仅管理j a v a 类到数据库表的映射( 包括j a v a 数据类型到s q l 数 据类型的映射) ,还提供数据查询和获取数据的方法,可以大幅度地减少在开发时 人工使用s q l 和j d b c 处理数据的时间【6 j 。 h i b e r n a t e 的目标是:释放开发者通常的数据持久化相关的编程任务的9 5 。 对于以数据为中心的程序而言,在设计采用面向对象的业务模型和商业逻辑时, h i b e r n a t e 可以充分发挥其优势,消除那些针对特定数据库厂商的s q l 代码,并且 把结果集由表格式的形式转换成值对象的形式1 7 1 。 可是在使用j d b c 连接来读写数据库过程中,最常用的就是打开数据库连接, 北京交通大学硕士学位论文绪论 使用复杂的s q l 语句进行读写、关闭连接,每次访问数据库都要进行以上操作, 使得代码不够简洁。 在分层结构中,如果显示层的s t r u t s 需要调用一个业务类,就需要n e w 一个 业务类出来;业务层需要调用持久层的类,也需要n e w 一个持久层类出来用。通 过这种n e w 的方式互相调用就是软件开发中最糟糕设计的体现 甜。调用者和被调 用者之间形成了强祸合,如果还在其他地方复用这个类,则他依赖的类也需要被 包含,每个类互相依赖互相调用,复用度极低,如果一个类做了修改,则依赖它 的类都会受到牵连。 为此,出现s p r i n g 框架,s p r i n g 框架的作用就是完全解耦类之间的依赖关系, s p r i n g i o c 、s p r i n g a o p 和s p r i n g 服务抽象,一起形成s p r i n g 这样一个有机体,作 为一种轻量级的j 2 e e 框架,s 研n g 提供了一种有效的方式来建立和组织j 2 e e 应 用程序。s v t i n g 框架使得组件之自j 的耦合更松散。一个类如果要依赖什么,那就是 一个接口,至于如何实现这个接口,这都不重要只要拿到一个实现了这个接口 的类,就可以轻松的通过x m l 配置文件把实现类注射到调用接口的那个类里。所 有类之问的依赖关系就完全通过配置文件的方式替代了。 虽然s p r i n g 本身提供了一套极其优秀的m v c 框架,但这套框架的设计过于 追求完美,采用了大量的映射策略,如请求到控制器之间的控制器解析策略,逻 辑视图和实际视图之间的视图解析策略等:还有过于细致的角色划分,使得m v c 层的开发相当烦琐。而采用s t r u t s 将不存在这些风险,虽然s t r u t s 不够完美,但 拥有极其稳定的表现1 9 】。 在早期的b s 架构的应用系统开发中大多采用的j s p + s e r v l e t 技术,使得原有 系统中存在着诸多问题,以n e t x p e r t 网管系统的开发项目为例: 页面结构不清晰。很多j a v a 代码内嵌在j s p 页面中,甚至数据库的连接, 查询也都在页面中完成,使得页面逻辑极其复杂; 源码缺少可读性。由于程序员编码习惯不同,依个人习惯在代码中添加注 释说明,很多代码缺少相应的注释,使得代码可读性降低; 不支持跨数据库查询。由于数据库采用配置文件连接,不能支持对多种数 据库的查询; 代码高度耦合。随着需求不断变化,代码修改频繁,使得代码重用度极低: 代码不够简洁。在d a o 类中大部分方法都用到了建立和关闭数据库连接。 为了增强源码的可读性,为了实现代码重用,为了提高编程效率,为了使系 统更好的适应需求变化,提出了基于s s h 框架的代码自动生成的技术解决方案。 4 北京交通大学硕士学位论文绪论 1 3论文的内容与组织结构 本论文针对软件行业需求瞬息万变的客观现实,研究了基于s s h 框架的代码 自动生成技术解决方案。希望建立起一个稳定、快速、高效的开发平台,用程序 分层解耦,构建高质量的代码,使开发人员致力于与通用原型有差异的特殊需求, 创造出性能稳定、界面风格统一的应用软件,为应用软件更好的应对挑战创造条 件。 本论文的内容组织与安排如下: 第一章讨论代码自动生成的背景意义,以及w e b 开发技术解决方案的发展, 多种框架技术应时代需求而生,分析了框架的优势与不足,提出基于s s h 框架代 码自动生成的技术解决方案。 第二章关键技术研究,详细介绍了主流的w e b 开发技术,针对各种技术的技 术框架和工作原理,分析了技术整合的可行性及其优势。 第三章提出了s s h 框架整合模型和具体技术路线,并设计了基于框架代码 自动生成的解决方案及实现步骤。 第四章将该技术方案应用于口综合网络管理系统的资源管理子系统中,实现 了自动生成完整的基于j 2 e e 框架分层结构的w e b 应用。 第五章与传统的w e b 开发方式进行比较,该技术方案有效的提高了软件开发 效率,提供了一个稳定、快速、高效的软件开发模式,为构建高质量的软件系统 作出贡献。软件自动化已经受到了社会各界的关注,发展前景广阔。 1 4 本章小结 本章讨论了时代发展对企业级应用提出了更高层次的要求,简单介绍了w e b 开发技术的发展,针对n e t x p e r ti p 综合网管系统目前的不足,希望建立一个稳定、 快速、高效的开发平台,提出了基于框架的代码自动生成技术解决方案。 北京交通大学硕士学位论文主流w e b 开发技术 2 主流w e b 开发技术 尽管2 e e 通过s p , s e r v l e t , e j b 及y d b c 等技术实现了基于w e b 的b s 三 层架构,但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 等大量优秀的分 层结构实现架构 2 1s t r u t s 框架 s a - u t s 是m v c 框架的第一选择。m v c ( m o d e lv i e wc o n l m l l e r ) 是一种目前广 泛流行的软件设计模式,它将事务逻辑同数据表示层分离,同时也将应用的行为( 即 触发事务处理的事件) 单独分离出来,形成模型视图控制器( m 0 d c l v i e w 坨o i i b o l l e r ) 结构,简称m v c 结构【l o l 。 s u e t s 在英文中是“支架、支撑”的意思,这表明了s u e t s 在w e b 应用开发 中的巨大作用,采用s u e t s 可以更好地遵循m v c 模式。三个部分以最少的耦合, 协同工作。从而提高应用的可扩展性及可维护性。s t r u t s 作为m v c 模式的典型实 现,对m o d e l 、v i e w 和c o n t r o l l e r 都提供了对应的实现组件。其具体的实现如图 所示1 1 1 】 1 m o d e l 部分 图2 - 1 :s u u l s 框架结构图 f i g m e2 - 1 :f r a m e w o r ko f s t r u t s s u e t s 的m o d e l 部分即图中的m o d e l 部分,由a c t i o n f o r m 和j a v a b e a n 组成。 其中a c t i o n f o r m 用于封装用户请求参数,所有的用户请求参数由系统自动封装成 a c t i o n f o r m 对象,该对象被a c t i o n s e r v l e t 转发给a c t i o n ,然后a c t i o n 根据 6 北京交通大学硕士学位论文主流w e b 开发技术 a c t i o n f o r m 里的请求参数处理用户请求。 而j a v a b e a n 则封装了底层的业务逻辑,包括数据库访问等。在更复杂的应用 中,j a v a b e a n 所代表的绝非一个简单的j a v a b e a n ,可能是e j b 组件或者其他的业 务逻辑组件。 2 v i e w 部分 s t r u t s 的v i e w 部分采用j s p 实现。s 臼- u t s 提供了丰富的标签库,通过这些标 签库可以最大限度地减少脚本的使用。这些自定义的标签库可以实现与m o d e l 的 有效交互,并增加了显示功能。 整个应用由客户端请求驱动,当客户端请求被a c t i o n s e r v l e t 拦截时, a c t i o n s e r v l e t 根据请求决定是否需要调用m o d e l 处理用户请求,当用户请求处理 完成后,其处理结果通过j s p 呈现给用户。 3 c o n t r o l l e r 部分 s t r u t s 的c o n t r o l l e r 由两个部分组成: 系统核心控制器 业务逻辑控制器 其中,系统核心控制器即图中的a c t i o n s e r v l e t 。该控制器由s t r u t s 框架提供, 继承h t t p s e r v l e t 类,因此可以配置成一个标准的s e r v l e t 。该控制器负责拦截所有 h t t p 请求,然后根据用户请求决定是否需要调用业务逻辑控制器,如果需要调用 业务逻辑控制器,则将请求转发给a c t i o n 处理,否则直接转向请求的j s p 页面。 业务逻辑控制器即图中的a c t i o n 部分,负责处理用户请求,但业务逻辑控制 器本身并不具有处理能力,而是调用m o d e l 来完成处理【1 1 l 。 当w e b 容器一接收到客户请求就会交给a c t i o n s e r v l e t 类,根据 s l r u t s - c o n t i g x m l 文件的配置信息选择合适a c t i o n 来处理请求,并通过a c t i o n f o r m 传递请求过程中的数据。通过重写e x c e c u t e 0 方法以完成自己的处理消息,该方法 在调用业务处理以后会放回一个a c t i o n f o r w a r d 对象来选择对应的j s p ,完成页面 的跳转。 s t r u t s 的配置文件s t r u t s - e o n f i g x m i 在控制器和视图问起到了黏合剂作用,控 制器之所以能够选择对应的j s p ,以及j s p 能够通过对应的控制器查询到模型中的 数据都是依赖该文件。通过配置文件很好的降低了系统的耦合度,灵活的实现代 码复用。 为了解决j s p 中嵌套j a v a 代码使得页面结构不清晰的问题,s t r u t s 还提供了一 套标签库,提供了非常多的标签,用途非常广泛并且功能强大,大致分为五类: 北京交通大学硕士学位论文主流w e b 开发技术 b e a nt a g s :该标签库包含的标签可以用来创建b e a n 、访问b e a n 和访问 b e a n 韵属性。同时提供了依据c o o k i e s 、h e a d e r s 和p a r a m e t e r s 的值刨建 相关b e a n 的能力; h t m l t a g s :该标签库包含的标签可以用来创建s t r u t s 输入表单; l o g i ct a g s :该标签库包含的标签可以用来进行逻辑判断、集合迭代和流 程控制: n e s t e d t a g s :该标签库建立在前三个标签库的基础上,具有前三个标签 库的所有功能,只是允许标签阃的嵌套; t i l e st a g s :该标签库包含的标签可以用来创建t i l e s 样式的页面。 在j s p 中使用s t r u t s 标签,可以通过a c t i o n f o r m 类进行页面展示数据的获得 和表单的提交,页面中结构清晰,代码简练,很大程度上使得页面和后台逻辑分 离。 s t r u t s 是一种先进的、功能强大的、结构灵活的架构方式,体现了m v c 设计 模式的特点。对应用程序的显示、表示和数据的后端代码进行了抽象,整合了j s p 和j a v as e r v l e t 的技术优势,利用t a g i i b 获得可重用代码和抽象j a v a 代码,利用 a c t i o n s e r v l e t 配合s t r u t s - c o n f i g x m l 实现对整个系统导航。增强了开发人员对系统 的整体把握,提高了系统的可维护性和可扩充性【1 2 1 。 2 2h i b e r n a t e 框架 h i b e r n a t e 是目前最流行的开源对象关系映射( o r m ) 框架。o i l m 的全称是 o b j e c tr e l a t i o nm a p p i n g 对象,关系映射1 1 3 l 。o r m 并不是一种具体的产品,而是一 类框架的总称。它概述了这类框架的基本特征:完成面向对象的程序设计语言与 关系数据库的映射。基于o r m 框架完成映射后,既可利用面向对象程序设计语 言的简单易用性,又可利用关系数据库的技术优势。o r m 也可理解是一种规范, 具体的o r m 框架可作为应用程序和数据库的桥梁。o i l m 框架是面向对象程序设 计语言与关系数据库发展不同步时的中问解决方案。 h i b e r n a t e 是一个优秀的开源的j a v a 对象持久层轻量级封装框架,它通过 r u n t i m er e f l e c t i o n 提供了一种对象和数据库中的关系表的映射机制。它是j 2 e e 分 层结构中数据层的架构实现f i “。 8 北京交通大学硕士学位论文主流w e b 开发技术 图2 - 2 :h i b e r n a t e 关系对象映射机制 f i g u r e2 - 2 :h i b e r n a t eo b j e c t - r e l a t i o n a lm a p p m gm e c h a n i s m h i b e r n a t e 的对象映射机制是通过x m l 文件来实现的,h i b e r n a t e 会在代码第一 次调用h i b e r n a t e 连接的时候,根据映射文件生成对象表映射。在这种机制下,上 层业务逻辑层所读些的数据都是业务对象,而不是诸如r e s u l t s 既没有脱离数据层 的对象,从而简化了业务逻辑层的代码。 h i b e n r a t e 支持o r a c l e 、d b 2 、s y b a s e 、s q i s e r v e r 、m y s q i 、p o 孵e s q l 等几 乎所有的商业数据库,它可以使用外部提供的连接池,也可以自己建立连接池。 对业务逻辑应用层来说,所有的底层j d b c j t a ( 事务处理) 都被抽象了,h i b e r n a t e 会照管所有的细节。 目前o r m 框架的产品非常多,除了各大著名公司的产品外,甚至其他一些 小团队也都有推出自己的o r m 框架。目前流行的o r m 框架有如下产品: 1 大名鼎鼎的h i b e r n a t e h i b e r n a t e 出自g a v i nk i n g 的手笔,是目前最流行的开源o r m 框架,其灵巧 的设计,优秀的性能,以及丰富的文档都是其迅速风靡全球的重要因素 2 传统的e n t i t ye j b t n i l t ye j b 实质上也是一种o r m 技术,是一种备受争议的组件技术,很多人 说它非常优秀,也有入说它一钱不值。事实上,e j b 为j 2 e e 的蓬勃发展赢得了 极高的声誉。e j b 作为一种重量级,高花费的o r m 技术,具有不可比拟的优势。 9 北京交通大学硕士学位论文主流w e b 开发技术 但由于其必须运行在e j b 容器内,而且学习曲线陡峭,开发周期及成本相对较高, 因而限制了e j b 的广泛使用。 3 i b a t i s a p a c h e 软件基金组织的子项目,与其称它是一种o r m 框架,不如称它是一 种s q lm a p p i n g 框架。相对h i b e r n a t e 的完全对象化封装, i b a t i s 更加灵活, 但开发过程中开发人员需要完成的代码量更大,而且需要直接编写s q l 语句 4 o r a c l e 的t o p l i n k 作为一个遵循o t n 协议的商业产品,t o p l i n k 在开发过程中可以自由下载 和使用,但作为商业产品使用后,则需要收取费用可能正是这一点,导致了 t o p l i n k 的市场占有率低下。 5 o b o b 是a p a c h e 软件基金组织的子项目。开源的o r m 框架,但由于开发文 档不多,而且o j b 的规范并不稳定,因此并未在开发者中赢得广泛的支持。 h i b e r n a t e 能在众多的o r m 框架中脱颖而出,因为h i b e r n a t e 与其他o r m 框 架对比具有如下优势: 透明地提供对象与关系数据库的映射,以统一的接口方式支持多种数据 库。提供复杂的缓存机制和锁定策略,大大减少了针对数据库的操作; 开源和免费的l i c e n s e ,方便需要时研究源代码、改写源代码并进行功能 定制; 轻量级封装,避免引入过多复杂的问题,调试容易,减轻程序员负担; 具有可扩展性,a p i 开放,功能不够用时,可以自己编码进行扩展; 开发者活跃,产品有稳定的发展保障。 2 3 s p r i n g 框架 2 0 0 3 年,j 2 e e 领域出现一个新的框架:s p r i n g ,s p r i n g 对实用主义j 2 e e 思 想进一步改造和扩充,使其发展成更开放、清晰、全面及高效的开发框架。s p r i n g 作为开源的中问件,独立于各种应用服务器,甚至无须应用服务器的支持,也能 提供应用服务器的功能,如声明式事务等【1 5 l 。 s p i m g 是一个开源的、轻量级的j 2 e e 应用程序框架和容器。它提供j 2 e e 应 用程序中一些公共的、基础性的服务。包括查找和定位服务、事务管理、统一的 资源配置管理和线程管理。业务对象在s p r i n g 容器中运行,s p r i n g 负责管理业务 对象的生命周期和他们之间的相互调用。 0 北京交通大学硕士学位论文主流w e b 开发技术 s p r i n g 致力于j 2 e e 应用的各层的解决方案,而不是仅仅专注于某一层的方 案。可以说s p r i n g 是企业应用开发的“一站式”选择,并贯穿表现层、业务层及 持久层。然而,s p r i n g 并不想取代那些已有的框架,而是可以与它们无缝地整合。 总结起来。s p r i n g 有如下优点: 低侵入式设计,代码污染极低; 独立于各种应用服务器,可以真正实现w r i t eo n c e ,r u na n y w h e r e 的承 诺: s p r i n g 降低了业务对象替换的复杂性; s p r i n g 组件并不完全依赖于s p r i n g ,开发者可自由选用s p r i n g 框架的部 分或全部。 圈2 - 3 :s p r i n g 框架结构 f i g u r e2 - 3 :f r a n w o r ko f s p r i n g 框架是一个分层架构由7 个定义良好的模块组成s p r i n g 模块构建在核心容 器之上核心容器定义了创建配置和管理b e a n 的方式。组成s p r i n g 框架的每个 模块或组件都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的 功能如下1 1 卅: 1 核心容器。核心容器提供s p r i n g 框架的基本功能,核心容器的主要组件是 b e a n f a c t o r y ,它是工厂模式的实现,b e a n f a c t o r y 使用控制反转i o c 模式将应用 程序的配置和依赖性规范,与实际的应用程序代码分开。 2 s p r i n gc o n t e x t 。s p r i n g 上下文是一个配置文件,向s p r i n g 框架提供上下文 信息。s p r i n g 上下文包括企业服务,例如j n d ie j b 电子邮件国际化校验和调度 功能。 3 s p r i n ga o p 。通过配置管理特性s p r i n g a o p 模块直接将面向方面的编程功 北京交通大学硕士学位论文主流w e b 开发技术 能集成到s p r i n g 框架中,所以可以容易地使s p d n g 框架管理的任何对象支持a o p 。 s 州n g a o p 模块为基于s p r i n g 的应用程序中的对象提供了事务管理服务。通过使 用s p r i n g a o p ,不用依赖e j b 组件就可以将声明性事务管理集成到应用程序中。 4 s p r i n g d a o 。为j d b cd a o 抽象层提供了有意义的异常层次结构,可用该 结构来管理异常处理和不同数据库供应商抛出的错误消息异常。层次结构简化了 错误处理,并且极大地降低了需要编写的异常代码数量,例如打开和关闭连接。 s p r i n g d a o 面向j d b c 的异常遵从通用的d a o 异常层次结构。 5 s p r i n go r m 。s p r i n g 框架插入了若干个o r m 框架,从而提供了o r m 的 对象关系工具,其中包括j d oh i b c r n a t e 和i b a t i ss q im 印,所有这些都遵从s p r i n g 的通用事务和d a o 异常层次结构。 6 s p r i n gw e b 模块。w e b 上下文模块建立在应用程序上下文模块之上,基于 w e b 的应用程序提供了上下文,所以s p r i n g 框架支持与s t r u t s 的集成。w e b 模块 还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 7 s p r i n gm v c 框架。m v c 框架是一个全功能构建w e b 应用程序的m v c 实 现。通过策略接口使m v c 框架高度可配置。m v c 容纳了大量视图技术,其中包 括j s p 、v e l o c i t y 、t i l e s 、i t e x t 和p o i 框架的功能,可以用在任何j 2 e e 服务器中, 大多数功能也适用于不受管理的环境。s p r i n g 的核心要点是支持不绑定到特定 j 2 e e 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同j 2 e e 环境w 曲或e j b 独立应用程序以及溺试环境之间重用 2 4x d o c l e t 技术 x d o c l e t 是一个代码生成工具,它可以把开发人员从j a v a 开发过程中繁重的重 复劳动中解脱出来。x d o c l e t 可以让应用系统开发的更加快速,而只需要付比原先 更少的努力。把冗长面又必需的代码交给它完成,不仅避免了“重复发明轮子”, 还可以使应用系统更加易于管理。只不过是在代码的注释里,多加一些类j a v a d o c 属性。讨论x d o c i c t ,有一点比较容易产生混淆,那就是x d o c l c t 不但是一系统的 代码生成应用程序,而且它本身还是一个代码生成框架。虽然每个应用系统的细 节千变万化,比如:e j b 代码生成和s t r u t s 代码生成是不一样的,但这些代码生成 的核心概念和用法却是类似的【ln 。 a n t 是j a v a 平台下的批处理命令执行程序能自动完成编译,测试,打包, 部署等等一系列任务。主要使用a n t 提供的任务,根据源代码中的加入的标签, 调用x d o c l e t 的模板生成各层代码框架,以及生成配置文件等。 北京交通大学硕士学位论文主流w e b 开发技术 x d o c l e t 是一个通用的代码生成实用程序,是一个扩展的j a v a d o cd o c l e t 引擎 ( 现已与j a v a d o cd o c l e t 独立) ,x d o c l e t 是e j b d o c l e t 的后继者,而e j b d o c l e t 是由 r i c k a r d o b e r g 发起的。它允许使用象j a v a d o c 标记之类的东西来向诸如类、方法 和字段之类的语言特征添加元数据。随后,利用这些额外的元数据来生成诸如部 署描述符和源代码之类的相关文件。可以创建自己的j a v a d o c t a g s 进而利用 x d o c l e t 中的t e m p l e te n g i n g 基于这些 t a g s 生成源代码或其他文件,例如x m l 的 d e p l o y m e n td e s c r i p t o r s x d o c l e t 继承了j a v a d o c 引擎的思想,允许根据定制j a v a d o c 标记生成代码 和其他文件。当然,x d o c l e t 也可以访问整个解析树。这样,它就可以访问类、类 的包结构和类的方法。 x d o c l e t 提供了自己的模板引擎。该模板引擎在概念上类似于j s po a v as e r v e r p a g e s ) 技术。它实质上包含两类标记:块标h 2 ( b l o c kt a g ) 和内容标记( c o n t e n tt a g ) 。 块标记控制如j a v a 编程语言中的i f 和f o r 语句之类的流。内容标记打印当前解 析树上下文的片段,如类名称、方法名称和参数等等。 x d o c l e t 由三个主要组件组成: x j a v a d l o c 引擎; x d o c l e t 引擎: 模块。 模块由几个部分组成: 任务; 子任务; 标记处理程序; 模板。 x j a v a d o c 引擎:x 1 a v a i m c 解析j a v a 源文件,然后构建有关类和语言特征 包、方法和字段以及元数据的信息树。x j a v a d o c 引擎通过一个易于使用的a p i 提 供访问。该a p i 提供了与带有一些额外特征的j a v a d o c a p i 相同的类信息,这些 额外特征与存储及读取元数据以及其他结构相关联。x j a v a d o c 增加了在运行时修 改j a v a d o c 标

温馨提示

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

评论

0/150

提交评论