(计算机软件与理论专业论文)轻量级web系统的研究与实现.pdf_第1页
(计算机软件与理论专业论文)轻量级web系统的研究与实现.pdf_第2页
(计算机软件与理论专业论文)轻量级web系统的研究与实现.pdf_第3页
(计算机软件与理论专业论文)轻量级web系统的研究与实现.pdf_第4页
(计算机软件与理论专业论文)轻量级web系统的研究与实现.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

上海师范大学硕士学位论文摘要 论文题目:轻量级w e b 系统的研究与实现 学科专业:计算机软件与理论 学位申请人:徐英杰 指导教师姓名:陆黎明 摘要 m v c 模式是一种应用系统结构的缩写,这种系统结构由模型、视图和控制 器构成。m v c 模式将应用系统的各功能划分开来,各司其责,这样使系统的结 构更加清晰,易于理解,也更能适应系统需求的变化。其中模型是执行某些任 务的代码,它并没有任何逻辑决定它对用户端的表示方法。模型端只有纯粹的 功能性接口,通过这些接口可以取得模型端的所有功能。 控制反转( i n v e r s i o no fc o n t r 0 1 ) 也称作依赖注入( d e p e n d e n c y i n j e c t i o n ) ,其设计思想就是不创建对象,但是描述创建它们的方式。控制反 转的目标并非为软件系统带来更多的功能,而是为了提升组件重用的概率,并 为系统搭建一个灵活、可扩展的平台。 在传统的交互方式中,由用户触发一个请求到s e r v e r ,再由s e r v e r 返回 一个新的页面倒c l i e n t ,即使为了得到一个简单的数据,都要刷新页面,浪费 时间和带宽,降低了效率。异步交互( a s y n c h r o n o u si n t e r a c t i o n ) 机制实现了 后台数据交换,使w e b 页面在不“刷新 的情况下,有效地获得数据库数据, 减少重负数据的交互,使操作者的业务操作更直接,从而提高了w e b 应用的执 行速度。 传统的m v c 模式有很多的优点,给开发者带来了很多便利,但是我们不得 不也看到它还有很多缺点与不足点,比如它在表示层和业务逻辑层存在大量的 数据交换,降低了系统的效率等。本课题在现有的w e b 应用框架设计的思想基 础州c 模式的基础上,引入了依赖注入和异步交互的思想,提出了一种新 的设计模式埘b 。v c 模式:并将其成功地应用于实例系统k d d i e s s 中。利用 控制反转思想解决了系统组件的可重用,可扩展性问题,便于系统的开发与维 护。利用异步交互思想解决了传统交互方式中,用户需要每次浪费时间和带宽 去重新读取整个页面的问题。 关键字:控制反转;异步交互;j 2 e e :m v c 设计模式;m b l v a c 模式 a b s t r a c t上海师范大学硕士学位论文 a b s t r a c t m v ci sa l la b b r e v i a t i o no fal 【i n do fs y s t e ma p p l i c a t i o na r c h i t e c t u r ew h i c hi s c o m b i n e dw i t hm o d e l ,v i e w e ra n dc o n t r o l l e r m v cs e p a r a t e st h ea p p l i c a t i o ns y s t e m i n t os e v e r a lp o r t i o n st h a th a v e 廿l e i ro w i i f u n c t i o na n dr e s p o n s i b i l i t y t h e nt h e a r c h i t e c t u r eb e c o m e sm o r ep l a i na n de a s i e rf o ru st oc o m p r e h e n d m o r e o v e r , i tc a r l a d a p tt h es y s t e ms t r u c t u r et ot h ec h a n g eo ft h er e q u e s t m o d e li st h ec o d ew h i c hi s u s e dt oc a r r yo u ts o m et a s k t h e r ei s n ta n yl o g i ct od e c i d et h ew a yi nw h i c hi t s h o w si nt h ec l i e n t m o d e li sj u s tt h ef u n c t i o ni n t e r f a c e ,t h r o u g hw h i c hw ec a ng e ta l l f u n c t i o no ft h em o d e l s i n v e r s i o no fc o n t r o li sa l s oc a l l e dd e p e n d e n c yi n j i e c t i o n , w h o s ed e s i g n i n gi d e a i s n tt oc r e a t eo b j e c t s ,b u tt od e s c r i b eh o wt oc r e a t et h e m i t st a r g e ti st oi n c r e a s et h e p r o b a b i l i t yo fc o m p o n e n tr e u s i n ga n dp u tu paf l e x i b l ea n de x t e n s i b l ep l a t f o r mf o r t h es y s t e m ,n o tt ob r i n gm o r cf u n c t i o nf o rt h es o f t w a r es y s t e m w i t ht h et r a d i t i o n a li n t e r a c t i v em o d e ,t h ec l i e n ts e n d sar e q u e s tt ot h es e r v e r , a n d t h e nt h es o l v e rr e s p o n d s ,s e n d i n gan o wp a g et ot h ec l i e n t e v e nf o rs o m es i m p l e d a t a , i tm u s tr e f r e s ht h ep a g ew i t hl o we f f i c i e n c y m e a n w h i l et h et i m ea n d b a n d w i d t ha r ew a s t e d a s y n c h r o n o u si n t e r a c t i o nm o d ei m p l e m e n t sd a t as w i t c h i n gi n t h eb a c k g r o u n d t h ed a t ai nd bc a l lb eg o tw i t h o u tr e f r e s h i n gp a g e s ,w h i c hm a k e s t h eb u s i n e s so p e r a t i o nm o r ed i r e c ta n dr a i s et h es p e e do f t h ew e ba p p l i c a t i o n t l 舱t r a d i t i o n a lm v co w n sal o to fa d v a n t a g e s ,a n di tb r i n g sd e v e l o p e r sm u c h c o n v e n i e n c e h o w e v e r ,w em u s ts t h e r e 他 a l s o m a n ys h o r t c o m i n g a n d d i s a d v a n t a g e f o re x a m p l e ,al o to fd a t as w i t c h i n ge x i s t sw i t h i nt h ep r e s e n t a t i o nt i 贫 a n dt h el o g i ct i e r , w h i c hb r i n g sd o w nt h ee f f i c i e n c yo ft h es y s t e m t 1 1 i sa r t i c l e c o m b i n e sm v c 谢t hi n v e r s i o no fc o n t r o la n da s y n c h r o n o u si n t e r a c t i o n , a n d p r e s e n t san e wd e s i g np a t t e r n , w h i c hic a l lm 旧 c a t l a s tia p p l yi tu p o nap r o j e c t w h o s e 瑚m ei sk d d l e s s 晰ii n v e r s i o no fc o n t r o l ,t h ep r o b l e mo fc o m p o n e n t r e u s i n ga n ds y s t e me x t e n s i b i l i t yc a nb eo v e r c o m e ,a n di t se a s i e rt od e v e l o pa n d m a i n t a i nt h es y s t e m w i t ha s y n c h r o n o u si n t e r a c t i o n , t h e r e sn on e e df o ru s e 璐t o w a s t et h e i rt i m ea n db a n d w i d t ht or e l o a dt h ew h o l ep a g eo n l yf o rs o m es i m p l ed a t a k e y w o r d :i n v e r s i o no fc o n t r o l ,a s y n c h r o n o u si n t e r a c t i o n , j 2 e e ,m v c ,1 v a c 。 上海师范大学硕士学位论文 附录 论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究成果。论文中除 了特别加以标注和致谢的地方外,不包含其他人或机构已经发表或撰写过的研究 成果。其他同志对本研究的启发和所做的贡献均已在论文中做了明确的声明并表 示了谢意。 作者签名:终袭土日期:办移j 3f 论文使用授权声明 本人完全了解上海师范大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其它手段保存论文。保密的论文在解密后遵守此 规定。 作者签名:纵导师签名:脚期:舛 上海师范大学硕士学位论文第1 章绪论 第1 章绪论 1 1研究背景 1 1 1 课题研究背景 随着全球经济的迅猛发展,企业规模不断扩大。美国加特纳公司最早提出 的一种企业管理理念企业资源规划e r p ( e n t c r p r i s er e s o u r c e sp l a n n i n g ) ,它 是建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决 策运行手段的管理平台。“企业员工信息管理系统 作为e r p 系统的一个子系 统,对企业规范化管理和运行起着至关重要的作用。随着信息技术和网络技术 的发展,以及计算机性能的提高和企业规模的扩大,目前,许多企业的e r p 系 统不仅基于w e b 而生,要求分布式处理,且在原有功能性需求的基础上添加了 许多复杂交错的非功能性要求。 企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应 用【。当代的企业级应用决不可能是一个个的独立系统。在企业中,一般都会 部署多个彼此连接的、相互通过不同集成层次进行交互的企业级应用,同时这 些应用又都有可能与其它企业的相关应用连接,从而构成一个结构复杂的、跨 越i n t r a n e t 和i n t e m e t 的分布式企业应用群集。 框架是可重用的、半完成的应用程序,可以用来产生专门的定创程序。框 架可以提供一系列具有以下特征的骨架组件:首先,它们已经很好的应用在其 它程序上;其次,它们随时可在下一个项目中使用;最后,它们可被开发组织 的其它团队使用。 s t r u t s 是m v c 架构技术的一种具体实现,它给w e b 应用带来了良好的层次 划分,它的目标是为了减少在运用m v c 设计模型来开发w e b 应用的时间。 h i b e r n a t e 作为一种开放源代码的对象关系映射框架,实现了对j d b c 的轻量级 对象封装,恰好满足了这个时代潮流的需求。它降低了j 2 e e 架构应用软件开发 的难度和复杂度,提高j a v a 应用软件的开发效率,进而使j a v a 的企业级应用 第1 章绪论上海师范大学硕士学位论文 开发更加容易、灵活、强大。s p r i n g 是一个解决了许多在j 2 e e 开发中常见问 题的强大开源框架。它提供了管理业务对象的一致方法并且鼓励对接口编程而 不是对类编程的良好习惯。s p r i n g 通过a o p 应用、面向接口编程,来降低业务 组件之间的耦合度,增强系统扩展性1 2 1 。 s u n 推出j 2 e e 的目的是为了克服传统c l i e n t s e r v e r 模式的弊病,迎合 b r o w s e r s e r v e r 架构的潮流,为应用j a v a 技术开发服务器端应用提供一个独立 的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应 用的开发、管理和部署。但是它作为一个事实上的工业标准其规范多、内容广, 从而给开发j 2 e e 应用增加了分析、设计和实现的难度。 因此,本文试图从设计模式和j a v a 技术入手,探究适合某一特定应用领域 的框架技术的研究和实现,从而为后续开发工作提供准备和参考。 1 1 2 课题来源 本课题来源于: 上海计算机研究所项目:e m p l o y e es e l f h e l ps y s t e m 系统的设计与开发 1 1 3 国内外研究现状 w e b 应用的广泛性推动了软件技术的发展,同样软件技术发展促进w e b 应 用更加广泛。今天的软件,规模不断扩大,复杂度日渐升级、开发人员面临的 问题越来越多、解决方案也百花齐放。即使是利用先进的j 2 e e 软件平台,在 多层w e b 体系结构的设计中,同样存在着程序可重用程度低、维护性、兼容性 和扩展性差等不足。w e b 应用软件需要面对异构的网络环境、多样化的用户需 求、灵活的业务模式、复杂的业务流程、众多的组织机构及层次、角色分工等 问题。因此人们越来越意识到一个好的设计模式在系统开发中发挥着重要的作 用。 最为大家所广泛接受的设计模式就是m v c ( m o d e l - v i e w c o n t r o l l e r ) 设计 模式【3 1 。m v c 模式把数据处理、程序输入输出控制以及数据表示分离开来,并 且描述了不同部分的对象之间的通信方式,使它们不必卷入彼此的数据模型和 方法中,使程序结构变得清晰而灵活。 上海师范大学硕士学位论文 第1 章绪论 l u og u a n g c h u n ,w a n g y a n h u a ,l ux i a n l i a n g ,h a n h o n g 介绍了m v c l 和 伴有j p s 的m v c 2 模型,深入研究讨论了开发背景和存在的问题,最后成功使 用m v c 开发了一个n o v e lw e ba p p l i e a t i o n 。【4 】 a h u s s e y ,d c a r r i n g t o n 将m v c 与p a c 架构进行了比较,分别分析了两者 的特点与不同点,并且对一个e x a m p l e 系统进行了描述,针对现在对m v c 和 p a c 架构的模糊不清析处,给了出一些定义,方便大家在日后程序开发中对 m v c 或者p a c 模式的选择。【5 】 王东,孙彬提出对m v c 模式进行改造,借鉴“a j a x ”和 d a t aw i n d o w 技 术,创建和实现较高交互性能的b s 应用1 6 】。 赵永屹,宿红毅,胡韶辉提出了面向异步消息通讯机制的网络应用客户端 构建技术【7 1 。 黎永良,崔杜武提出m v c d f 模式。在m v c 模式基础上,在业务层和业 务实现层( e j b ) 之间添加了门面模式( s e s s i o n f a c a d e ) 和业务委派模式 ( b u s i n e s s d e l e g a t e ) 【引。 吕林涛,万经华,周红芳提出了w e b 无刷新页面的快速更新数据的方法。 针对b s 应用中的w e b 服务器与浏览器之间频繁操作导致w e b 应用执行速度慢 的问题,提出了基于a j a x 的w e b 无刷新页面更新数据方法。【观 刘德山,孙美乔讨论了软件开发过程中具体存在的问题,对j 2 e e 多层体系 结构进行了改进和研究。他们不仅结合了s e s s i o nf a c a d e 和b u s i n e s sd e l e g a t e 这2 种模式与m v c 模式,并对j 2 e e 结构中的数据持久层进行了分析和改进, 提出了用d a o 类和d a o f a e t o r y 类实现数据持久层的方法,形成了更完善的 j 2 e e 体系结构。【1 0 】 王天擎将m v c 的模式层加以细化为业务层、持久层和数据层,并针对s t r u t s 框架对持久层支持不够的弱点引入了h i b e r n a t eo 瓜映射工具,在此基础上,提 出了m v cx 开发模模型。【1 1 】 李春红,高建华在研究了l v i v c 设计模式和分层模式的基础上,对m v c 进 行了改进。他们将新的m v c 模式分为5 层:u i 、s e r v i c e 、b o 、d o 、d a ,又 对u 进行了泛化,用s e r v i c e 层代替了原来的控制层,使用户接口和功能模块 分离,降低了各个部分之间的耦合度。【1 2 j 第1 章绪论上海师范大学硕士学位论文 1 2 课题研究意义与内容 1 2 1 研究意义 近来掀起了一阵轻量级容器的热潮,这些容器能够帮助开发者将来自不同 项目的组件组装成为一个内聚的应用程序。在它们的背后有着同一个模式,这 个模式决定了这些容器进行组件装配的方式。人们用一个大而化之的名字来称 呼这个模式:控制反转一( i n v o r s i o no f c o n t r o l ,i o c ) 。 j 2 e e 开发者常遇到的一个问题就是如何组装不同的程序元素:如果w e b 控制器体系结构和数据库接口是由不同的团队所开发的,彼此几乎一无所知, 你应该如何让它们配合工作? 很多框架尝试过解决这个问题,有几个框架索性 朝这个方向发展,提供了更通用的“组装各层组件一的方案。s p r i n g 就是这几 个框架之一。 在开发j 2 e e 项目过程中,人们往往比较重视所谓。后端机制( b a c k e :1 1 d m e c h a n i c s ) ”,而忽视了w e b 用户界面。j 2 e e 的主要成功之处在于w e b 应用 程序方面,因为其易于部署且允许站点以尽可能低的成本拥有上百万的用户, 所以人们往往在后端投入了太多的实践,而在w e b 用户界面( 比如用户体验 和响应灵敏_ ) 方面却投入不足。 在企业级w e b 应用中,存在很多遗留问题,比如可输可选的下拉框,数据 联动,页面等待等问题一直没有优雅的解决方案,很多用户因此更偏向使用c s 架构的程序。在j 2 e ew e b 程序引入异步交互技术可以很好地解决了这些问题, 提升了用户体验。 1 2 2 研究内容 m o d e l v i e w c o n t r o l l e r ( m v c ) 设计模式被证明是有效的开发模式之一,它 将访问和数据的表现进行了分离。通过m v c 模式,可以开发具有伸缩性、便 于扩展、便于整个流程维护的应用软件。但由于m v c 在不同的程序逻辑之间 要保持清晰的界限,因此,在不同层次之间的通信会有性能上的损失,交换客 户与服务器之间的回路信息会消耗大量的系统资源。且每个控制器直接与业务 上海师范大学硕士学位论文第1 章绪论 逻辑相关,当业务逻辑改变时,所有与此逻辑相关的控制器都要改变。为克服 m v c 模式的以上缺点,本文提出对m v c 模式进行改进。其核心思想是,m v c 模式里加入控制反转与异步交互思想,成为m b i v c 模式,从而减少通信信息 量,并增加应用程序开发的灵活性,减少用户的等待时间。本文把m b l v c 模 式应用于基于j 2 e e 架构的员工自助服务系统( e s s ) ,表明这种设计模式的改 进是行之有效的。 1 3本课题主要工作 为了实现课题的研究目标,设计出一个通用、高性能的基于“依赖注入”与 “异步交互”结合共同构建分布式w e b 应用的架构模式。本课题从以下几个问题 着手做了相应研究: 1 分析现有基于m v c 模式的j 2 e e 轻量级框架应用在分布式w e b 应用系统中 的优点与不足; 2 设计基于依赖注入与异步交互的m v c 模式的扩展模式m 毋1 v a c 模式 3 研究基于m b l v a c 模式的系统概念设计、架构设计、详细设计、编码实现 方法: 1 4 论文的组织结构 本文包括六个章节。各章的内容组织如下: 第一章:绪论。分析了课题研究的背景和意义,简要介绍了本文主要工作 和论文的创新之处。 第二章:相关基础理论知识介绍。介绍了论文涉及的m v c 设计模式和控 制反转设计思想,以及异步交互模式的基础理论知识。 第三章:m b l v a c 模式的提出与实现。分析基于b s 的w e b 应用中m v c 设计模式的优缺点;提出了对m v c 设计模式的改进郴1 v a c 模式,并描 述了m b l v a c 设计模式的实现方法。 第四章:给出了e s s 系统的需求分析与概要设计。 第五章:基于m b l v a c 模式的e s s 系统的实现。描述了控制反转以及异步 交互方面在e s s 系统中的特点及其具体解决方案。 第1 章绪论 上海师范大学硕士学位论文 第六章:结论与展望。总结了论文的研究和开发上作,并且展望了下一阶 段的研究发展方向。 1 5本章小结 本章论述了本文的选题依据与意义,接着给出了w e b 系统设计模式的研究 现状,然后分析了本文主要的意义,以及主要的工作,最后介绍了本文的章节 安排及各章节的主要内容。 上海师范大学硕士学位论文 第2 章相关技术介绍 第2 章相关技术介绍 2 1m v c 模式 2 1 1m v c 概述 早期的图形化程序设计常常围绕着事件驱动的用户界面来组织,这样的直 接后果就是数据处理、程序功能与显示代码等部分完全纠结在一起。大型的图 形化程序中一个数据通常对应多种表示与处理方式,把特定界面绑定到应用程 序上严重降低了程序的灵活性,使得一个很小的改动也牵涉到大量的代码,增 加了程序开发与维护的工作量。 2 0 世纪7 0 年代,m v c ( m o d e l v i e w c o n t r o l l e r ) 模式在s m a l l t a l k 8 0 的g u i 设计中被提出。m v c 模式把数据处理、程序输入输出控制以及数据表示分离开 来,并且描述了不同部分的对象之间的通信方式,使它们不必卷入彼此的数据 模型和方法中,使程序结构变得清晰而灵活。由j s p ,s e r v l e t 和j a v ab e a n s 实 现的基于j 2 e e 的m v c 2 结构的出现,使得m v c 模式广泛地应用于大型的w e b 项目的开发中。 视图层,简称为v i e w ,它负责数据的输出和输入;业务层,简称为m o d e l , 它代表程序的实际业务;控制层,简称为c o n t r o l l e r ,处理界面的相应并调用业 务层进行处理。几乎所有的现代图形用户接口( g t r 0 器具库都依赖于m o d e l , v i e w 以及c o n t r o l l e r 之间的特性( 见图2 1 ) 。 固2 - 1n c 关系圈 第2 章相关技术介绍上海师范大学硕士学位论文 m v c 模式中三个部分之间的通信可以简要描述如下: 幻m o d e l v i e w 。m o d e l 处理数据,并根据其状态变化的情况将要显示的数 据提供给v i e w ,v i e w 将数据组织成各种显示样式给用户。 b ) c o n t r o l l e r v i e w 。c o n t r o l l e r 根据用户输入直接调用不同试图改变响应流 程,或与m o d e l 交互后获得需要显示的数据,再调用v i e w 改变响应流程。 c ) c o n t r o l l e r m o d e l 。c o n t r o l l e r 与m o d e l 交互,c o n t r o l l e r 将输入数据传递 给m 0 d e l 处理,c o n t r o l l e r 也可以从m o d e l 中抽取数据。 2 1 2m v c 的优缺点 下面比较一下m v c 模式的优点和存在的问题。 优点: 视图控制模型分离,提高代码重用性。将用户显示( 视图) 从动作( 控制 器) 中分离出来,提高了代码的重用性。将数据( 模型) 从对其操作的动 作( 控制器) 分离出来,可以设计一个与后台存储数据无关的系统。就m v c 结构的本质而言,它是一种解决耦合系统问题的方法。 方便开发团体人员之间的分工合作,提高开发效率。它实现了一个模型的 多个视图,采用多个控制器。当模型改变时,所有视图将自动刷新,所有 的控制器将相互独立工作。只需在以前的程序上稍作修改或增加新的类, 即可以轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构 根本不再需要改变,各类之间相互独立。 便于后期维护,降低维护成本。它还有利于软件工程化管理。由于不同的 层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、 工具化产生管理程序代码。 缺点:0 3 1 对同一实体不同职责的严格区分会导致一个非常紧密的结构,使得特征部 分属于同一实体。如图1 所示,每一对部件之间都由一条双向通信道路链 接。控制层和视图层有时会过于紧密,导致没有真正的分离和重用。 清晰的构架以代码的复杂性为代价,对小项目来说,有可能反而会降低开 发的效率。有时需要花费大量的时间去考虑如何将m v c 运用到程序,同时, 上海师范大学硕士学位论文第2 章相关技术介绍 由于模型和视图要严格分离,这样也会给调试程序带来一定的困难。 使用m v c 使得处理流程复杂,造成了性能的下降。 m v c 中v i e w 的开发仍然采用基于表单的请求响应模式,只解决了表示层 一部分问题。没有解决如何提供富客户端的问题。提供富客户端势必要使 用j a v a s e r i p t ,传统的m v c 框架几乎从来没有把j a v a s c r i p t 列入考虑范围, 忽视了j a v a s e f i p t 对于页面表现能力的提高,使得复杂的j a v a s c r i p t 开发工 作还是由程序员来承担。 m v c 还是一个非常优秀的软件设计模式。任何设计模式都有其固有的局限 性,没有哪一种方法可以解决所有问题。所以可以说,m v c 本身没有缺点,只 是不同的理解和不同的实现带来了不同的问题。 2 1 3m v c l 和m v c 2 的简析 在程序发展的历史上,m v c 模式经过了多次演化,m v c l 和m v c 2 是两 种比较典型的模式,它们的区别主要在于视图层和模型层的联系方式上。 m v c l 模式( 见图2 2 ) 使用o b s e r v e r 模式实现,具体来说就是让视图充 当观察者来观察m o d e l 的变化,而用户交互控制的地方用匿名类的方式统一放 在c o n t r o l l e r 中,v i e w 接受用户输入,并将交互数据传递给c o n t r o l l e r ,c o n t r o l l e r 统一进行处理命令,交由m o d e l 处理具体的业务,经过处理m o d e l 更新后,通 知v i e w 进行更新。这种模式主要用于旧的桌面程序比较多。 第2 章相关技术介绍上海师范大学硕士学位论文 m v c 2 模式( 见图2 3 ) 是基于w e b 而生的,首见于网络程序。起初由于 m o d e l 无法通知到v i e w 程序的界面而发明,这种模式采用c o n t r o l l e r 做中介者, 一方面取得v i e w 的输入,然后交由m o d e l 层处理,之后再把返回的数据传递 到v i e w 。v i e w 接受用户输入,并传递到c o n t r o l l e r :c o n t r o l l e r 统一进行处理命 令,交由m o d e l 处理具体的业务,经过处理更新后,c o n t r o l l e r 会选一个v i e w 并把m o d e l 内容传递( r e q u e s t ,s e s s i o n ) 给它( f o r w a r d ) 。这种模式相对m v c 优势很明显,m 0 d e l 和v i e w 无需了解对方的存在,只需要准备相应的借口而已。 圈2 - 3 耵c 2 时序目 本论文研究创新的m b l v c 模式就是在m v c 2 的基础上进行改进,从而应 用到实例e s s 系统中。 2 2 控制反转 2 2 1 控制反转概述 m a r t i nf o w l e r 在( r e d u c i n gc o u p l i n g 【1 4 】一文中这样描述耦合:“如果 改变程序的一个模块要求另一个模块同时发生变化,就认为这两个模块发生了 耦合。一由于人类的理解力有限,大多数人难以理解和把握过于复杂的系统。 上海师范大学硕士学位论文第2 章相关技术介绍 把软件系统划分成多个模块,可以有效控制模块的复杂度,使每个模块都易于 理解和维护。但在这种情况下,模块之间就必须以某种方式交换信息,也就是 必然要发生某种耦合关系。如果某个模块和其他模块没有任何关联,那么就几 乎可以断定,该模块不属于此软件系统,应该从系统中剔除。因此,模块之间 必定会有这样或那样的依赖关系,永远不要幻想消除所有依赖。但是,过强的 耦合关系会对软件系统的质量造成很大的危害。特别是当需求发生变化时,代 码的维护成本将非常高。所以,我们必须想尽办法来控制和消除不必要的耦合, 特别是那种会导致其他模块发生不可控变化的依赖关系。 控制反转( i o c ) 模式( 又称d hd e p e n d e n c yi n j e c t i o n ) 就是i n v e r s i o no f c o n t r o l 。在j a v a 开发中,i o c 意味着将设计好的类交给系统去控制,而不是在 类内部控制。 i o c ( i n v e r s i o no f c o n t r 0 1 ) 是近年来兴起的一种思想,不仅仅是编程思想。主 要是协调各组件间相互的依赖关系,同时大大提高了组件的可移植性,组件的 重用机会也变得更多。在传统的实现中,由程序内部代码来控制程序之间的关 系。我们经常使用n e w 关键字来实现两组件间关系的组合,这种实现的方式会 造成组件之间耦合,一个好的设计,不但要实现代码重用,还要将组件间关系 解耦。i o c 很好的解决了该问题,它将实现组件间关系从程序内部提到外部容 器管理。也就是说由容器在运行期将组件间的某种依赖关系动态的注入组件中。 控制程序间关系的实现交给了外部的容器来完成。也就是常说的好莱坞原 则, d o n ,tc a l lu s w e ,1 1c a l ly o u ”。【1 5 】 i o c 模式有三种类型: 第一种类型,接口注入,从j n d i 或s c r v i c e m a n a g c r 等获得被调用者,这 里类似s e r v i c e l o c a t c r 模式。 第二种类型,设值注入,使用j a v a b e a n s 的s e t t e r 方法。 第三种类型,构造注入,在构造方法中实现依赖。 接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于 其在灵活性、易用性上不如其他两种类型,因为在i o c 的专题世界内不被看好。 第二种类型和第三种类型是目前主流的i o c 实现模式。第二种类型的i o c 模式具有以下几点优点。 第2 章相关技术介绍 上海师范大学硕士学位论文 对于习惯了传统j a v a b e a n 开发的程序员而言,通过s e t t e r 方法设定依赖关 系显得更加直观,更加自然。 如果依赖关系( 或继承关系) 较为复杂,那么第三种类型的构造函数也会 相当庞大,此时,第二种类型往往就会显得更为简洁。 对于某些第三方类库而言,可能要求我们的组件必须提供一个默认的构造 函数( 如s t r u t s 中的a c t i o n ) ,此时,第三种类型的依赖注入机制就体现出 其局限性,难以完成我们期望的功能。 因此在e s s 系统中,我们采用第二种类型来实现i o c 模式。 2 2 2 轻量级框架技术s p r i n g s p r i n g 是一个服务于所有层面的开源应用框架,其目标是将各种专用框架 整合成一个连贯的整体构架,为j 2 e e 应用常见的问题提供简单、有效的解决方 案。其主要构思来源于r o dj o h n s o n 的( e x p e r to n e o n o n ej 2 e ed e s i g na n d d e v e l o p m e n t ) 【1 6 】。 作为一个轻量级j 2 e e 框架实现,s p r i n g 具有维护容易、分层清楚、速度 快、代码少、支持最新的o r m 技术与a o p 概念等优点。它以i o c 为核心,服务 于所有层面的应用程序,提供了b e a n 的配置基础,a o p 的支持,j d b c 的提取框 架,抽象事务支持等。“s p r i n gi o c + s p r i n ga o p + s p r i n g 抽象服务 形成 了一个有机整体,使得s p r i n g 构建轻量级的j 2 e e 架构成为可能。 i o c 是一个用于“基于组件的体系结构一的设计模式。s p r i n g 作为一个以 i o c 原则为基础的轻量级开源框架,也是一个分层架构,由7 个定义良好的模 块组成,见图2 - 4 : 2 _ is p t i a t 曩爻的主薹块 上海师范大学硕士学位论文 第2 章相关技术介绍 s p r i n gi o c 整个都是围绕j a v a b e a n 来设计的,通过建立一个x m l 的配置文件来 进行配置,然后通过定义接口来进行操作。这些操作是通过b e a n f a c t o r y 和 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 b e a n f a c t o r y 是s p d n g 框架的核心。利用s p d n g 进行开发就是统一使用 b e a n f a c t o 吖访问s p d n gi o c 容器,使开发者能够定义和提供良好的业务对象层。当 应用程序创建b e a n f a c t o w 实例时,实际就是完成j a v a 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 及其实现提供的功能,s p n n g 框架又引入了 a p p l i c a t i o n c o n t e x t 。这个接i z l 不用手动创建,直接可以在程序中使用。它和 b e a n f a c t o w 一样,在应用程序启动的时候实例化对象。但是b e a n f a c t o r y 使 用了延迟装载机制,如果用户没有调用g e t b e a n 0 方法,实例就不会被创建。 而对于a p p l i c a t i o n c o n t e x t 而言, 一旦c o n t e x t l o a d e r s e r v l e t 或 c o n t e x t l o a d e r l i s t e n e r 初始化成功,所有的j a v a b e a n 实例将会被创建。 2 2 3 控制反转实现技术 不管是依赖注入,还是控制反转,都使得各种对象被采用动态、灵活的方 式来管理。对象与对象之间的具体实现互相透明。我们可以把这种调用者与被 调用者的关系看成是一种社会形态。 在原始社会里,几乎没有社会分工。需要衣服的人( 调用者) 只能自己去打猎 取皮毛( 被调用者) 。对应j a v a 程序里的情形就是调用者自己创建被调用者。 进入工业社会,出现了工厂。衣服不再由普通人完成,而在工厂里被生产出来, 这个时候,需要衣服的人( 调用者) 只要找到工厂,购买衣服,无须关心衣服 的制造过程。对应j a v a 程序里的情形就是简单的工厂设计模式。 最后,进入了“按需分配 社会,需要衣服的人不需要找到工厂,只要发 出一个简单命令:我需要衣服。衣服就自然会出现在他面前。对应j a v a 程序里 的情形就是依赖注入。 第一种情况下,被调用的j a v a 类必须出现在调用者的代码里,无法实现二 者之间的松耦合。第二种情况下,调用的代码面向接口编程,可以让调用者和 被调用者解耦,但调用者需要自己定位工厂,调用者与特定工厂耦合在一起。 第2 章相关技术介绍 上海师范大学硕士学位论文 第三种情况下,调用者无须自己定位工厂,程序运行到需要被调用者时,系统 自动提供被调用者实例。事实上,二者之间的依赖关系由i o c 容器提供。 下面举一个简单的例子来说明如何实现依赖注入: 定义两个简单的接口,分别是p e r s o n 接口和c l o t h i n g 接口。如下图: 创建两个类,c h i n e s e 类和t s h i r t 类,分别是p e r s o n 和c l o t h i n g 的实现类。 在s p r i n g 的配置文件a p p l i c a t i o n c o n t e x t x m l ( 可以将其视为i o c 容器) 中, 进行如下简单的配置,最后就可以实现j a v a 程序中的“按需分配 社会。 代码2 - 1l a p p l i c a t i o n c o n t e x t x m l b e a n y p r o p e r t y y 上海师范大学硕士学位论文第2 章相关技术介绍 2 3异步交互 2 3 1 异步交互概述 异步交互是w e b 应用的一种新方法,但是它并不是一门新的语言或技术, 实际上是几种已经在各领域大行其道技术的强强结合,它混合了 t m 【c s s , d o m ,x m l ,以及x s l t 等几项技术,并且利用j a v a s c r i p t 来整合上述技术。 它为交互较多,频繁读数据,数据分类良好的w e b 应用提供了一个很好的解决 方案。【1 7 】 在传统的b s 交互模式中( 如用户提交表单) ,是由用户触发一个h t t p 请求到服务器,服务器对其进行接受并进行处理后再返回一个新的h t h l 页 面到客户端。每当服务器处理客户端提交的请求时,客户只能空闲等待,并且即 使只是一次很小的交互,只需从服务器端得到很简单的一个数据,都要返回一 个完整的h t m l 页,而用户每次都要浪费时间和带宽去重新读取整个页面。 这种做法实际上是一种浪费,因为在前后两个页面中的大部分h t m l 代 码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应 时间就依赖于服务器的响应时间。这就导致了用户界面的响应比本地应用慢得 多,产生了一定程度的滞后效应,造成用户界面的闪烁或白屏。让用户等待几 秒,也许用户还可以忍受,但是如果用户界面响应很慢,要求用户等待较长的 一段时间,那么这个系统就会渐渐失去它的用户,也说明这个系统与用户的交 互能力较差。 现在来看一下“g o o g l es u g g e s t 以及“g o o g l em a p s 。使用过的人都会发 现,在g o o g l es u g g e s t 中,用户输入后,显示建议的动作几乎是瞬间完成的。 再看看g o o g l em a p s 的放大功能,鼠标的动作也几乎是立即被响应的,不用等 待页面刷新。它们两个就是采用了异步交互技术的典型例子。 我们不得不看到现在越来越多的网站或者系统都开始重视自己与用户的交 互能力。良好的交互能力可以使得用户感受不到页面的挑战,系统反应非常快, 这一切给人的感觉非常友好,以至于它一经推出,便得到了众多用户的宠爱, 并同时成为许多邮件提供商的追赶对象。 第2 章相关技术介绍上海师范大学硕士学位论文 2 3 2 异步交互的基本概念 异步交互模式不同于传统的w e b 模式,服务器

温馨提示

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

评论

0/150

提交评论