(计算机应用技术专业论文)基于bs架构的轻量级web框架的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于bs架构的轻量级web框架的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于bs架构的轻量级web框架的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于bs架构的轻量级web框架的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于bs架构的轻量级web框架的设计与实现.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

基于b s 架构的轻量级w 曲框架的设计与实现 中文摘要 基于b s 架构的轻量级w e b 框架的设计与实现 中文摘要 在企业应用系统开发上,j 2 e e 技术占有一个十分显著的地位。从最初经典的 e j b 架构,到最近流行的轻量级容器架构。众多的企业和开源社区在此做出了深入 的研究,并提供了许多优秀的基于j 2 e e 的框架。本文探讨了轻量级框架技术的发 展,并针对表示层、业务逻辑层和数据持久层进行了探讨,分析其中的关键技术, 设计并实现一个基于b s 架构的轻量级的w 曲框架。 本文的主要工作是:在b s 架构下,设计并实现一个轻量级的w 曲框架 l w f r a m e w o r k ,实现包含表示层、业务逻辑层和数据持久层三个层次的底层框架, 并将其应用到实际的项目中。 在表示层本文将其分为客户端表示层和服务端表示层,并通过a j a x 技术实现数 据的请求与响应,并在不刷新页面的情况下实现页面的动态更新,集成数据的有效 性检查。在业务逻辑层使用1 0 c 设计模式、a o p 面向方面编程等技术进行实现,在 模块之间使用p o j 0 对象进行数据的传递,并完成日志记载的关注点分离。在数据 持久层,对数据c r u d 操作进行封装,提供常用的d a o 对象接口和底层功能的实 现,并完成数据库连接池和并发处理的设计与实现。 本文还给出了一个基于l w f h r n e w o r k 框架的w 曲软件项目管理系统的具体实 例。 关键词:b s ,轻量级,w 曲框架,软件分层 作者:李亦飞 指导教师:朱巧明 a b s t r a c t1 1 1 ed e s i g na n di m p l e m e n to fal i g | l t w e i g h tw c bf r a m e w o r k b a s e do nb s 觚h i t e c t u r e t h e d e s i g na n di m p l e m e n to fal i g h t w e i g h tw e b f r a m e w o r kb a s e do n 】b sa r c h i t e c t u r e a b s t r a c t t h ej 2 e et e c h n o l o g yh 0 1 d s 柚e x 仃锄e l yr e m a r k a b l es t a t u si nt h ee n t e 叩r i s e a p p l i c a t i o ns y s t e md e v e l o p m e n tt e c h n 0 1 0 9 i e s f r o mt h ec l a s s i c a le j ba r c h i t e c t u r e ,t ot l l e r e c e m l yp o p u l a rl i g h t w e 噜h tc o n t a i n e ra r c l l i t e c t u r e ,m a n ye n t e r p r i s e s 粕do p e ns o u r c e c o 删【i l u i l i t i e sm a d ed e 印r e s e a r c ho ni t ,觚dh a v ed e v e l o p e dm a n yo u t s t a n d i n g 触m e w 0 1 k w h i c hb a s e do nt h ej 2 e et e c h n o l o g y t h i sa n i c l e d i s c u s s e dt h ed e v e i o p m e m0 f l i 曲t w e i g h t 触m e w o r k t e c h n o l o g y , c 删e do nm ed i s c u s s i o nt 1 1 a ta i m e da tt h e p r e s e n t a t i o nl a y e r t 1 1 eb u s i n e s sl o g i cl a y e ra 1 1 dt l l ed a t ap e r s i s t e n c el a y e r 柚a l y z e dt 1 1 e e s s e n t i a lt e c h i l i c a li i ld e t a i l ,m e o v e rd e s i g n e d 觚di m p l e m e n t e dal i 曲t w e i g h tw e b 纳m e w o r kb a s e do nb s a r c l l i t e c t u r e 1 1 l em a i nt a s ko ft h ea n i c l ei st 0d e s i g na n di m p l e m e n tal i g h t w e i g h tw e b 劬m e w o r kl w f h m e w o r kb a s e do nb sa r c h i t e c t u r e ,a n da p p l yi ti n t oar e a lp r o j e c t u f r a m e w o r ki s t l l eb o n o mf i r a m e w o r kt h a ti n c l u d e sp r e s e m a t i o nl a y e r ,m eb u s i n e s s l o g i cl a y e ra n dt h ed a t ap e r s i s t e n c el a y e r h lt h i sa r t i c l e ,t l l ep r e s e m a t i o nl a y e ri sd i v i d e di n t 0c l i e n ta n ds e e rl a y e r ;t l l ed a t a r e q u e s ta n dr e s p o n s ei sr e a l i z e db ya j a xt e c h i l i c a l ,t 1 1 ed y n a 面cp a g e sd a t au p d a t ei s c a m e do u tw i t h o u tr e 仔e s h i n gt h ep a g e ,a n dt 1 1 ed a t av a l i d a t i o nc h e c ki si n t e 伊a t e da sw e l l t h eb u s i n 9 s sl o g i cl a y e rw a sr e a l i z e db yi o cd e s i g np a t t 锄a n da o p a s p e c t o f i e n t e d p r o g m m m i n gt e c h l l i q u e s ,t l l ed a t at m n s f 色rb e t w e e nt 1 1 em o d u l e sw a sc o m p l e t e db yp o j o o b j e c t s ,a n dt h es e p a r a t i o no fl o g g i n gc o n c e mw a sa l s oi m p l e m e n t e di n s i d e h lt h ed a t a p e r s i s t e n c el a y e r t l l ed a t ac r u do p e r a t i o n sw e r ep a c k a g e d ,t 1 1 ec o m m o nd a oi n t e r f a c e s w e r ep r o v i d e d ,t 1 1 eb o t t o m f u n c t i o n ,t l l ed a t a b a s e c o n n e c t i o np o o la n dc o n c u l t e m p r o c e s s i n gw e r ed e s i g n e da n di m p l e m e n t e dt o o n i sa r t i c l ea l s og i v e st h er e a l i z a t i o no fl w f r a m e w o r k 书a s e dw 曲s o r w a r ep r o j e c t m a n a g e m e n ts y s t e m - k e y w o r d s :b s ,l i g h t w e i 曲t ,w 曲f h m e w o r k ,l a y e r e ds o f t w a r e 一一 w h t t e nb yu f e i s u p e r 、r i s e db yz h uq i a o i i l i n g 苏州大学学位论文独创性声明及使用授权的声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学 或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡 献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律 责任。 研究生签名:胁乇日期: 学位论文使用授权声明 刃孑f l 、珈 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文 合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本 人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 研究生签名: 导师签名: 序弃诗 日期: 力矿8 o :矾77 、孑沪 基于b s 架构的轻量级w 曲框架的设计与实现 第一章绪论 1 1 课题背景 第一章绪论 随着h l t e m e t 技术的兴起,w 曲应用程序使用户工作界面是通过w w w 浏览器 来实现,极少部分事务逻辑在浏览器端实现,主要事务逻辑在服务器端实现。客户 端并不参与运算,只是简单地接收用户的请求,显示最后的结果。由于客户端并不 需要参与计算,所以对客户端的计算机电脑配置要求较低,这样就大大简化了客户 端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本,实 现不同的人员,从不同的地点,以不同的接入方式( 比如l n 、w a n 、h l t r a n 刊e t 等) 访问和操作共同的数据库。它能有效地保护数据平台和管理访问权限,服务器 数据库也更安全。 j 2 e e 是当前w 曲应用程序的主流架构之一,j 2 e e 提供了中间层集成框架,来 满足可用、可靠以及可扩展的应用需要,j 2 e e 应用程序架构主要经历了两个大的发 展阶段【l j : 阶段一:在j s p 画面中结合业务逻辑、服务器端处理程序和h r m l ,在j s p 画 面中同时实现显示、业务逻辑和流程控制,从而快速地完成w 曲应用开发。这种模 型的不足之处:不利于应用扩展和更新;业务逻辑和表示逻辑混合在j s p 画面中没 有进行抽象和分离,不利于应用系统业务的重用和改动。 阶段二:基于m v c 模式的框架。s e r v l e t 处理数据存取和画面导航,j s p 处理 数据显示。使j a v a 工程师和h t m l 设计者分别工作于他们所擅长和负责的部分。 当应用的一部分发生改变时,并不强求其他部分也跟着发生改变。h t m l 开发人员 改变程序的外观时,并不需要改变后端s e r 、,l e t 的工作方式。把应用逻辑、处理过程 和显示逻辑分成不同的组件实现。弥补了阶段一中的不足。 银行、证券系统以及大型企业信息化平台,甚至一些小公司,都争相使用j 2 e e 应用。几年前,j 2 e e 应用是很“贵族 的产品,那时候使用e j b 作为j 2 e e 的核心, 开发成本,部署成本高,开发者的学习曲线也陡峭。今天,轻量级j 2 e e 应用的流 第一章绪论基于b s 架构的轻量级w 曲框架的设计与实现 行,让j 2 e e 应用开始进入寻常百姓家。当然,轻量级j 2 e e 应用是对经典j 2 e e 应 用的简化,在保留经典j 2 e e 应用的架构、良好的可扩展性、可维护性的基础上, 简化了j 2 e e 应用的开发,降低了j 2 e e 应用的成本。 e j b 是经典j 2 e e 架构的核心技术之一,但是经典j 2 e e 架构的缺点是系统开销 很大,一些负载也源于e j b 。为了解决这些问题,j 2 e e 兴起了非日b 架构的“轻量 级容器 【2 】。所谓容器,指应用代码的运行框架,业务对象在容器里运行,被容器 管理,然后组织成整个架构。其特点是可以管理业务代码,同时并不在代码中,强 制加入对容器的依赖。可以快速部署,快速启动。 “轻量级 包含两个概念:简化的编程模型和更具响应能力的容器,消除与传 统j 2 e e a p i 有关的不必要的复杂性和限制;同时缩短应用程序的部署时间,这对于 需要经常测试调试的开发是很有帮助的。 框架( f r a h l e w o r k ) 作为业务系统和设计模式的更高级模型抽象,为应用系统 的开发提供了很大的便利。框架除了提供丰富的组件库,更重要的是框架根据自身 的设计思想为系统开发提供开发结构,规范化开发流程。优秀的框架能大大提高系 统的开发效率,为组件的设计,测试和部署提供指导。目前轻量级框架发展非常繁 荣,主要针对表示层、业务逻辑层、数据持久层及整个应用程序。 在w 曲层面,主要采用m v c ( m o d e l 二e w o n 仃d l l e r ) 体系结构。比如:s t n l t s 、 w e b w 0 此、j s f 和t a p e s 时。 在业务逻辑层,对业务组件生命期,事务处理进行管理。比如:s 面n g 、a v a l o n 、 p i c o c o n t a i l l e r 和j d o i 册a m e w o r k 。 在数据持久层,为整个项目提供一个高层、统一、安全和并发的数据对象持久 机制。完成对各种数据对象进行持久化的工作。比如:h i b e m a t e 、j d o 和i b a t i s 。 这些不同层次框架的联合作用,相当于在j 2 e e 体系结构中的e j b 组件所发挥 的作用,为大多数的项目提供了便利。 1 2 轻量级w e b 框架国内外应用现状 目前,轻量级w 曲框架空前繁荣,在网络上每隔一两个星期就会有新的框架发 布,比较好的框架,老的有s t m t s 、w 曲w o r k ,还有现在如日中天的s p r i n g ,以及 基于b s 架构的轻量级w 曲框架的设计与实现 第一章绪论 t a p e s t r y 、j s f 等等,这些大都是著名团队的作品。另外还有一些团队,也相当出色, 如d i n a i i l i c a 、v r a p t o r 等,通过提供一些现成的辅助类,同时也促进生成效率的提 高。国内金蝶a p u s i c 应用服务器经过沉淀积累,在稳定性、可靠性、执行性能和安 全性等方面都已经取得了相当可观的成果。 : 目前业界在轻量级的概念上主要有3 个核心问题【3 】: 封装的粒度 组件的粒度一直是s a ( s o r w a r ea r c m t e c t u r e ) 的最大的问题,日b 组件要求把 业务组件封装成粗粒度的业务组件。轻量级容器可以定义更为细粒度的组件,甚至 这个组件只有一个对象。以依赖注入d i ( d 印e n d e n c yi i l j e c t i o n ) 为代表的解耦模式, 可以让组件不去依赖容器( 运行环境) 的a p i 。d i 作为容器的管道,承担中间人的 角色,让使用者和提供者毫无关联。对于以何种粒度去设计业务组件,这就是业务 的具体需求所决定的。 组件接口 组件要能够像的u s b 设备一样,能够即插即用。轻量级容器框架通过反向控制 1 6 c ( h l v e r s i o no fc o n 仃0 1 ) 让容器具有主动权,去管理插进来的组件。只要组件是 符合标准的,就可以被轻量级容器管理。 r u m l i n ga n y w h e r e “w 五t eo n c e ,m na n y w h e r e 是很多框架的口号,轻量级容器框架让组件以简 单j a v a 对象p o j o ( p 1 a i no l dj a v ao b j e c t ) 【4 】的形式存在,只要你有j v m 就可以运 行它。这样,组件根本就是一个独立的功能集成类,不需要容器就可以实现测试行 为。 目前,轻量级容器在o p e ns o u r c e 范围已经得到了广泛的认可,而且,作为下一 代j 2 e e 构架的基础有着无法比拟的优势。已存在的轻量级容器框架中有绝大部分 来自o p e ns o u r c e 社群,这也给对这项技术的了解降低了门槛。 1 3 研究目标和意义 从理论方面,深入分析框架原理和当前主流轻量级框架的体系结构,研究框架 的相关技术,对流行开源框架进行理论研究和代码解析,对框架原理和技术进行总 第一章绪论基于b ,s 架构的轻量级w 曲框架的设计与实现 结归纳,其中重点研究了i o c 设计模式、a o p 面向方面编程、反射原理和j v m 等 技术。 在以往的开发中,采用j 2 e e 技术开发w 曲应用,对于开发人员来讲,并不是 一件轻松的事情需要很多方面的技术和知识,包括:h t m l 语法、v b s c r i p t 或 j a v a s 嘶p t ,j s p 技术、s e n ,l e t 技术、e j b 技术、数据库技术、应用服务器、开发工具 等。采用j 2 e e 技术开发w 曲应用系统,从某种意义上来讲,对开发人员是要求比 较高。并且在开发中涉及的相关内容比较多,不论从开发周期上,开发成本上都是 比较高的。目前流行的框架如s t m c t s 、s p r i n g 或h i b e m a t e 等等,功能比较强大,通 过x m l 文件对框架进行配置。同时存在以下几个问题: 主流框架只对特定层次进行支持。如s t m c t s 对表示层进行支持,s p 咖g 支持申 明式的事务管理,h i b e m a t e 对数据持久层进行支持,在一个项目中经常需要同 时包含这些框架,因此需要同时包含多个框架的j 缸文件和配置文件。 主流框架通过各自配置文件进行管理,不同的框架使用不同的配置文件,在实 际的开发中由于涉及的业务a c t i o n 、业务数据表比较多,以及相互的关系比较 复杂,常常需要安排专人进行配置文件的管理。 对开发人员的要求较高,学习周期也较长。需要开发人员同时掌握多个框架, 延长了开发周期,增加了开发成本和维护成本。 缺少对w 曲信息管理应用程序通用技术的支持,主流框架并不完成类似画面模 式、画面约束、日志管理、并发处理等内容的实现,而这些通常是w e b 信息管 理应用程序中必须的一些内容。 针对于以上问题,本论文设计并实现了基于b s 架构的轻量级w 曲框架 l w f r a m e w o r k ,l w f r a m e w o r k 是为本论文所研究的轻量级w 曲框架所起的一个名 称。i w f r 锄e w o r k 框架结合a j a x 技术优势,融合i o c 微容器思想,实现a o p 面向 方面编程,并对p o j o 对象实现支持。其目标是为w 曲信息管理应用程序开发,搭 建一个快速开发、功能完善、结构健壮的一个w 如应用程序开发框架。并规范w 曲 开发中的开发流程和技术,为w 曲应用程序开发搭建一个可重复使用的基础平台。 框架包括数据库连接池、例外处理、权限认证、并发处理、日志记载等一些w 曲应 用程序的通用处理,并将这些通用逻辑从业务逻辑中分离出来,使得开发可以将注 基于b 俗架构的轻量级w 曲框架的设计与实现第一章绪论 意力关注在业务上。通用模块采取集中维护的方式,并将更多的功能集成到共同模 块中提高开发效率。由于框架开发的规范性,为进行快速代码生成实现提供了可能。 在开发中,需要编写规范的开发文档,这样就可以通过不同的开发文档生成对应的 代码或代码框架。比如通过数据表的定义文档生成数据表访问类d a o 。通过画面 a c t i o n 定义完成画面项目,画面项目客户端的检查,画面项目服务端的检查等。 设计一个良好软件开发框架结构对于系统的开发、维护和扩展具有重要的意义。 与流行的框架相比,l w f r a m e w o r k 定位简洁快速、高开发效率,避免较长的学习周 期,防止陷入x m l 配置泥潭,本论文也将平时的开发经验,加入到开发中,并且 框架也在实际的项目中得到了验证。 1 4 本论文主要研究和实现的内容 本论文主要研究和实现的内容如下: 1 基于m v c 设计模式的w e b 框架研究 m v c ( m o d e l 二v i e w o n 缸d l l e r ) 是一种软件开发设计模式。它把软件系统分为 三个基本部分:模型( m o d e l ) ,视图( e w ) 和控制器( c o 腑o l l e f ) 。m v c 是一种 成熟的模式,实现一种动态的程式设计。在设计策略中,i m e w o r k 将系统从构 架上分为数据持久层、表示层和业务逻辑层,分别对应m v c 中的三个层次。 2 规范w 曲开发中有关技术的开发方式 对w 曲开发中画面模式、画面约束、连接池、日志管理、例外处理、并发处理 等关键技术进行分析,并给出解决方案。并把这些解决方案整合在本论文中的轻量 级w e b 框架i w f r a m e w o 呔之中。通过整合的w 曲框架,用户可以快捷地甚至透明 地实现这些基本功能。 3 充分体现轻量级的特点 不需要高端的e j b 的支持,只需j s p s e r v l e t 的支持。完成的应用程序可以部署 在诸如j e t t y 、t 0 m c a t 等轻量级的服务器上。使应用程序的部署更简单,更快捷,平 台依赖性更小。 4 使用p o j 0 对象进行分层之间的数据传递 p o j 0 对象是指( p l a i no r d i n a r yj a v ao b j e c t 简单j a v a 对象) ,不使用有状态的 第一章绪论基于b s 架构的轻量级w 曲框架的设计与实现 会话b e a n 避免测试时需要进行繁琐的部署过程,使用简单j a v a 对象p o j o ,不必等 代码部署到服务器上,就可以使用j u l l i t 等测试工具进行单元测试。使程序的调试 和测试更快捷。 5 利用x m l 进行客户端与服务端之间的数据交换 可扩展标注语言x m l 是一种数据交换的标准。利用x m l 格式的数据完成客户 端与服务端的数据交换。客户端将请求内容以x m l 的形式进行发送,服务端将处 理的结果以x m l 的形式发送到客户端。利用x m l 语言的自解释性,客户端在收到 数据后,也能完成对内容的解释。 6 辅助生成业务代码 由于规范了开发方式,通过开发文档可以快速生成数据库访问组件,控制组件, 画面组件等代码。对生成的代码进行简单润色和调整,就能进行编译,大大缩短开 发时间。并可大大减少平时手工编码时,进行代码拷贝时容易发生的代码不完整等 问题,降低b u g 的发生率。 1 5 论文结构 本文共分五章。 第一章绪论。主要介绍了课题背景、轻量级w 曲框架在国内外应用现状、研 究目标和意义以及本论文主要研究的内容和论文结构。 第二章相关技术。依次介绍了框架技术、i o c 设计模式和a o p 面向方面编程、 a j a x 技术和j a v a 反射机制等关键技术。 第三章l w f r a m e w o r k 框架的设计与实现。介绍了框架的设计和实现,以及对 w 曲开发中关键技术在框架中的规范。 第四章w 曲软件项目管理系统中的应用。介绍了l w f r a m e w o r k 框架在w 曲 软件项目管理系统中的应用。 第五章总结与展望。对本文的工作进行总结,并提出展望。 基于b s 架构的轻量级w 曲框架的设计与实现 第二章相关技术 2 1 框架技术 第二章相关技术 软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内 容,问题太多。如果把软件的构建过程看成是传统的建筑过程,框架的作用相当于 为房屋所搭建的“架子”。使用成熟的框架,能让框架来帮组完成一些基础工作,用 户只需要集中精力完成系统的业务逻辑设计。框架一般是成熟,稳健的,可以处理 系统很多基础问题,比如,事务处理,安全性,数据流控制等问题。还有框架一般 都经过很多人使用,所以结构很好,扩展性也很好,而且它是不断升级的,用户可 以直接享受框架升级而带来的好处。 2 1 1 框架的概念 框架( f r a m e w o r k ) 是整个或部分系统的可重用设计,表现为一组抽象组件及 组件实例间交互的方法嘲。另一种定义认为,框架是可被应用开发者定制的应用骨 架。一个框架是一个可复用的设计组件,它规定了应用的体系结构,阐明了整个设 计、协作组件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实 例之间协作的方法。 框架是对于那些试图在所关心的领域构造一个复杂软件系统的用户而言的,框 架利用一系列的对象和它们之间的接口,使用户能够比较容易地完成变化的、不稳 定的剩余部分而得到一个新应用程序。一个框架可以包含一个或多个模式,框架是 各种设计模式的更高级的抽象。一个好的框架可以让程序员专注于业务逻辑的实现, 并且把整个系统分成若干相互独立的层次,减少组件的耦合性,而框架本身也可以 处理系统很多细节问题。 2 1 2 为何使用框架 在软件工程中,软件重用已经成为一个重要的概念。最理想的重用技术是重用 第二章相关技术基于b s 架构的轻量级w 曲框架的设计与实现 产品能够和用户的需求完全致,不需要用户做任何自定义,并且能够无需用户学 习就能够被使用。重用技术可能够适合当前的系统,也要能够适应以后升级的系统。 一个重用产品越是能够被自定义,它越是可能在一个特定的环境下被使用。 自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的 技术的研究和实践。在3 0 多年的时间内,出现多种软件重用技术,如:库函数、模 板、面向对象、设计模式、组件、框架。 框架的最大好处就是代码重用。面向对象系统获得的最大的复用方式就是框架, 一个大的应用系统往往可能由多层互相协作的框架组成。由于框架能重用代码,因 此从已有组件库中建立应用变得非常容易,因为组件都采用框架统一定义的接口, 从而使组件间的通信简单。框架能重用设计。它提供可重用的抽象算法及高层设计, 并能将系统分解成更小的组件,而且能描述组件问的内部接口。这些标准接口使在 已有的组件基础上,通过组装建立各种各样的系统成为可能。只要符合接口定义, 新的组件就能插入框架中,组件设计者就能重用构架的设计。框架还能重用分析。 所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的组件,采用 相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。 2 1 3j a v a 常见的、v e b 开发框架 w a f :全称w 曲a p p l i c a t i o nf r a m e w o r k ,主要是为b s 结构的应用程序的开发 提供一个底层的支持。在j a v a 开发领域中有许多优秀的w 曲开发框架。大多数框 架都实现了m v c 和其他良好的设计模式。以下是对比较成熟的w 曲框架的介绍: 1 w r e b w b r k w 曲w o r k 是由o p e n s y m p h o n y 组织开发的,致力于组件化和代码重用的拉出式 m v c 模式j 2 e ew 曲框架。现在的w 曲w b r k 2 x 前身是黜c k a r do b e r g 开发的 w 曲w 6 r k ,但现在w 曲w b r k 已经被拆分成了x w o r k l 和w 曲w b r k 2 两个项目。x w o r k 简洁、灵活功能强大,它是一个标准的c o n u n a n d 模式实现,并且完全从w 曲层脱 离出来。 2 s t m t s s 咖t s 6 】的主要应用技术j s p ,t a g l i b ,j a v a b e a n ,x m l 等。它是a p a c h e 组织 基于b ,s 架构的轻量级w 曲框架的设计与实现第二章相关技术 的开源项目,目前应用很广泛。基于m v c 模式j 结构很好,s t m t s 是一个框架,而 不是一个库,但s t m t s 也包含了丰富的标记库和独立于该框架工作的实用程序类。 图2 1 显示了s t m t s 的概览。 e v e n t c o n 仃o l l e rb u s i n e s sl o g i c n l r s e r v l e t d i s p a t c h - a c t i o n r e q u e s t 切 s t 兀l c t s - c o n f i g x m l ic l i 朋t f 0 九】i ,a r d b r o s w e r | j。 1r u p d 嘲 v i e w j g e tm o d e l n ij f j s p 1 a p p l i c a t i o ns t a t c r e s p o n 图2 1s 仇l c t s 概览 c l i e mb r o w s e r ( 客户浏览器) 来自客户浏览器的每个h t t p 请求创建一个事件。 w 曲容器将作出一个帅响应。 c o 曲- 0 l l e r ( 控制器) 控制器接收来自浏览器的请求,并决定将这个请求发往何 :处。就s t n l t s 而言,控制器是以s e r v l e t 实现的一个命令设计模式。s t m t s c o n 趣x i i l l 是其配置文件。 b u s i n e s sl o 西c 业务逻辑更新模型的状态,并帮助控制应用程序的流程。就s t m t s 而言,这是通过作为实际业务逻辑“瘦 包装的a c t i o n 类完成的。 m o d e l ( 模型) 的状态模型表示应用程序的状态。业务对象更新应用程序的状 态。a c t i o n f 0 mb e a n 在会话级或请求级表示模型的状态,而不是在持久级的。 j s p 文件使用j s p 标记读取来自a c t i o l l l l o r mb e a l l 的信息。 e w ( 视图) 视图就是一个j s p 文件。其中没有流程逻辑,没有业务逻辑,也 没有模型信息,只有标记。 3 s p r i n g m v c s p r i n g 框架提供了构建w 曲应用程序的全功能m v c 模块【刀。使用s p r i n g 可插 入的m v c 架构,可以选择是使用内置的s p m gw e b 框架,还是使用s t m t s 这样的 w 曲框架。通过策略接口,s p r i n g 框架是高度可配置的,而且包含多种视图技术。 s p r i n g 包含许多功能和特性,被包含在如图2 - 2 所示的7 个模块中。 第二章相关技术基于b s 架构的轻量级w 曲框架的设计与实现 图2 2s 面n g 各功能模块 组成s p d n g 框架的每个模块( 或组件) 都可以单独存在,或者与其他一个或多 个模块联合实现。每个模块的功能如下: c o r e :核心容器提供s p n 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 ) 模式将 应用程序的配置和依赖性规范与实际的应用程序代码分开。 s p m ga o p :通过配置管理特性,s p r i n ga o p 模块直接将面向方面的编程功能 集成到了s p r i n g 框架中。所以,可以很容易地使s p 血g 框架管理的任何对象支 持a o p ,允许定义方法拦截器、切入点等。通过a o p ,在应用程序逻辑上实现 了关注点的横切分离。此外s p r i n g 也提供了源码级的元数据功能,它将各种行 为直接融入应用代码。 s p 咖gd a o :j d b cd a 0 抽象层提供了有意义的异常层次结构,可以用该结构 来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错 误处理,并且极大地降低了需要编写的异常代码数量( 例如打开和关闭连接) 。 s p r i n gd a 0 的面向j d b c 的异常遵从通用的d a o 异常层次结构。 s p n n gc o n t e x t :s p 咖g 上下文是一个配置文件,向s p r i n g 框架提供上下文信息。 s p r i n g 上下文包括企业服务,例如j n d i 、e j b 、电子邮件、国际化、校验和调 度功能。 s p r i n go r m :s p r i n g 框架插入了若干个0 r m 框架,从而提供了o r m 的对象关 系工具,其中包括j d o 、h i b e m a t e 和i b a t i s 。所有这些都遵从s p r i n g 的通用事 基于b s 架构的轻量级w 曲框架的设计与实现第二章相关技术 务和d a o 异常层次结构。 s p m gw 曲模块:w 曲上下文模块建立在应用程序上下文模块之上,为基于w 曲 的应用程序提供了上下文。所以s p 咖g 框架支持与j a k a n as t m t s 的集成。w 曲 模块还简化了处理多请求以及将请求参数绑定到域对象的工作。 s p r i n gm v c 框架:m v c 框架是一个全功能的构建w 曲应用程序的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 。 2 2i o c 模式和a o p 编程 控制反转1 0 c ( h l v e r s i o no fc o n 仃0 1 ) 和面向方面编程a o p ( a s p e c to r i e n t e d p r o 黟a m l i l i n g ) 是在框架实施过程中是两个重要的技术。反转控制重点关注组件的依 赖性、配置以及生命周期。它要求组件的创建是一个被动的过程,组件不被直接创 建,而是由一个特殊的反转控制容器来负责创建,由容器维护组件之间的依赖关系。 同时组件必须遵循一定的规则来说明自己。面向方面编程a o p 目标是利用“横切” 技术,在不破坏对象层次的前提下,将那些影响了多个类的公共行为封装到可重用 模块,进行集中管理。 2 2 1 关注点分离s o c 不良代码通常有两种病征:一是纷乱如麻,纠缠打结,可谓剪不断理还乱;二 是叠床架屋,臃肿不堪。治疗此类病症一个有效的方法是抽象与分解:从问题中抽 象出一些关注点,再以此为基础进行分解。分解后的子问题主题鲜明并且独立,不 会牵一发而动全身。同时具有相同特征的部分可以像代数中的公因子一样提取出来, 减少了代码重复。关注点分离s o c ( s e p a r a t i o no fc o n c e m s ) 是指标识、封装和操 纵关注点的能力,是处理复杂性的一个原则。s o c 是i o c 模式和a o p 产生最原始 动力。 通过功能分解可得到关注点,能够把不同的关注点分离开来,分别处理就是处 理复杂性的一个原则,一种方法。这些关注点可以是组件c o m p o n e n t s ,方面a s p e c t s 或服务s e r v i c e s 。 第二章相关技术基于b s 架构的轻量级w 曲框架的设计与实现 可以通过不同的方式来分离关注点: 首先,可以通过职责划分来分离关注点。面向对象设计的关键所在,就是职责 的识别和分配。每个功能的完成,都是通过一系列职责组成的协作链完成的,当不 同职责被合理分离之后,为了实现新的功能只需构造新的协作链,而需求变更也往 往只会影响到少数职责的定义和实现。无论是对象、模块,还是子系统,它们所承 担的职责都应该具有高内聚性,否则对象之间的松耦合性就失去了基础,成为空谈。 框架模式和设计模式为特定上下文中重复出现的问题提供了通用的职责划分方案。 其次,可以利用软件系统各部分的通用性的不同进行关注点分离。不同的通用 程度意味着变化的可能性不同,将通用性不同的部分分离,有利于通用部分的重用, 也便于对专用部分进行修改。打个比方,一座高楼大厦要想稳固,必须考虑不同部 分的热胀冷缩系数的差异,将不同膨胀比的部分硬连在一起容易引起开裂,这个比 喻说明了稳固的架构的含义。广为人知的框架技术可以用于分离通用部分,而元模 型驱动方法是另一种分离通用性部分的技术。 2 2 2 反转模式i o c 从g o f 设计模式【5 】中,已经习惯一种思维编程方式:h l t e 如c ed r i v e nd e s i g n 接 口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健 壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要被执行: i i c o m p o n e n tc o m p = n e wc o m p o n e n t i m p ( ) ; l c o m p o n e n t i l i l p 是实现接口i c o m p o n e n t 的一个类。i c o m p o n e n t 实现语句表明当 前是在调用的被调用者是c o m p o n e n t h i l p 类的实例c o m p ,由于被调用者名称写入了 调用者的代码中,这产生了接口实现的一个缺陷:彼此相互联系,调用者和被调用 者有紧密联系。这种联系也被称为依赖。 这种依赖在分离关注的思想中是不可忍耐的,必须切割,实现调用者和被调用 者解耦。好莱坞有个著名的理论:“你不要找我们,我们有事会找你 。反转模式i o c ( h l v e r s i o n o f c o n t r 0 1 ) 可以延缓接口的实现。接口如同空的模型模板,在必要时, 需要向模型模板注射模型,这样才能成为一个模型实体,因此,将控制接口实现的 过程称为注射。m a n i nf o w l e r 给i o c 起了一个更为直观的名字:依赖注射d e p e n d e n c y 基于b s 架构的轻量级w 曲框架的设计与实现第二章相关技术 h j e c t i o n ( 依赖注射) 【蜘,也就是将类之间的关系通过第三方进行注射,不需要类自 己去解决调用关系。新的i o c 模式d e p e n d e n c yh j e c t i o n 模式由此产生了,d i 模式 是依赖注射的意思,也就是将依赖先剥离,然后在适当时候再注射进入。i o c 有三 种注射模式【9 】,具体如表2 1 所示。 表2 1 三种1 0 c ( d i 模式) 注射模式 :类型描述应用系统 类型一服务需要实现专门的接口,由对象提供这 1 e j b j 2 e e 些服务,从对象查询依赖性。 2 a v a l o n 类型二通过j a v a b e a i l 的属性( 例如s e t t e r 方法) 1 s p r i n gf h m e w o r k , 分配依赖性。 2 w 曲w b r l 【x w b r k 类型三依赖性以构造函数的形式提供,不以 1 p i c o c o n t a i n e r , j a v a b e 卸属性的形式公开。 2 h i v e m i n d 在传统情况下,为了实现调用者和被调用者解耦、分离,一般是通过工厂模式 实现的。但是工厂模式中工厂其实还是与被调用者有些间接的联系,使用i o c 彻底 解耦了调用者和被调用者之间的联系。1 0 c 实际上并没有消除调用者和被调用者之 间的联系,只是转移了这种联系。这种联系转移实际也是一种分离关注,它的影响 巨大,它提供了a o p 实现的可能。 2 2 3 面向方面编程a o p 面向方面编程a o p ( a s p e c t0 r i e n t e dp r o g r a m m j n g ) 是面向对象编程0 0 p 的一 个延续,a o p 并不是0 0 p 的一个替代品,a o p 和0 0 p 的编程思想并不矛盾,它是 o o p 的一个补充和完善。0 0 p 利用封装、继承和多态性等概念建立一种对象的层次 关系,但是对于需要分散、不具有继承层次的需求的时候,o o p 无法避免代码的重 复。a o p 技术的目标是利用一种称为“横切 技术,在不破坏对象层次的前提下, 将那些影响了多个类的公共行为封装到可重用模块。所谓“方面 就是将那些与业 务模块无关、却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码。a o p 降低模块之间的耦合度,提供系统的可操作性和可维护性。 实现a o p 的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的 第二章相关技术 基于b s 架构的轻量级w 曲框架的设计与实现 方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式, 引入特

温馨提示

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

评论

0/150

提交评论