MVC设计模式在ASPNET应用开发中的研究和实现.pdf
《MVC设计模式在ASPNET应用开发中的研究和实现.pdf》由会员分享,可在线阅读,更多相关《MVC设计模式在ASPNET应用开发中的研究和实现.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、M c r o o n m p u k r A p p c 丑t I o sv 0 1 2 3,N o 1 0,2 0 0 7研究与设计般型电脑应用2 0 0 7 年第2 3 卷第1 0 期文章编号:1 0 0 7 7 5 7 X(2 0 0 7)l O 0 0 0 4 0 3M V C 设计模式在A S P N E T应用开发中的研究和实现徐朝晖,樊银亭摘要,奉支首先介绍了M V c 设计模式的概惫厦优点,接看讨论了经典M V c 设计模式在A S P 雌t 环境下的实现最詹时M V C 在A s P N E T 下的使用特点覆不足之处进行了分析。关键词 M V C I 设计模式;视图 控制
2、器 A S P N E T中圈分类号:T P 3 9 3文献标识码:A引言A s P N E T 是微软最新推出的新型体系结构N E T 框架的一部分,它为构建新一代网络分布式应用提供了强有力的支持。与以前的w e b 开发模型相比,A s P N E T 提供了许多重要的优点,例如t 简易性,安全性、可管理性等。而且与基于过程的W e b 页面技术相比,面向对象技术在A S P N E T 中得到了完全实现。但传统的w e b 设计技术和方法还在制约着N E T 技术的广泛应用,如在传统的w e b 页面中页面显示。业务逻辑和流程控制耦合在一起,这从工程化的角度考虑,它有许多不足之处,用户界
3、面承担着向用户显示同题模型和与用户进行操作和I O 交互的作用,用户希望保持交互操作界面的相对稳定,但更希望根据需要改变和调整显示的内容和形式。A S P N E T 技术结合M V c 设计模式能够很好地解决上述问题。1M v c 设计模式1 IM v C 的基本摄念M V c 设计模式是M o d e l(模型)一v i e w(视图)一c o n-t r o l l e r(控制器)的简称。最初是在2 0 世纪7 0 年代由施乐(x e-r o x)公司的P a l oA l t o 研究中心提出的。M v c 模式最先被用来在第一代基于视窗的计算机上管理G u I 和用户交互。近些年广
4、琵应用在J 2 E E 平台上,近两年来,随着A s P N E T 技术在大型w E B 应用上的地位得到巩固,M V c 这个最广为人知,最著名的设计模式在N E T 平台上也逐渐开始得到应用,并已成为当今设计交互式应用事实上的标准1 M v c 模式的组成分解成模型、视图、控制器三个部分,允许组成每十部分的备个组件闻松散地耦台。这使得程序开发更加灵活,并且可以减少重复性代码,宴现代码重用。视图把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息。对于相同的信息可以有多个不同的显示形式或视图。控制器是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播
5、,确保用户界面于模型问的对应联系 它接受用户的输人,将输人反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。模型保存由视图显示,由控制器控制的数据 它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I O 操作。竺,霹=i 。竺+时鞭斑月序壮蠢l 一i。b 应#膏a*瘦空k a 牛a 生iI 竺!用P 蕾术+方月一+件田1M、,c 衄件类型的关系和功能模型、视图与控涮器的分离,使得一个模型可以具有多十显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于选些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知
6、所有的视图,导致显示的更新这实际上是一种模型的变化一传播机制2。模型、视图、控制器三者之间的关系和各自的主要功基盒项目:国家自然基金项目(6 0 6 7 3 1 0 B)作者简介t 徐朝晖河南工业大学信息科学与工程学院高级工程师,工学硬士,郑州4 5 0 0 0 1 樊银事,河南工业大学信息科学与工程学院,讲师,工学硬士。郑州1 5 0 0 0 1 4 万方数据M i c r 啪p u t e r A p p l i 强t l o 皿V 0 1 2 3,N o 1 0,2 7研究与设计t 型t t 应属2 7 年第2 3 卷第1 0 期能,如图1 所示。1 2M v c 设计模式的优点M V
7、C 的优点体现在以下几十方面(1)可以为一十模型在运行时同时建立和使用多个视图变化一传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做蓟行为同步3。(2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(3)模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。衙要做的只是在新平台上对视图和控制器进行新的修改。(4)潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。2M v C 设计模式的实现2 1M v c 模式的应用模型A S P N E
8、 T 提供了一个实现M v C 设计模式的“天然”环境。A s P N E T 采用“c o d e b e h i n d”代码来处理显示页面的用L 户交互。即每个a s p x 文件都对应一个。d e b“i l l d”源代码文件。通过。c o d e b e h i n d”实现了逻辑控制代码与脚本语言、H T M L 等代码的分离。A s P N E T 应用系统按照三层w E B 结构划分为表示层(w E B)、业务层(B 1 z)和数据层(D A o)。表示层由w E B 宙体组成,实现视图和控制器的功能业务层包括业务宴体组件和业务逻辑组件 数据层包括数据对象、数据访问组件等由业
9、务层和数据层共同实现模型的功能。通过映射M V c 模式三个部分到N E T 体系结构中的三层结构,构建了基于M V c 模式在A S P N E T 框架下的系统应用模垂(如图2所示),以下以w E B 系统中常见的用户信息查询模块为例,探讨M v c 设计模式在A s P N E T 应用中的实现机制。重务(z)靠捧(n 0)目zM v c 模式在N I I T 中的应用模型五2 视圈的实现在A s P N E T 开发环境中设计视图十分便捷v i e w 由a s p x 页面来实现V i B u a ls t u d i o N E T 在视图设计器的工具箱中提供了数据、w e b 宙
10、体、组件、H T M L 等各种控件同时还提供了用户控件。用户控件是一种直观的可重用的模型,扩展5 名为驺c x。它可以是最简单H T M L 控件、服务器控件或多个控件嵌套构成的w e b 自定义控件。通过以上各种控件,可以像开发w i n d o w B 界面一样以所见即所得的方式进行可视化设计。车系统中视图与备模块中的a$p x 文件相对应,a s p x 文件与系统中的各个用户界面相对应。2 3 控制备的实现A s P N E T 中的代码分离机制使v I e w 中的代码与M o d e l及C o n t r o l l e r 中的代码能够很容易分离每个a 叩x 文件对应了一十后
11、端代码c s(本文以C#语言为例)。通过该后端代码来实现c o n t r 0 1 l e r 的功能。每个p x 页面都有一种机制将页面中的控件所要调用的方法在一个与其分离的类中实现。这些s p x 和a 8 c x 文件后端代码继承了s y B t e m u I w e b P 8 9 e的类执行控制器功能,它包括了各种初始化和控制函数。当加载船p x 页面时将调用P 8 9 e L o a d 事件当a 8 p x 页面从内存中被卸载时将调用P a 驴一u I l l o a d 事件。如果某个控件触发页面以使其被重新加载则将调用c o n t r 0 1 E v e n t 事件。在
12、本系统中。c o n t r o l k r 负责接收、截获并处理用户请求和各种事件。通过调用M o d e I 中的业务逻辑组件来获取各种数据对象根据当前状态和业务操作的结果决定向客户呈现的视图,控制a s 弘页面的显示。以常用的用户数据查询模块中视图U s e r I n f o a s p x 对应的c o n t r o l l e r 为倒该c o n t r o I l e r 实现根据用户输人的个人I D 号查询出的十人基本信息,具体实现如下文tP u b I i cc l a 8 sU 3 e r I n f o IS y 8 t e m w e b U I P a g eP
13、r o t e c t e ds y 3 t e m w e b U I W e b c o n t r o l s D a t a G r i dd g u s e r I n f o I 声明D a t a G d d 控件P r o t e c t e dS y 日t e m W e b U I W e b c o n t f 0 1 s B u t t o nb t n S u b 血l 声明B u t t o n 拉件,提交接钮P r o t e c t e dS y 8 t e m W e b U I W e b C o n t 加1 s T e x t B 0 xt b I D
14、声明T 色x t B 0 x 控件,用户填写敦据U 8 e r I f o B i zu 8 e r I n f 0=n e wU s e r h l f o B i z(),宴例化对应业务逻辑类P r i v a t ev o i dP a g e L o a d(o b j e c t8 e n d e r,S y 日t e m,E v e n-t A 9 8e)I f(Ib P t B a c k)是否为响应客户端回发而加载该页B I n d U”r I n f o()lv o i dB i l I d U 暑e r I n f o()公共绑定数据方法s t r i I l gi d=t
15、 b I D T t x t I 用户输人在t e x t b o x 中的数据D 日t a S e td s u 北r I n f o G t t S i I I g l e U s e r I n f 0(i d),调用业务逻辑类中的方法,由G e t s i n g l e u 8 e r I n f 0()调用D A 0 内方法获取某一用户信息的数据集 万方数据M j c r o m p u t e r A p p l t c a o 哪V o I 2 3,N o 1 0,2 0 0 7研究与设计t 型t 脑应用2 0 0 7 年第2 3 卷第1 0 期d g u B e r I n
16、f o D a t a s o u r=d s T a b I e B o D e f a u l t v i e w I获取数据源d g u s e r I n f 0 D 雠a B i n d()I 绑定控件到指定数据源)v o i db t n S u b m h C l i c k(O b j e c ts e n d e r E v e n t A。g se)提交接钮事件B i n d U 鸵r I n f 0()2 4 模型的实现M o d e I 用来管理应用程序域的行为和数据。在本系统中将业务逻辑、与数据库连接和交互的公共操作封装在单独的类中,用专门的类来处理业务逻辑和数据逻辑
17、,从而提高了代码的重用性。具体实现方式为:在公用的基本类库中,定义D a t a B a s e 类作为公共数据库操作的基本类。在D a t a B a 8 e 类中与数据库连接和交互的公共操作方法的实现代码如下一P u b l i cc l a 8 sD a t a B a 8 e 对数据库操作的基本类P u b l i cD a t B s e tR u n s q l(8 t r i“gs Q L)执行s Q L 语句,返回D a t a s e t 对象S q l c o n n e c t i o n m wS q l C o n n e c t i o n(c o n n s t
18、r),建立S Q L 连接s q l D a t a A d a p t e rd a=n e wS q l D a 协A d a p t e r(S Q L c o n n)#创建S q l D a t 且A d a p t e r 对象并实现连接打开和关用D a t a s e td 8 一n e wD a t a S e t()I 创建D a t a s e t 对象d a F i l l(d s)填充数据到D a t a S e t 中d a D i s p o s e()I 释放s q l C o n n e c t i o n 对象r e t u r nd 8 返回D a t a
19、S e t 对象应用程序在数据访问层(D A 0)中通过引用公用基本类中的方法R u n s q l()来获取数据对象下面的数据层实现所有用户的基本信息,具体方法如下:P u b l i cc 1 鹊3U s e r I n f o D A 0 B a s e O b j e c t 继承所有数据对象的基类B a s e o b j e c tP u b l i cD a t a S e tG e t u s e r h f o()从数据库中获取用户信息s t r i n gs q l=1 e c t-f r D mu 8 e r I n 如”s Q L 查询语句r e t u r nd b
20、R u n S q l(s q l)调用数据库操作的基本类中R u n s q l()方法6 c o n t r o l l e r 不直接对M o d e l 中的数据逻辑进行操作,而是通过业务逻辑获取数据层(D A O)中的数据对象。B i z 层由类(c s)文件组成,其中业务逻辑组件封装了具体的处理逻辑。以下为根据一个用户I D 返回对应的用户信息处理逻辑。P u b l i cc I a$sU 辩r I n f o B i u s e r h f 0 D A 0u s e r I n f o=n e wU 日盯I n f o D A O(),实侧化对应数据逻辑类P u b l i c
21、D a t a S e tG e t S i“g l e U s e r I n f o(s t r i n gm)得到包古用户信息的一个D a t a S e tD a t a S e td 胄=u s e r I n f o G e t u s e r I n f 0()调用D A O 层u 8 e r l n f 0 D A o 类中的G e t u 3 e r I n f o()方法D a t a v i e wd v=n e wD a t a v i e w(),创建D a t a v i e w 对象d v T a b l e 一如T 扎l e s 0 d a 表数据复制到d v
22、中d v R o w F i l t e r 土”u s e r I D 一”+I D 过滤符合I D 用户的纪录,D a t a S e td s l 一(D a t a s e t)d”,强制转换为D a t a S e t 对象r e t u r n(d 8 1)最后,c o n t r o I l e r 中的事件调用M o d e l 中的业务逻辑方法,并且把响应提交到对应的视图组件以产生响应完成对客户端表单数据的描述。3M v c 设计模式在A S P N E T 中的使用特点及不足之处通过上述实现过程进行分析,在A S P N E T 中用M V c 模式开发的应用程序具有如下特
23、点:。(1)减少页面依赖性,提升代码复用。通过页面中的代码分离,可降低系统设计的复杂性,减少页面中的重复代码,如G e t u B e r I n f o 和G e t S i“g l e u 8 e r I n f o 可被其它页面或类使用,排除在多个视图中复制该实现代码。(2)系统结构清晰,增加系统的可扩展性。M v c 模式实现的应用程序具有极其良好的结构和可扩展性,它可以轻松实现以下功能,实现一十模型的多个视图I 采用多个控制器当模型改变时所有视图将自动刷新;所有的控制器将相互独立工作5(3)便于优化系统,提高系统性能由于每次向数据库请求,都要从敦据库装载数据,通过公共的数据访问类和A
24、 s P N E T 的内部机制可以把数据存放在高速缓存中,从而优化整个应用系统的性能,投有代码的分离这是不可能实现的。(下转第4 2 页)万方数据M I c r o c 帆p u k r A p p l l c n“o 珊v 胡2 3,N o 1 0,2 0 0 7技术交流截型电脑应用2 7 年第2 3 卷第1 0 期一P r i o r i t y 2 5 6”=d w o r d l 6 7 申口1 的优先级为6 7完成这一步后,我们在p l a t f o f m b i b 文件中把c o m l 6 5 5 0 d 1 1 文件幂加到系统内核中去。这样我们就完成了这4 十串口的驱动
25、。4 3w I n c E 下的调用”在w i 丑c E 中一个具体的设备名称是由设备文件名前缀和设备交件名索引组成的。这里我们把进4 个串口分别称作C o M l、C o M 2、C o M 3、C o M 4。下面以c o M l 为倒说明申口的调用tH A N D L Eh C o l D C Bd c b#h C o m l=C M n t e F l l e(一T(”C o M l:”),G E N E R I C R E A DG E N E R I C W R I T E,0,N u L L,o P E N E x I s T I N G,o,N u L L);打开设备G e t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MVC 设计 模式 ASPNET 应用 开发 中的 研究 实现
限制150内