(计算机应用技术专业论文)j2ee轻量级框架扩展技术的研究与应用.pdf_第1页
(计算机应用技术专业论文)j2ee轻量级框架扩展技术的研究与应用.pdf_第2页
(计算机应用技术专业论文)j2ee轻量级框架扩展技术的研究与应用.pdf_第3页
(计算机应用技术专业论文)j2ee轻量级框架扩展技术的研究与应用.pdf_第4页
(计算机应用技术专业论文)j2ee轻量级框架扩展技术的研究与应用.pdf_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 j 2 e e 服务架构已成为当前行业应用软件开发的主流架构,然而在实际的应 用中,j 2 e e 构架的重量级组件却给系统开发和测试带来了很大的困难,以致造 成了很多项目的失败。近年来,集成了多种设计模式的轻量级框架给软件系统 设计带来了新的活力。 本课题以j 2 e e 服务器框架设计为研究角度,深入研究了j 2 e e 技术、轻量 级框架技术以及新兴的反转控制模式和a j a x ( a s y n c h r o n o u sj a v a s c d p ta n dx m l ) 技术;并依据当前软件设计的发展趋势和实际项目的分析设计,找出当前轻量 级框架在某些方面的不足并进行了扩展。 论文首先对新兴的反转控制模式、a j a x 技术以及f r a m e s e r v e r 框架做了简 单的介绍。 在完成了实际项目“四川师范大学s p h i n x 交互式化学c a 系统”的功能分 析及架构设计后,论文随后深入探讨了f r a m e s e r v e r 框架的扩展技术,该部分主 要分为两方面。一方面是f r a m e s e r v e r 中i o c 微容器如何对有态p o j o 进行管理, 本文提出了一种基于i o c ( i n v e r s e o f c o n t r 0 1 ) 模式的有态p o j o 管理模型,将有态 p o j o 的依赖关系和生命周期作为通用组件纳入模型的管理,并证明了有态 p o j o 和无态p o j o 之间的引用完整性约束。另一方面是如何通过j s o n 支持 a j a x 这一当前最流行的w e b 技术,在此部分中,提出了一个基于j s o n 的对象 序列化算法,该算法通过分析j s o n 文法并建立对象导航图,透明的将j a v a 对 象序列化成j s o n 表达式,使客户端能够很好的利用j a v a s c r i p t 引擎来解析j s o n 响应,有效解决了解析x m l 所造成的缺陷。 最后,结合四川师范大学s p h i n x 交互式化学c a i 系统”介绍了f r a m e s e r v e r 框架的应用,不仅体验了轻量级框架和a j a x 技术的优势:而且验证了扩展方案 的正确性和可行性。 关键词:轻量级框架:反转控制;有态p o j o ;序列化:对象导航图 西南交通大学硕士研究生学位论文第页 a b s tr a c t n o w a d a y s ,j 2 e es e r v i c ea r c h i t e c t u r eh a sb e c o m eam a i n s t r e a ma r c h i t e c t u r ei n c u r r e n ts o f t w a r ed e v e l o p m e n t h o w e v e r , i np r a c t i c a la p p l i c a t i o n s ,t h eh e a v y w e i g h t c o m p o n e n to fj 2 e ea r c h i t e c t u r e h a s b r o u g h tg r e a t d i f f i c u l t i e st o s y s t e m s d e v e l o p m e n ta n dt e s t ,r c s l l l d n g i nf a i l u r eo fm a n yp r o j e c t s i nr e c e n t y e a r s , l i g h t w e i g h t 觎m e 如o r kw h i c hc o m b i n e dw i t h 谢。啪d e s i g np a t t e r n sh a si n j e c t e d n e wv i t a l i t yi n t ot h ed e s i g no f s o f t w a r es y s t e m t h i st h e s i st a k e sj 2 e ef r a m e w o r k 勰s t u d y i n gp r o s p e c t i v ea n dh a sd e e p l y s t u d i e dt h et e c h n o l o g yo fj 2 e ea n dl i g h t w e i g h tf r a m e w o r k ,i o c ( i n v e r s i o no f c o n t r 0 1 ) a n da j a x ( a s y n c h r o n o u sj a v a s c r i p ta n dx m l ) t e c h n o l o g y i na c c o r d a n c e w i t l ld e v e l o p m e n to f p r e s e n ts o f t w a r ed e s i g na n dr e q u i r e m e n to f p r a c t i c a la p p l i c a t i o n , t h i st h e s i sh a sf o u n do u tt h ed e f e c t so fl i g h t w e i g h tf r a m e w o r ka n dm a d er e l e v a n t e x p a n s i o n f i r s t l y , t h i st h e s i sh a sm a d eab r i e fi n t r o d u c l i o nt oi o c a j a xt e c h n o l o g y , f r a m e s e r v e rf r a m e w o r ka n do t h e rr e l e v a n tt e c n o l o g i e s h a v ea n a l y z e dt h es y s t e mf u n c t i o na n da r c h i t e c t u r e d e s i g n , t h et h e s i s e m p h a s i z e st w op o i n t s :h o wt om a n a g es t a t e f u lp o j o ( p l a i n0 1 dj a v ao b j ) b a s e d 0 1 3 i o cc o n t a i n e ra n dh o wt os u p p o r ta j a xa c c o r d i n gt oj s o n ( j a v a s c r i p to b j e c t n o t a t i o n ) i nt h ef i r s tp a r t , am a n a g e m e n tm o d e lo fs t a t e f u lp o j ob a s e do ni o c p a t t e r nw a sp r o p o s e d , b yw h i c ht h ed e p e n d e n c i e sa n dt h el i f e c y c l eo fs t a t e f u lp o j o i sm a n a g e da sac o m m o nc o m p o n e n t , a n dt h ec o n s t r a i n to fr e f e r e n t i a li n t c 鲥t y b e t w e e ns t a t e f u lp o j oa n ds t a t e l e s sp o j oi sa l s op r o v e d i nt h es e c o n dp a r t ,a n a l g o r i t h mo fo b j e c ts e r i a l i z a t i o nb a s e do nj s o ni sp r o p o s e d , b yw h i c ht h ej s o n g r a m m a ri sa n a l y 捌a n dt h eo b j e c tn a v i g a t i o ng r a p hi sa l s oe s t a b l i s h e d w i t ht h i s a l g o r i t h m ,t h ej a v a o b j e c t sc a nb et r a n s l a t e di n t oj s o ne x p r e s s i o n st r a n s p a r e n t l y , s o a st ot h ec l i e n t - s i d l ec a l lt a k ef u l la d v a n t a g eo fj a v a s c r i p te n g i n et op a r s ej s o n e x p r e s s i o n s ,t h u st h ep r o b l e m sr e s u l t e df r o mx m l c a nb es o l v e de f f e c t i v e l y f i n a l l y , t h ea p p l i c a t i o ff r a m e s e r v e rf r a m e w o r ki si n t r o d u c e dw i t ha c t i c a l p r o j e c t s p h i n xi n e m c t i o nc h e m i c a lc a is y s t e mf r o ms i c h u a nn o r m a lu n i v e r s i t y nn o to n l yd e m o n s t r a t e sa d v a n t a g eo f l i g h t w e i g h tf r a m e w o r ka n da j a xt e c h n o l o g y , b u ta l s op m v e d p r e c i s i o na n df e a s i b i l i t yo f e x p a n d i n gp l a n 西南交通大学硕士研究生学位论文第页 西南交通大学硕士研究生学位论文第1 页 1 1 课题背景 第1 章绪论 企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应 用。当代的企业级应用决不可能是一个个的独立系统。在企业中,一般都会部 署多个彼此连接的、相互通过不同集成层次进行交互的企业级应用,同时这些 应用又都有可能与其它企业的相关应用连接,从而构成一个结构复杂的、跨越 i n t r a n e t 和i n t e m e t 的分布式企业应用群集。 企业级应用需要使用优秀的企业级应用体系结构,而优秀的企业级应用体 系结构通常来自于优秀的解决方案。应用程序设计开始就要考虑其体系结构的 合理性、灵活性、健壮性,从而既可满足企业级应用的复杂需求,也能为今后 系统的调整和升级留有余地。体系结构影响整个应用的生命周期,实际上能够 延长整个应用的生命周期,同时增强了用户在多变的商业社会中的适应性,减 少了系统维护的开销和难度,从而给用户带来最大的利益【i 】。 为了满足架构企业级应用的需求,j a v a 的创始者s u n 公司在早期的 j 2 s e o a v a2p l a t f o r ms t a a d a r de d i t i o n ) 基础上,针对企业级应用的各种需求,提 出了j 2 e e ( j a v a2p l a t f o r me n t e r p r i s ee d i t i o n ) 。j 2 e e z 叫是使用j a v a 技术开发企 业级应用的一种事实上的软件标准,它是j a v a 技术不断适应和促进企业级应用 过程的产物。s u n 推出j 2 e e 的目的是为了克服传统c l i e n t s 前v e r 模式的弊病, 迎合b r o w s e r s e r v e r 架构的潮流,为应用j a v a 技术开发服务器端应用提供一个 平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简 化企业应用的开发、管理和部署。 j 2 e e 将组成一个完整企业级应用的不同部分纳入不同的容器( c o n t a i n e r ) , 每个容器中都包含若干组件,同时各种组件都能使用各种j 2 e es e r v i c e a p i 。 j 2 e e 容器f 4 】主要分为w e b 容器和e j b 容器,按照容器的分类,j 2 e e 框架标准 将一个系统划分为w e b 和e j b 两个主要部分,从设计上可以抽象为表现层、 业务层和持久层,这三个层次从一个高度将j 2 e e 分离开来,实现了解耦的目 的。因此,在实际编程中,大多数应用从功能上根据这三个层次来划分,但要 这样做,没有技术上的约束限制是比较困难的,因此一般借助j 2 e e 具体技术 来实现,可以使用e j b 规范实现服务层和持久层,w e b 技术来实现表现层。 西南交通大学硕士研究生学位论文第2 页 j 2 e e 应用虽然从总体上划分了三个层次,但在针对每一层上的具体应用,要设 计出可维护性、高拓展性的软件目标还是有一定的难度。 首先,w e b 层的技术主要是j s p s c r v l e t ,在这层仍然可以表现业务逻辑和 数据访问,那么其后果是w e b 层与后台逻辑过于耦合,造成多层结构开发无法 分工合作; 其次,e j b 被认为是一种重量级的高度侵入性的框架规范,重量级在于它 的基于分布式的应用,高侵入性是指它制定了众多的接口和编码规范,要求实 现者必须遵从。比如: ( 1 ) e 膻p7 j 规范冗长,对编程的限制过多,而且为了解决存在的问题也变的更 加复杂。与其他j 2 e e 技术( 如s e r v l e t ) 相比,使用e j b 的应用程序缺 乏在不同应用服务嚣之间的可移植性。 ( 2 ) e j b 可能让简单的事情变得困难。譬如,单态设计模式( s i n g l e t o n ) 就很 难在e j b 环境下实现。 ( 3 ) e j b 规范中的一部分已经过时。例如,j 2 s e1 3 引入的动态代理( d y n a m i c p r o x y ) 就直接对e j b 采用的容器代码生成机制提出了置疑。 ( 4 ) e j b 和r m i 之间那种传统的紧密关系也开始显得有些不适时宜。这一方 面是因为w e bs e r v i c e 的迅速发展,另一方面是因为人们发现很多时候 e j b 只需要本地接口。 由此可见,e j b 组件的重量级造成的后果是部署复杂、运行慢、测试困难 和代价高等;而侵入性造成的后果就是,一旦系统基于侵入性框架设计开发, 那么之后任何脱离这个框架的企图都将付出极大的代价。特别是近年来,很多 基于e j b 的大型j 2 e e 项目却最终以失败而告终,人们逐渐发现,在很多情况 下,e j b 并不是必要的,普通的b e a n 组件就能够实现绝大多数项目的需求。 因此,基于b e a n 的轻量级框架( 如a p a c h e 的s t r u t s ,, b o s s 的h i b e m a t e ) 应 运而生,轻量级架构方案在继承传统的j 2 e e 采用多层架构的基础上,针对w e b 表现层、业务逻辑层和数据持久层进行了较大的改进和突破。这些b e a n 组件也 有了一个新的名字p o j o p l ( p l a i no l dj a v ao b j e c t ) ,轻量级框架强调开发, 测试和部署的轻便性和易用性成就了很多成功的项目。 通过大量的项目实践,证明了轻量级框架的发展给当前软件系统设计带来 了新的活力,轻量级框架在整个j 2 e e 业界已经得到了广泛的认可,已经成为 下一代j 2 e e 技术构架的基础。 另外采用w e b 技术开发的b s 结构应用系统存在其自身弱点,即b s 结构 采用的h t m l 语言表现能力和交互能力太弱,除了文本输入框、选择框、按钮 西南交通大学硕士研究生学位论文第3 页 之外,几乎就没有其他的任何控件了。b i s 结构的这个特点让那些曾经使用c s 系统的用户难以适应,所以目前c s 仍然无法被b s 完全替代。因此如果能够 结合c s 和b s 两种模式的特点,在信息系统开发中引入一个混合型模式似乎 更能满足企业和用户的要求。b s 结构的系统与用户之间是一个同步交互的过 程。在客户端,用户通过浏览器( b r o w s e r ) 进行操作,向服务器发送一个h t t p 请求;服务器( s e r v e r ) 端接收到用户的请求后,执行相应的操作,然后向客户 端的用户返回响应结果,即一个h t m l 页面。这个过程是一种不连贯的用户体 验,即在服务器处理用户请求的时候,用户大多数时间都处于等待的状态,浏 览器上大多是一片空白。 当服务器负载比较小时,这种交互过程并无不妥。可是当服务器负载较大 时,服务器响应用户的请求时间可能会大于1 分钟甚至几分钟,这样长时间等 待服务器的响应对于用户来说是难以接受的,甚至有时候用户长时间等待的却 是服务器返回的一个服务超时的错误消息。另外,某些时候用户只是想改变页 面中一小部分的数据,而在传统的b s 模式中实现时,浏览器仍然需要重新加 载整个页面的数据。目前,软件设计越来越讲究人性化,上述不友好的用户体 验与人性化的原则背道而驰,如果能够减少用户等待服务器响应的时间,就可 以提高用户体验。人们尝试采用一些新的技术来对传统b s 架构的程序进行改 进,如a p p l c t ,j a v a s e r i p t ,f l a s h ,d h t m l ,c s s ,x m l 等等u i ( u s e r i n t e r f a c e ) , 然而它们都存在着各种各样的不足,有的需要客户端插件的支持,有的存在版 本差异和标准的不同,无法实现通用性,单独使用这些技术都不能有效的解决 上述的问题。此外也有人提出了基于隐藏帧的解决方法,其效果也不能令人满 意。直到2 0 0 5 年2 月,a d a p t i v ep a t h 的j e s s ej a m e sg a r r e t t 在他的文章“内瓢: an e wa p p r o a c ht ow e ba p p l i c a t i o n t w ”中提出了局a x ( a s y n e h r o n o u sj a v a s c r i p t a n dx m l ,也就是异步j a v a s c r i p t 和x m l ) 技术,才使解决上述问题成为可能。 随着c r m a i l 、g o o g l e - m a p s 的推出,q a x 吸引了开发者的目光,局a x 技术逐渐 成为w e b 开发的主流技术。 s u n 公司已经将a j a x 技术列入了j 2 e e 的b l l l e p r i l 域蓝图) 1 0 1 中,作为j 2 e e 技术架构的有益补充。 本课题也来源于四川省软件重点实验室资助的项目“四川师范大学s p h i n x 交互式化学c a 系统”,该项目要求可移植性强、维护容易、便于测试、安全性 高、操作方便,是一个典型的j 2 e e 企业级应用开发。作者在深入研究轻量级框 架技术和铷a x 技术的基础上,对二者加以扩展,并在此基础上开发了该项目。 西南交通大学硕士研究生学位论文第4 页 1 2 国内外研究现状 尽管j 2 e e 平台承诺,开发j a v a j 2 e e 应用很简洁、高效,但实际情况并不 如此。因为,开发过程往往难于控制进度、开发效率低,而且很多开发者并没 有真正用好j 2 e e 组件技术。比如,j 2 e e 开发者常遇到的一个问题就是如何组 装不同的组件元素( 例如:w e b 控制器体系结构和数据库接口是由不同的团队 所开发的,彼此几乎一无所知,应该如何让它们配合工作? ) 很多框架尝试过 解决这个问题,结果都不尽如人意,然而在一些相关的设计模式( 如反转控制、 面向组件编程一c o p ) 出现以后,集成了这些模式的框架提供了更通用的“组 装各层组件”的方案,这样的框架通常被称为“轻量级框架”。 反转控制【1 1 ( i n v e r s i o no f c o n t r o l - - i o c ) 是一种新兴的轻量级软件设计理论, 它为软件系统的组件解耦和代码复用起到了重要作用,i o c 重点关注组件的依赖 性、配置以及生命周期,其目的就是将来自不同项目的组件组装成为一个高度 内聚的系统。框架在抽象和集成了i o c 后,解决了上述之类的问题,由此可见 以i o c 为基础的轻量级框架是当前框架的发展方向。 框架( f r a m e w o r k ) 作为业务系统和设计模式的更高级模型抽象,为应用系统 的开发提供了很大的便利。框架除了提供丰富的组件库,更重要的是框架根据 自身的设计思想为系统开发提供组件和开发流程的规范。优秀的框架能够大大 提高系统的开发效率,为组件的设计,测试和部署提供指导。 目前轻量级框架发展非常的繁荣,针对表示层、业务层、持久层及整个应 用程序,j a v a 社区都有相应的多种框架解决方案。其中,比较有名的: 在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 ) 体系结构的 s t r u t s t ,4 j 、w e b w o r k 2 、j s f 和t a p e s t r y t “j 。 在业务逻辑层,非常成功的主要有s p r m g 、a v a l o n 、p i c o c o n t a i n e r 、 j d o n f r a m e w o r k 。 在数据持久层,有h i b e r n a t e 、j d 0 1 5 3 1 、i b a t i s 框架。 这些框架联合起来的作用,相当于在j 2 e e 体系结构中的e b 组件发挥 的作用,为大多数的项目开发提供了便利。 另外,由于采用j s p s e r v l e t 技术开发的b s 的应用系统存在不少弱点,从 而,使得a j a x 成为当前w e b 应用的主流开发技术,大量的业界巨头已经采纳并 且在大力推动这个技术的发展。最近的动态包括: ( 1 ) g o o g l e 公司率先采用a j a x 技术建造出了一大堆非常出色的应用( 包括 g o o g l em a p s ,g m a i l ,g o o g l es u g g e s t 等等) 。将a j a x 技术引到了聚光灯 西南交通大学硕士研究生学位论文第5 页 下。其中公认最优秀最复杂的a j a x 【2 0 - 2 l 】应用是c , o o g l em a p s 。由于完全基 于a j a x 技术来建造g o o g l em a p s 的界面,g o o g l em a p s 提供了远远超越其 竞争对手的地图服务的交互体验。 ( 2 ) i i l m ,o r a c l e ,y a h o o ! ,b e a ,r e d h a t ,n o v e l l 等业界领先的公司启动 了o p e na j a x 项目,致力于为a j a , x 开发建造先进强大的的开发工具。m m 在2 月底己经发布了o p e na j a x 项目的a j 觚t o o l k i t f r a m e w o r k 1 0 , 是一个基于e c l i p s e1 d e 的a j a x 开发工具。 ( 3 ) 微软开发了自己的a j a x 框架a l t a s ,不过主要是和服务器端的a s p n e t 框 架配合工作。 除了上述业界巨头对局a x 技术推崇外,a m a z o n 的a 9 搜索、苹果公司的 网上商店、网站新贵f l i c k r 、d e l i c o 砒、电子商务网站n e t f l i x 、美国在线和道 琼斯网站等等也都成为a j a x 的经典案例。国内的一些公司在自己的产品开发中 也在广泛使用a j a x 技术,比如:网易邮箱、雅虎中国的邮箱、新浪博客、新浪 邮箱、腾讯公司的q q 空间都使用了a j a x 技术。 由于a j a x 本身是一种新的技术,还在不断的发展成熟中,所以a j a x 的框 架领域也是如此。a j a x 开发框架主要分为两类,一类是浏览器端的框架;另一 类则是服务器端的框架。目前市场上,比较流行的有: ( 1 ) d o j o 是最古老的框架之一,于2 0 0 4 年9 月开始开发。这个项目的目标是构 造充分利用x m l h t t p r e q u e s t 的d h t m l 工具包,并把重心放在可用性问题 上。d o j o 只有几个文件,不用处理x m l h t t p r e q u e s t 的建立,只需调用绑定 ( b i n d ) 方法,并传入想调用的u i 也和回调方法,另外还可以使用b i n d 方 法提交整个表单。d o j o 支持向后和向前按钮,尽管这个特性不一定在每个 浏览器上都能用( s a f a r i 就是一个异类) ,但可以注册一个回调方法,在用户 点击了向后按钮或向前按钮时触发这个方法。d o j o 还提供了c h a n g e u r l 标 记,力图解决使用a j a x 所固有的书签问题。 ( 2 ) r i c o 1 5 】是市场上最新的框架之一,由s a b r e a i r l i n es o l u t i o n s 开发,随后又成 为开源实现。r i c o 的总目标是提供一组组件来开发丰富的因特网应用。它 得到了广泛的浏览器支持,不过s a f a r i 并不支持r i c o ,相对于d o j o 关注可 用性,r i c o 则是针对拖放动作、数据网格和所谓的电影效果( 移动部件、淡 入淡出等等) 而设计。r i c o 网站上有很多演示版e m o ) ,并且提供了代码。 ( 3 ) g o o g l ea j a x s l t 基于g o o g l em a p s 的工作,g o o g l ea j a x s l t 是使用x p a t h 的x s l 转换( x s l t ) 的j a v a s c r i p t 实现。x s l t 可以把x m l 文档转换为其他 语言,如h t m l 。g o o g l ea j a x s l t 允许使用j a v a s c r i p t 在浏览器上直接完 西南交通大学硕士研究生学位论文第6 页 成这些转换。c o o g l ea j a x s l t 在所有主要浏览器上都能工作,g o o g l e a j a x s l t 的工具包很小,包括几个j a v a s e r i p t 文件,还有一些测试页。 “) b i n d o w s 1 7 1 是一个处于w 曲应用程序中表示层的“胖客户”图形用户界面 工具,拥有与现代桌面应用程序相同的外观、感觉和事件,是一个轻量级 的b s 应用程序开发框架。该框架已经将j a v a s e r i p t 的面向对象编程( o o p ) 和基于i e 6 0 的d h t m l 发挥到极点,其中j a v a s c r i p t 用于客户端界面的显 示和处理,x m l h t t p r e q u e s t 用于客户端与服务器的信息传输。b i n d o w s 提供 了一个封装好的j s 类库,使得开发过程变得十分快捷。通过b i n d o w s 使得 w e b 系统原有的界面交互性差、页面刷新等问题都可以很好地解决。然而 b i n d o w s 并非完美,它封装了太多的原本h t m l 就提供的控件、事件和方 法,使得类库过于庞大并且内部藕合性太强,而一次性加载类库也导致了 b i n d o w s 窗口初始化的时间过长。同时,b i n d o w s 大量运用了i e 6 0 的技术。 限制了b i n d o w s 进行跨浏览器和跨平台的运用。 ( 5 ) d o r a d o i 】s 】是由上海锐道信息技术有限公司开发的一套基于1 2 e e 的w e b 开 发框架组件,它的前身是e x t r a 。该开发平台是一款用于快速开发r i c h - c l i e n t 的w e b 开发平台,它由一个框架和众多的基础组件组成。d o r a d o 组件开发 平台解决了长期困扰软件开发人员的关于w e b 表现层开发的两大难题:快 速开发和实现复杂交互界面,充分满足用户体验。d o r a d o 在w e b 页面上实 现了大部分c s 系统中的控件,不过当前版本不支持以外的其他浏览器。 ( 6 ) j s o n j s o n - r p c 【l9 】:j a v a s e r i p t 对象标注( j s o n ) 是一种文本格式,与x m l 很相似,可以用于交换数据。j s o n 的设计要保证两方面,一方面便于人阅 读,另一方面便于机器解析,它使用了类似c 系列语言的约定。与j s o n 相关的还有j s o n - r p c ,这是一个远程过程调用( r p c ) 协议,类似于 x m l - r p c ,但面向的是j s o n 语言。作为规约,j s o n - r p c 在许多语言中 都有实现,包括r u b y ,p y t h o n 和p e r l o 。 ( 7 ) d i r e c t w e b r e m o t i n g :利用d i r e c t w e b r e m o t i n g ( d w r ) ,可以从j a v a s c r i p t 直接调用j a v 9 方法,就像它们是浏览器的本地方法一样。尽管后台严格限 制为j a v a ,但d w r 仍然是最流行的框架之一。d w r 的文档健全,d w r 的配置文件指定了可以远程创建和调用的类,并在文档中警告用户:“从浏 览器调用服务器确实存在一些安全问题”之类的语句。d w r 除了包含服务 器端代码的j a r 文件,另外还有两个j a v a s c r i p t 文件包含了一些辅助函数。 d w r 适用于一些常见的w e b 框架,如s t r u t s 和t a p e s t r y 。 ( 8 ) r u b y o i l r a i l s :r a i l s 是一个的新w e b 框架,建立在r u b y 语言上。如今, 西南交通大学硕士研究生学位论文第7 页 r a i l s 已经得到了大量关注,这是因为使用r a i l s 能够快速开发基于w e b 的 应用。开发b a s e e a m p ( a j a x 应用的主要示例) 时,3 7 s i g n a l s 小组提出名为 r a i l s 的框架。r a i l s 有许多内置的l a v a s c d p t 库,包装了很多常用的特性, 另外它还包含一个模块,包装了r u b y 语言的j a v a s c r i p t 调用。 虽然当前的轻量级框架飞速发展,同一类型的轻量级框架不断推出,但是 各个框架都不完美,各有各的优缺点。w e b 层的框架大都遵循m v c 结构,在 一部分程度上为开发创造了便利,但是没有对组件进行反转控制,造成代码之 间的藕合度过高,另外,虽然部分w e b 框架为了弥补b s 结构的缺陷,集成了 a j a x 功能,但数据交换主要基于x m l ,由于x m l 是一种结构文档,需要服务 器和客户端都对其进行手工生成和解析,为系统开发带来了诸多不便,并且 j a v a s c r i p t 基于d o m 的x m l 解析模型使其效率低下并且需要占用较多的系统 资源,所以不能很好的融入面向对象( 基于o o ) 的服务系统;业务层框架大都 采用了i o c 模式对组件进行反转控制,但目前的业务层框架对组件的种类有些 限制,只支持部分类型的组件( 比如:应用服务组件) ,而象购物车、用户管理 等需要在与客户会话期间保存相关状态的组件并不能很好的被容器反转控制, 从而造成在开发过程中,如果运用此类组件时会产生严重的代码依赖。 由此可见,由于a j a x 应用中的问题和i o c 容器对组件类型的限制,使得当 前的轻量级框架并不能很好的构建高质量的软件,因此,如何对当前的j 2 e e 轻 量级框架进行有效扩展变得相当有意义。f r a m e s e r v e r 是作者参与设计的一个 j 2 e e 轻量级框架,该框架采用i o c 容器对组件进行反转控制,并集成了w e b 层m v c 的功能。作者在f r a m e s e r v e r 的基础上,对之进行扩展,使容器能够很 好的支持有态组件、集成a j a x 并使用j s o n 解决a j a x 应用中的各种问题。 1 3 课题的主要研究工作 在理论研究方面,从基于j 2 e e 的服务器框架系统的研究角度出发,深入研 究了框架技术和当前主流轻量级框架的体系结构设计,并找出当前轻量级框架 的设计弱点,针对这些弱点深入研究了i o c 设计模式和a j a x 技术等相关技术。 在应用系统方面,参与设计了轻量级1 2 e e 开发框架f r a m e s e r v e r ,并 结合a j a x 技术的优势,融合i o c 微容器,负责实现了框架的反转控制c ) 容器 对有态p o j o 的支持以及对a j a x 技术的集成,有效弥补了当前轻量级框架所存 在的部分问题。7 此外,作者几乎完成了项目“四川师范大学s p h i n x 交互式化学c a i 系统” 西南交通大学硕士研究生学位论文第8 页 的所有工作,从设计到实现,并把f r 锄趣e r y 盯的扩展方案应用到该项目中,验 证上述扩展方案的可行性和实用性。 1 4 论文的组织结构 论文分为六个部分来阐述: 第一章绪论。主要介绍课题的背景、技术研究现状,对论文的工作及结构 安排进行概要介绍。 第二章技术基础。依次介绍了框架技术、主流轻量级框架的体系设计结构、 目前在软件工程领域新兴的反转控制模式( i n v e r s i o no fc o n t r o l - i o c ) 及反转控制 在组件设计中的优势;同时介绍了a j a x 技术的基本概念以及工作原理。 第三章基于f r a m e s e r v e r 扩展技术的应用实例分析与设计。以实际项目“四 川师范大学s p h i n x 交互式化学c a j 系统”为例,详细介绍了该项目的开发背 景、功能设计、系统结构设计。 第四章f r a m e s e r v e r 框架的扩展实现。详细介绍了f r a m e s e r v e r 框架的设计 思想和体系结构设计,并针对当前j 2 e e 轻量级框架存在的部分问题,在 f r a m e s e r v e r 框架中逐一实现。比如: ( 1 ) f r a m e s e r v e r 的i o c 微容器中有态服务管理模型 该部分详细介绍了f r a m e s e r v e r 框架的有态p o j o 管理模型的设计与实现, 并详细证明了该模型的可行性及引用完整性。 ( 2 ) f r a m e s e r v e r 集成a j a x 该部分详细介绍了j s o n 和基于j s o n 的对象序列化算法,并自主实现了一 个匀a x 浏览器端的框架;结合j s o n 对象序列化算法,使得f r a m e s e r v e r 完全 支持a j a x 功能,并解除了以x m l 作为通信格式的各种问题。 第五章系统实现。本章详细介绍了系统的实现平台、如何使用f r a m e s e r v e r 进行j 2 e e 系统的开发,并验证本文提出扩展方案的可行性和正确性。 第六章研究工作总结与展望。对本文的工作进行总结,并提出展望。 西南交通大学硕士研究生学位论文第9 页 2 1 框架技术 第2 章技术基础 在现代软件工程中,软件重用跚】已经成为其中一个主要目标。代码重用通 过面向对象语言的继承机制和编译技术已成为现实。随着面向对象技术的日趋 成熟,像这样简单的代码复用已经不适合特定领域大型软件生产的需求。为了 提高软件生产过程的重用力度,软件领域的先驱者开始进行一种新的尝试来提 高软件生产力。不仅要重用旧的代码,而且要重用相似的分析设计结果和体系 结构,以此减少构造新软件系统的代价,并提高软件的可靠性。基于框架的方 式就是这样一种面向特定领域的重用技术,j 2 e e 项目就可以通过框架的设计和 运用来达到控制软件质量提高软件的生产效率。 2 1 1 框架的定义 框架 5 6 1 ,即f r a m e w o r k 。是指在特定领域中的应用软件的半成品,就是一组 组件,供用户选用完成用户自己的系统,框架是对于那些试图在他们所关心的 领域构造一个复杂软件系统的用户而言的。框架利用一系列的对象和它们之间 的接口来对应静态和恒定结构的端口,并保留友好界面使用户能够很容易完成 变化的、不稳定的剩余部分而得到一个新应用程序。一个框架可以包含一个或 多个模式,是各种设计模式【5 5 l 的更高级抽象,简单说就是使用别人搭好的舞台, 你来做表演。一个好的框架可以让程序员专注于商务逻辑的实现,并且把整个 系统分成若干相互独立的层次,减少了组件的耦合性,而框架本身可以处理系 统很多细节问题,比如:事务处理,安全性,数据流控制等问题,所以应尽量 在项目中使用框架。框架有如下几种定义形式: ( 1 ) 框架( f r a m e w o r k ) 是构成一类特定软件可复用设计的一组相互协作的类删。 ( 2 ) 框架是一组具体表达了抽象设计的类,用于解决一类相关的问题。 ( 3 ) 框架是一个能被开发者插入他们自己的代码,并能提供大部分的通用功能 的应用架构1 2 “。 “) 框架是现成可用的应用系统。它仍是个半成品,等待后来者做“二次开 发”,实现为具体的应用系统。 。 西南交通大学硕士研究生学位论文第1 0 页 ( 5 ) 框架不是“平台”,后者的概念更加浮泛和模糊人们说的一个平台,可 以是种操作系统,一种应用服务器,一种数据库软件,种通信中间件 等等,因此“平台”几乎成了所有系统软件的统称。框架一般处在低层应 用平台( 如j 2 e e ) 和高层业务逻辑之间的中间层。平台主要是指提供特定 服务的系统软件,而框架则更侧重于设计、开发过程,或者可以说,框架 通过调用平台提供的服务而起作用。 归纳上述定义,框架是整个或部分系统的可重用的设计,表现为一组抽象 的组件及组件实例间交互的方法;或认为,框架是可被应用开发者定制的应用 骨架。 2 1 2 框架的特点 框架是个可复用的软件单元,它可以看作应用系统实现的一个半成品, 它为一类相似应用系统提供了共有结构的设计与实现,因此框架可以针对特定 的应用系统渐进行扩展。具体地说,框架有以下主要特点: ( 1 ) 抽象性:框架抽象了特定领域中一组相似地应用系统( 或予系统) 设计与 实现地共有部分,并给出了这些部分地设计和实现。 ( 2 ) 可扩展性:由于框架抽象了一类相似应用的共同部分,开发者可以扩展这 些共同部分( 如抽象类) 实现特定的应用。 ( 3 ) 迭代性:框架开发过程本身具有迭代性,在使用框架的过程中,框架支持 领域的共性被不断发掘,因此框架需要反复的开发来完善其功能。 ( 4 ) 结构性:框架定义了特定领域中应用系统公共结构的设计和实现,开发者 在这个共同的结构上扩展其功能实现具体的应用,因此一个好的框架具有 明确清晰的层次结构,以便于复用和扩展。 ( 5 ) 可复用性:可复用性是框架的最根本的特点,也是框架具有上述特点的最 终目的,框架是一种大粒度的可复用资源,是从设计到实现层次的复用, 但它也必然地包括小粒度的复用类的复用( 如对抽象类的继承) 。 2 1 3 框架的分类 随着e j b 在某些领域方面的失败,人们发现在很多情况下,e j b 组件并不 是必要的,普通的b e a n 组件就能够实现绝大多数项目的需求。因此j 2 e e 框架 西南交通大学硕士研究生学位论文第1 l 页 的也分为了两种: 一种是由商业服务商提供的基于e j b 组件的重量级框架( 如b e a 的 w o r k s h o p ) ,一般要配合专门的开发工具并且通常只能在固定的一种服务器 上运行。 另一种则是由广大的j a v a 开源组织提供的基于普通b e a n 的轻量级框架,轻 量级框架是针对重量级框架而言的,主要是指在j a v a 应用程序开发环境中 简化的编程模型和更具响应能力的容器。 轻量级框架提供了以下几个特点: ( 1 ) 从封装角度看,组件粒度一直是s a ( s o f t w a r ea r c h i t e c t u r e ) 的最大问题。根据 e j b 模型,e j b 组件让我们把业务组件封装成粗粒度的业务组件。轻量级 容器可以定义更为细粒度的组件( 即使某个组件只有一个对象) 。以依赖注 入( d i ) 为代表的解耦模式,可以让组件不依赖容器( 运行环境) 的a p i 。 d i 作为容器的管道,承担中介的角色,让组件的使用者和提供者毫无关联。 对于以何

温馨提示

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

评论

0/150

提交评论