基于Silverlight的RIA系统架构与设计模式研究.pdf
《基于Silverlight的RIA系统架构与设计模式研究.pdf》由会员分享,可在线阅读,更多相关《基于Silverlight的RIA系统架构与设计模式研究.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 7 0 62 0 1 0,3 1(8)计算机工程与设计C o m p u t e rE n g i n e e r i n ga n dD e s i g n袋件与算法基于S i l v e r l i g h t 的R I A 系统架构与设计模式研究程国雄,胡世清(深圳大学师范学院教育信息技术系,广东深圳5 1 8 0 6 0)摘要:为解决适用于R I A 应用系统开发的设计模式的问题,分析了基于S i l v e r l i g h t 的R I A 系统架构,并针对M V C、M V P 模式在R I A 应用系统开发时存在单元测试困难和耦合度高的问题,提出了引入M V V M 模式
2、。该模式由视图、视图模型、模型3 部分组成,通过实现I N o t i f y P r o p e r t y C h a n g e d 接口,解决了模型到视图模型的数据传导问题,使模型独立于视图模型;通过实现了I C o m m a n d 接口,解决了视图中的事件绑定问题,结合数据绑定,使视图模型独立于视图。实例结果表明,采用M V V M 模式设计R I A 应用系统能够实现界面逻辑和应用逻辑的完全分离,且具备良好的自动化测试能力关键词:设计模式;模型视图模型视图;系统架构;富互联网应用;模型视图控制器中图法分类号:T P 3 1 1 5文献标识码:A文章编号:1 0 0 0 7 0
3、2 4(2 0 1 0)0 8 1 7 0 6-0 4S y s t e ma r c h i t e c t u r ea n dp a t t e mr e s e a r c ho fR I Ab a s e do ns i l v e r l i g h tC H E N GG u o x i o n g,H US h i q i n g(D e p a r t m e n to f E d u c a t i o n a lT e c h n o l o g y,T e a c h e r sC o l l e g e,S h e n z h e nU n i v e r s i t
4、 y,S h e n z h e n518 0 6 0,C h i n a)A b s t r a c t:T os o l v et h ep r o b l e m so f t h ed e s i g np a t t e r nf o rr i c hi n t e m e ta p p l i c a t i o n(R J A)s y s t e m sd e v e l o p m e n t,t h es i l v e r l i g h t-b a s e dR I Aa r c h i t e c t u r ei sa n a l y z e d,a c c o r
5、d i n gt op r o b l e m so f t r a i tt e s t i n ga n dt i g h tc o u p l i n gw h e nu s i n gt h em o d e l v i e w-c o n t r o l l 盱(M V C)a n dt h em o d e l-v i e w-p r e s e n t e r(姗)p a t t e r nt od e s i g nR I As y s t e m s,t h em o d e l v i e w-v i e w m o d e l(M V V M)p a t t e r ni
6、 sp r o p o s e d T h i sp a t t e r ni sc o m p o s e do f m o d e l,v i e wa n dv i e w m o d e l,t h ep r o b l e mo f d a t as w a pb e t w e e nt h em o d e la n dt h ev i e w m o d e li sr e s o l v e db yr e a-l i z i n gI N o f i f y P r o p e r t y C h a n g e di n t e r f a c e,a n dt h em
7、 o d e li n d e p e n d e n to f t h ev i e w m o d e li sr e a l i z e d I nt h ew h i l e,t h ep r o b l e mo f e v e n tb i n d i n gi nv i e wi sr e s o l v e db yr e a l i z i n gI C o m m a n di n t e r f a c e,c o m b i n e dw i t hd a t ab i n d m g,t h ev i e w m o d e li n d e p e n d e n
8、to ft h ev i e wi sr e a l i z e d E x a m p l e ss h o wt h a tu s i n gt h eM V V Mp a t t e r nt od e s i g nt h eR I As y s t e mc a nr e a l i z et h el o g i c a li n t e r f a c ec o m p l e t es e p a r a t ef r o mt h ea p p l i c a t i o nl o g i ca n dh a sag o o dc a p a c i t yo fa u t
9、o m a t e dt e s t i n g K e yw o r d s:d e s i g np a t t e r n s;M V V M;s y s t e ma r c h i t e c t u r e;R I A;M V C0 引言随着软件技术的发展成熟,软件架构设计和设计模式的选取是现代软件开发中最为关键的一环,架构设计和设计模式是否合理将直接影响到软件系统最终是否成功。R I A(r i c hi n t e r a c ta p p l i c a t i o n)技术是近来发展较快的实现W e b 2 应用开发的技术脚,与传统W e b 应用相比,R 1 A 技术更加
10、追求实现丰富用户体验的用户界面。适应这种变化,R I A 应用系统开发过程中的分工也更加细致,一部分人负责界面设计,称为设计者:一部分人负责代码设计,称为程序员。这种分工协作给软件设计模式带来了新的要求,一方面要保持系统易于理解和维护、良好的可扩展性和低耦合度,另一方面要追求业务逻辑、呈现逻辑和u I 逻辑的分离,使界面设计和程序控制开发可同步进行。目前将M V C(m o d e l-v i e w-c o n t r o l l e r)、M V P(m o d e l v i e w-p r e s e n t e r)设计模式应用于R I A 应用系统开发的比较多,但这两种模式并不能完
11、全实现将u I 设计分离出来。为此将呈现逻辑从视图中独立出来,同时将界面数据从模型中独立出来,组成视图模型(V i e w M o d e)模块,形成了M V V M(m o d e l v i e w-V i e w M o d e l)设计模式M。M V V M 模式不但能够实现U I 设计的分离,而且能充分发挥R I A 技术中的数据绑定的技术特点,提高软件的复用性,因此M V V M 模式在R I A 应用系统的开发中有很好的应用前景。l 传统w 曲应用和R I A 系统架构比较传统W e b 应用系统(其系统架构如图1(a)所示)主要采用B s 结构。浏览器作为客户端,使用H T M
12、 L 界面描述语言实现程序界面呈现;在W e b 服务器端,分别实现界面呈现逻辑、应用程序逻辑、数据访问层等功能。在这种架构中,应用程序逻辑完成主要的业务控制:一方面从数据访问层获取数据,通过界面呈现逻辑把数据转换成H T M L 格式后送到客户端呈现,另一方面获取客户端的数据,在应用程序逻辑中实现数据约束控制,并通过数据层传送到数据库。程序的核心功能驻留收稿日期:2 0 0 9-0 4-1 0:修订日期:2 0 0 9-0 6-1 2。作者简介:程国雄(1 9 7 1 一),男,湖北黄梅人,硕士,讲师,研究方向为网络工程、软件工程;胡世清(1 9 6 3 一),男,湖南双峰人,硕士。高级工程
13、师,研究方向为网终工程。E-m a i l:c h m l t,o m。c o r n万方数据程国雄,胡世清:基于S i l v e r l i g h t 的R I A 系统架构与设计模式研究2 0 1 0,31(8)1 7 0 7(丑)传统W e b 应用系统架构(”剐【A 系统架构图l 传统W e b 应用与R I A 系统架构并运行在服务器端。R I A 系统(其系统架构如图1(b)所示)与传统W e b 应用系统不同,为了实现更好的用户体验,R I A 系统使用X A M L 语言(能够描述流媒体、动画、3 D)实现界面元素描述,界面呈现逻辑和部分应用程序控制逻辑也在客户端实现。在服
14、务器端,实现数据访问层和一部分应用程序控制逻辑。在R I A 架构中,服务器端应用程序控制逻辑一方面通过数据访闯层访闫数据库,另一方面通过W e b 服务同客户端程序控制逻辑以异步的方式交换数据,程序的核心功能分布在客户端和服务器端。R I A 与传统W e b 应用相比,有以下几个方面的特点:(1)使用X A M L 语言代替H T M L 语言,容易实现m A s(富I n t 觑 n e t 应用系统)的U I 开发,并且在系统设计过程中,实现界面设计和程序控制代码设计分离的开发流程;(2)界面呈现逻辑移到客户端实现,易于实现程序状态维持和控制,发挥客户端系统的性能,降低服务器的负载;(
15、3)部分程序控制逻辑移到客户端,在客户端即可实现数据约束和程序逻辑控制;“)增加系统实现的难度,呈现逻辑和部分程序控制逻辑移到客户端,就要求开发者设计新的服务和比较复杂数据结构,以实现客户端程序控制逻辑和服务器的通信。在R I A 这种新型的运行架构下,引入何种设计模式对控制好视图、呈现逻辑、程序控制逻辑之间的关系,规范客户端与服务器之间通信接口十分重要。2适用于R I A 架构的设计模式2 1M V C、M V P 设计模式M v C 脚是S m a l l t a l k-8 0 引入的一种面向对象的设计模式,用于创建可重用的界面程序。M V C 模式将用户界面程序分为模型、视图和控制器3
16、 部分旧,三者之间的关系如图2(a)所示伪。模型是应用程序对问题处理逻辑的内在抽象,它是M V C 的核心部件,模型负责对应用程序的行为和数据进行管理,接收并响应来自于视图的用于维护视图状态的请求,当视图状态改变时,它会通知相应的V i e w 进行更新。视图负责以图形或文字的方式将M o d e l 的状态显示给用户。控制器解析用户的输入(如鼠标和键盘事件),然后调用M o d e l 的相应接口来改变其状态。M V P 模式(如图2(b)所示)是M V C 模式的变种,其目的是实现V i e w 与M o d e l 之间的松散耦合。M V P 模式中用P r e s e n t e r(
17、a)MVC模式(b)MVP模式图2M V C 与M V P 模式替代了M V c 模式中的C o n t r o l l e r,P r e s e n t e r 负责处理与V i e w 相关的视图设鹭和状态变化,实现V i e w 和M o d e l 的隔离。在运行时,V i e w 接受用户请求并传递到相关的P r e s e n t e r,P r e s e n t e r将用户请求转换成C o m m a n d(命令)操作M o d e l,当M o d e l 更新时,数据通过P r e s e n t e r 传递到V i e w 引发界面更新。M V P 模式与M V
18、C 模式相比,更加关注L 玎逻辑的处理,因此比较适用于具备较强U I 表达能力的软件设计系统。但是如果将其应用到基于S i l v e r l i g h t 的R I A 系统设计中,M V P 模式与M V C 模式都存在不足之处,主要与以下几点相关:(1)S i l v e r l i g h t 使用X A M L 语言实现U l 描述,设计U I 时可以通过D a t a C e n t e x t 属性(数据上下文)设置界面数据来源,用D a t a B i n d i n g 方式给控件属性赋值,简化程序控制代码:Q)设计U I 时可以通过v a l u ec o n v e r
19、 t e r s(值类型转换器)和O b s e r v a b l e C o l l e c t i o n(集合类型)实现U I 更新;(3)X A M L 可以通过t r i g g e r s、a n i m a t i o n s、e v e n t b u b b l i n g 实现状态改变和响应用户操作,这些原来都是使用程序代码实现的控制逻辑。M V C 模式和M V P 模式中的C o n t r o l l e r 或P r e s e n t e r 都存在对具体V i e w 的引用,使得这两部分存在耦合关系,不但发挥不了U l 设计的特点,而且给实现U n i tT
20、 e s t(单元测试)带来了不便。为了适应这种U I 设计的变化,我们引入M V V M 模式。M V V M 模式最初是由微软资深架构师J o h nO o s s m a n 在2 0 0 5年提出来的,其主要目的是解决W P F 应用系统的架构模式的设计问题。2 2M W M 设计模式2 2 1M V V M 模式结构划分M V V M 模式由视图、视图模型、模型3 部分组成嗍,其结构如图3 所示。通过这3 部分实现U I 逻辑、呈现逻辑和状态控制、数据和业务逻辑的分离。各部分的角色和相互之间的关系如图3 所示。图3M W M 模式万方数据1 7 0 82 0 1 0,31(8)计算机
21、工程与设计C o m p u t e rE n g i n e e r i n ga n dD e s i g nV i e w 封装界面和界面逻辑:V i e w s 负责定义应用程序的一组用户界面,组成V i e w 的各种控件可以很好地与V i e w M o d e l实现绑定,绑定是S i l v e r l i g h t 中实现用户界面呈现数据和动画行为逻辑的重要方式和特点。V i e w 将用户操作和数据的改变传递到V i e w M o d e l,由V i e w M o d e l 决定如何从M o d e l 获取或改变数据。在V i e w 的代码隐藏(c o d e
22、-b e h i n d)部分可能包含界面逻辑或应用逻辑的代码,这些代码将很难进行U n i tT e s t(单元测试),因此应尽量避免这种情况。V i e w M o d e l 封装呈现逻辑和实现程序状态维持:V i e w M o d e l实现呈现逻辑,呈现逻辑作为应用逻辑的一部分它关心的是应用程序的工作流程、任务、用户操作、应用程序逻辑行为和应用程序运行控制。V i e w M o d e l 不是控件的后台控制代码,它不关心任何具体界面外观并独立于具体的界面实现。为了V i e w M o d e l 拥有良好的复用性,V i e w M o d e l 不包含对任何界面组件(如
23、U I、界面元素、控件、动画)的引用。V i e w M o d e l 不能引用或继承u I 基类,它应是可以用编程的方式完成自动化测试的,它可提供给任何V i e w 使用。M o d e l 封装业务逻辑和数据:M o d e l 实现业务逻辑,它实现数据的检索和管理,实施业务规则,以确保数据的一致性和有效性,M o d e l 不包含V i e w 的引用,它应该实现一种传导机制,用来实现把变化后的数据通过V i e w M o d e l 通知V i e w。为了保证M o d e l 的复用性,M o d e l 部分不能包含任何与用户使用和界面行为相关的应用逻辑。2 2 2M V
24、 V M 模式各部分之间数据传导方式V i e w M o d e l 跟踪V i e w 的状态,并从M o d e l 抽取数据,设置V i e w 的D a t a C o n t e x t(数据上下文)为V i e w M o d e l 的实例,V i e w M o d e l 公开的数据就可以通过绑定到V i e w 控件的属性实现界面更新。M o d e l 数据更新后要通过V i e w M o d e l 传导到V i e w,需要在M o d e l 中实现I N o t i f y P r o p e n y C h a n g e d 接口,其实现形式如下代码所示:
25、p u b l i cc l a s sE x p M o d e l:I N o t i f y P r o p e r t y C h a n g e d p r i v a t es t r i n gd a t a l;p u b l i cE x p M o d e l 0 p u b l i cs t r i n gd a t a l g“坞t I l m d a t a l;s e t d a t a l=V a l u e;R a i s e P r o p e r t y C h a n g e d(”d a t a l”);,p u b l i ce v e n tP r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Silverlight RIA 系统 架构 设计 模式 研究
限制150内