《基于AOP与MVC模式的Web应用架构的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于AOP与MVC模式的Web应用架构的设计与实现.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第4 1 卷2 0 0 5 年 1 0 月 南京大学学报(自 然科学)J O UR N A L O F N A N J I N G U NI VE R S I TY (N A T U R A L S C I E NC E S)Vo l.4 1Oc t.,2 0 0 5基于 A O P与 MV C模式的We b应用 架构的设计与实现 赵成勇,周南,张晓泉 (中国 农业大学网络中心,北京,1 0 0 0 8 3)摘 要:M V C 模式在WE B 应用架构中得到广泛的应用,但其没有涉及架构业务层的可扩展性问题.将面向方面编程的思想引进WE B 应用架构的设计,可以增强架构业务层的可扩展性和稳定性
2、.给出使用MVC模式并结合A OP思想来构建的一种WE B应用架构,并使用 3个优秀的开源项 目(S T R UT S,A S P E C TWE R K Z,HI B E R N A T E)对该架构予以实现关键词:MVC模式,A OP,WE B应用架构中圈分类号:TP 3 1 1D e s i gn a n d i mp l e me n t a t i o n o f We b A p p l i c a t i o n Ar c h i t e c t u r e b a s e d o n M VC P a t t e r n a n d AOP Z h a o C h e n g-
3、Y a n g,Z h o u N a n,Z k a n g X i a o-Q u a n (N e two r k C e n t e r,C h in a A g r ic u lture Un i v e r s i t y,B e ij in g,1 0 0 0 8 3,C h i n a)A b s t r a c t:MV C P a tt e rn is u s e d in We b Ap p l i ca ti o n 八rc h i t ectu re w i d e l y,b u t i t d o es n o t r e fe r t o t h e e x t
4、 e n s ib i li t y o f t h ea r c h i t e c t u r e s b u s i n e s s l a y e r.I n t r o d u c in g A O P in t o th e d e s i g n o f We b A p p lic a t i o n A rc h i t e c tu re ca n i m p ro v e t h ee x t e n s i b il it y a n d s t a b il it y o f t h e b u s in e s s la y e r.T h is p a p e r
5、 in t rod u c e s a We b A p p li c a t io n A r c h i t e c t u r e b u il t o n MV CP a t t e r n a n d A OP,a n d t h e n g i v es a n e x a mp le imp le me n t a t i o n wit h t h re e f in e o p e n s t u m e p ro j e c t s.K e yw o r d s:MVC P a t t e r n,A O P,w e b a p p li c a t io n a rc h
6、 i te c t u re 随着 I n t e r n e t 发展的日渐成熟,WE B应用得到越来越多人的认可,WE B应用软件的开发从架构层次上可以分为表示层,业务层和持久层一 个灵活的 WE B应用架构应该能够降低这三层之间的藕合,并保证每个层次内部具有良 好的可扩展性.本文提出一种We l 应用架构,一方面使 用 MV C(M o d e l 一V ie w-C o n t ro ll e r,模型一 视图一控制器)模式从架构层次上保证各层之间的 低辆合,另 一方面结合应用A O P(A s p e c t 一 O r i e n t e d P ro g r a m m in g
7、,面向方面编程)思想,保证架构 业务层具有良 好的可扩展性,从而使得采用这种架构的 软件系统具有较强的可扩展性、稳定性和可维护性.1 MV C模式 MVC最初是美国施乐公司在上世纪 8 0年代为编程语言S m a l l t a l k 2 8 0 发明的一种软件设计模式.在该模型中 应用程序被分为3 个组成部分:模型(M o d e l),视图(V i e w),控制器(C o n t r o l l e r).基金项目:国家科技攻关计 划重次项目(2 0 0 3 B A 8 0 8 A 1 4)第 4 1卷赵成勇等:基于 A O P与MV C模式的We b 应用架构的设计与实现7 1 9
8、模型包含了 应用程序功能的核心,提供使用应用程序功能的方法和途径,集中体现了 应用程序的状态.它通过控制器来取得视图中的对象或者更新视图;视图 用来实现模型的外观,代表流向用户的数据.当模型发生改变时,它能够得到通知,并且通过查询来显示这种改变;控制器将模型和视图联系在一起,定义用户界面对用户输人的响应方式,负责把用户的动作转成针对模型的操作,模型通过更新视图的数据来反映数据的变化,三者之间的关系如图1 所示 1 .方法调用-州 卜一 一 一一 事件 一 一 令圈1 M,V,C三者之间关系 可以看出,MV C模式的目的是减少数据表达、数据描述和应用操作的藕合度,增加代码的重用率.将 MVC模式
9、引人WE B应用程序的架构设计,可以从架构层次上实现W E B应用开发各层之间的低藕合.2 面向方面编程(A O P)A O P 于 1 9 9 0 年在X e r o x P A R C 项目中 发明 2 1,用于分离软件系统中的横切关注点(C r o s s c u t t i n g C o n c e r n).横切关注点就是横切了多个对象体系的问 题,它描述的 不是一个业务 而 是 一 个问 题 3 .例 如日 志记 录、权限管 理等,它们分散在多个功能模块,在实现时无法用对象化方法或结构化方法抽象成一个过程或对象来加以 封装 A O P引人“方面(a s p e c t s)”用来
10、捕捉横切关注点,并将其模块化,然后通过“织人(We a v i n g)”过程把功能模块和方面模块合成到一起组 装成最终的系统,达到分离横切关注点的目的.织人 是实现A O P 的 一个重 要机制,织人的实现机制基本上可以分为两类:静态织人与动态织人.静态织人是指 在程序编译时就在功能模块代码中的适当 位置插人方面 模块代码,从而形成混合编码;静态织人时,方面模块代码在程序运行前已 被内 联至 功能 模块 代码,因此代码可以 被优化,从而使织 人产生的开 销最小化动态织人是指在程序运行时根据 上下文来决定调用方面模块代码,包括它们的先后顺序、增加或删除一个方面模块等等 现 在实现A O P 的
11、主要 项目,采 用 静 态 织人 方 式 的 有:A s p e c t j 0 i(创建 于X e r o x P A R C 项目,发展时 间 长,比 较 成熟,但其语法过于复杂并需要专门 的J a v a 编 译器);采用动态织人方式的有:J b o s s,N a n n i n g,印r i n g A o p,A s p e c t w e r k z 等.A O P用来对系统中的横切关注点进行处理,使横切关注点可模块化,促进功能模块与方面模块彼此的复用 WE B应用开发的业务层集中 处理系统功能及业务逻辑,是整个We b 应用系统的核心,而使用面向对象方法或结构化方法来实现时都存
12、在方面模块代码和 功能模块代码纠结的问题,因此运用 A O P思想实现 We b应用业务层将能增强业务层的可扩展性.下面以日志记录、权限管理功能为例来说明在 WE B架构业务层设计中引人 A O P思想后带来的变化.如图2 A所示,在传统的编程方式实现WE B 架构的 业务层时,日 志记录、权限 管理功能是分散在若干个业务功能模块中的.是一种紧 祸合关系;如图2 B 所示,使用 A O P实现WE B 架构的 业务层时,日 志记录、权限管理等横向的方面功能独立于业务功能模块,形成松散藕合关系.对于业务功能 模块来说可以实现动态地添加和取消这些横向的方面功能,从而提高了 业务功能模块的 可复用性
13、和可维护性7 2 0南京大学学报(自然科学)第 4 1卷W F B 架 构 业 务 层WE B 架构AY 务层业 务 功 能 植 块 t业 务功能模块、目 目()传统 的编程方式 实现职 E B 架构业务层(B)使 用 C P 实M W E B 架 构 业 务 9圈2 A O P在 WE B架构业务层上的应用3便用 A O P和 MV C模 式构建WE B 应用架构3.1 基于A O P 与M V C 模式的We b 应用架构 MV C 模式把用户界面设计、流 程控制和业务逻 辑 进 行 了 分 离15 3.将M V C 模 式引 人W e b 应用 架构,能实现通过控制器来联系表示层和业务
14、层,有效降低了两个层次之间的 藕合,体现了分层的设计思想.不过该模式并没有涉及到具体业 务层内的架构设计,对一个We b 应用来说,随着其规模和功能的扩大,业务层的复杂性也会随之增加,这就需要一个We b应用架构在业务层也应具有良好的可扩展性 A O P可用于解决业务层软件功能中方面与模块的横切,实现方面和模块的动态结合,因此可以结合使用A O P 和MV C 模式来构建这样一个具有可扩展性业务层的WE B 应用架构,架构示意图如下:业 务 层前 向方 1 角l l 图3 基于A O P与 MV C模式的We b 应用架构 如图3 所示整个W E B 应用架构可以划分为表示层、业务 层(包括前
15、向方面层、业务功能层、后向 方面层)、持久层.表示层负 责将来自 模型的数据显示给最终用户,控制器用于联系表示层和业务层.在业务层中,A O P前向方面可以组合任意一个业务功能模块,业务功能模块第 4 1卷赵成勇等:基于 A O P与 MV C模式的We b应用架构的设计与实现7 2 1可以组合任意一个 A O P后向方面.A O P前向方面、业务功能模块和 A O P后向方面的一个组合便构成一个完整的 业务功能,具体组合是根据系统运行时的上下文动态地决 定.3.2 基于A O P与 MV C模式的 We b应用架构的实现下面结合使用3 个优秀的开源项目S t r u t s,A s p e
16、c t we r k z和 Hib e rna t e。给出图 3所示W E B 应用架构的j a v a 实现.S t r u t s 是M V C 模式的开 源实现,H i b e rn a t e是 O R M(对 象 关 系 映 射)的 开 源 实 现A s p e c t w e r k z i 6 3 是 以 动 态织 人 方 式实 现A O P 的框架,它具有运 行时动 态决定调用方面模块、方便引人,不会对原来的 项目开发和构造过程产生任何影响的 优点.实现后的 架构如图4 所示:业 务 层前 向 方 面 层圈4 基于A OP与MV C模式的We b应用架构的J a v a实现
17、如图4 所示,S t r u t s 根据 s t r u t s 一 c o n f i g.x m l 配置文件中的标签关联“视 图”、“模 型”和“业 务 逻 辑”.A s p e c t w e r k z 将业务层分为“业务功能模块”和 A O P横 向 方 面 功 能”两 层,并 根 据A s p e c t w e r k z 配置文件中的 标签联系这两层 H i b e r n a t e 用于构建 We b 应用架构持久层,通过H i b e rna t e 配置文件中 标签所指定的 h b m文件实现数据库表和j a v a 类之间的映射.下面以用户登录功能及其中涉及到的日
18、志记录和权限管理为例,对各配置文件中的主要配置项做进一步说明.本文所采用软件版本为S TR UT S 1.2.4,HI B E R N A T E 2.l.2,A S P E C T W E R K Z 2.0,WE B服务 器采用T o m c a t 5.0.2 8,数据库采用 M y S Q L 5.0.4-b e t a.(1)S t r u t s 配置文件主要配置项 /a c t i o n s 其中,标签中“i n p u t 属性指出用户登录页面,为视图;n a m e 属性指出与该视图 相关的 模型,为 一个J a v a 类;p a t h 属性指出 用于处理用户登录的A
19、c t io n,为一个 J a v a类,.,t y p e属性则给出了该类的 路径;控制器根据业务逻辑A c t io n 的处理结果(登录 成功或登录失败)决定显示给用户相应的视图,标签中“p a t h 属性指出具体视图的7 2 2南京大学学报(自然科学)第o f 卷位置.(2)A s p e c t w e r k z 配置文件主要配置项 其中,标签中“c l a s s 属性指出为 业务功能模块代码调用的 方面类,这里为日志 记录操作类;标签中“n a m e 属性用来定 义横切 点(p o i n t c u t)的名 称,e x p r e s s i o n 属性指出 横切点
20、在业务功能模块代码中的具体位置,这里为 U s e r L o g o n 类的lo g o n 方法;标签,n a m e 属性指出被调用的 方面 模块代码的 方法名,这里为日 志记录 具体实现的方法;t y p e 属性指出调用类型,包括a ro u n d,b e f o r e,a f t e:等,这里指在横切点 之前调用方面 模块代码.对于权限管理的配置类似以上说明.(3)H i b e rn a t e 配置文件主要配置项 其中标签中“r e s o u r c e”属性定义了数据库表和l a v a 类之间映射文件的 位置.以 下为具体映 射文件的内容 其中标签定义数据表名和其对
21、应的J a v a 类名.标签用来标识主键,定义数据表列名和相对应J a v a 类的属性名及数据类型;其中 标签定义了自 动产生主键的方式.标签用来定义数据表非主键列名和相应J a v a 类的属性名及其数据类型、是否允许为空、字符串长度.4 结论 基于 A O P与 MV C模式的 We b 应用架构能够确保业务系统软件的可扩展性、稳定性和可维护性,特别是具有较强的应对业务需求变化快的能力.本文给出该架构相应的实现方案由于结合使用了 多个开源项目,具有成本低的优点,但部署配置比 较复杂.该实现方案在科技部,十五”国家重大 科技项目“小城镇服务业技术研究与开发”课题中“小城镇劳务中 介机构
22、服务信息系统”的开发中 得以 应用,使得系统具有良 好的可扩展性,能够适应未来小城镇劳务中介业的 快速发展而带 来的业务需求 变化.R e f e r e n c e s 1(2 lJ a v a B 1 u e P ri n t s M o d e l-Vie w-C o n t ro ll e r.h t t p:/l a-v a.s u n.c o a t/b lu e p ri n ts/p a t t e ms/M V G d e t a i l e d.丛吵 2 0 0 5一 0 5 一2 2.R a v i间.A s p e c t O ri e n t e d P r o g
23、r a t n t n i n g.h t t p:业w ww.c-s h a tp e o r n e r.t c r n/C o d e/2 0 0 2/No v/a o p.a=,2 0 0 2一1 1 一 2 0.第4 1 卷赵成勇等 基于A OP与MV C模式的We b 应用架构的设计与实现7 2 3C o mp u t e r E n g i n e e r i n g a n d A p p l ic a t io n,2 0 0 1,1 7(6):1 6 0 一 1 6 3.(孙莹.许俊华,张毅等.M V C编程模型在We b 程序中的应用及J a v a 实现.计算机工程与应
24、用,2 0 0 1,1 7(6):1 6 0-1 6 3)h t t p:/a s p e c t w e r k z.wd e h a u s.o r g/,2 0 0 5 一0 5 一2 2G o n g Y S.Th e a n a l y s is o f p o p u l a r J 2 E E We b Ap-口 i c a t io n A r c h it e c t u r e.h tt p:/w”一1 2 8.ib mc o r n/d e v e lo p e r mr k s/c n/a v a/I 一i2 e e A r c h/,2 0 0 1一0,一1 2(龚永
25、生.当前流行的3 2 E E WE B应用架构分析.h tt n:/w v,一 1 2 8.i b m.c o m/d e v e lo a-e r w o r k s/c n,A ia v a/I 一i 2 e e A m h/,2 0 0 1 一0 7 一1 2)圈侧 3 Z h a n g Q,T a n B,T a n C X.I m p le m e n t in g lo w-c o u-p li n g m o d u le w i t h g e n e r a t iv e p r o g r a mm i n g me t h-o d s:T h e t h e o ry
26、a n d p r a c t ic e o f A O P.C o mp u t e r A p-p l ic a t i o n s,2 0 0 5,3(3):6 2 0 一6 2 2.(张强,谭 博 谭成翔,利用产生式编程构建低辐合的软件 模块-A O P的原 理和实践.计算机应用,2 0 0 5,3(3):6 2 0-6 2 2).4 1 t h e A s p e c t T e a m.th e A s p e c t)P r o g r a m m in g Gu id e.h t t p:/e c l ip s e.o r /a s tx c ti/d o c/r e le a s e d/o r o u i d e l md e%.h t m l,2 0 0 5 一0 5 一2 2.5 S u n Y,X u J H.Z h a n g Y,e t a 1.W e b A p p li c a t io n o f MV C P a t t e rn a n d i t s I mp l e n t e n ta t io n w i t h J a v a.