admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:app下载安装免费下载app)

维普资讯

第24卷第6期 

2007年11月 

河北工业科技 

Vo1.24,No.6 

Nov.2007 

Hebei Journal of Industrial Science and Technology 

文章编号:1008—1534(2007)06—0321-04 

MVC设计模式在.NET中的应用研究 

郑广成 

(1.江苏大学计算机科学与通信工程学院,江苏镇江 212013;2.连云港职业技术学院信息工程学 

院,江苏连云港222006) 

摘 要:从视图、控制器、模型3个方面分析了MVC设计模式,结合.NET框架提出了基于MVC 

架构的三层体系系统结构的应用方案和扩展MVC模式的思路和方法,并结合MVC三层体系架 

构进行了高校教师绩效考评系统的设计,对设计过程和结果进行了分析,表明了该方案的有效性和 

先进性。 

关键词:框架;设计模式;MVC 

中图分类号:TP311.11 文献标识码:A 

Study of application of MVC design pattern in.NET 

ZHENG Guang—cheng ’ 

(1.School of Computer Science Telecommunication Engineering,Jiangsu University,Zheniiang Jiangsu 212013,China;2.De— 

partment of Information Engineering,Lianyungang Technical College,Lianyungang Jiangsu 222006,China) 

Abstract:This paper first analyzed the MVC design pattern through the three aspects of view,controller and model;Then,it 

proposed the application scheme of three-layer system structure based on MVC and.NET,and proposed a method tO extend 

MVC design pattern;at last,a university teachers performance appraisal system is put forward,and the procedure and result of 

the system are analyzed,which proves it has the advantage of effectiveness and superiority. 

Key words:framework;design pattern;MVC 

目前,比较流行的两大电子商务平台分别是微 

软公司的.NET和SUN公司的J2EE。对于J2EE, 

每个页面的用户交互 ,如何在.NET中应用上述 

的设计模式,一直是许多人感到困扰的一个问题。 

本文结合实际应用需求,讨论了.NET结构中MVC 

设计模式的研究和应用。 

人们已经提出了许多设计模式,而在.NET方面则 

相对较少。J2EE中常用设计模式有MVC(model 

view controller),PAC(presentation abstraction 

contro1)和Forward Receiver,Publisher—Subscriber 

1 MVC设计模式 

MVC适用于大型可扩展的web应用的开发, 

等,都能很好地解决软件应用开发中遇到的问题,达 

到编码规范化和软件模块化,从而获得具有良好复 

用性和扩展性的应用软件。而在.NET的web应 

用中,微软公司推荐使用“code behind”代码来处理 

收稿日期:2007—01-08;修回日期:2007—05—23 

责任编辑:陈书欣 

作者简介:郑广成(1978一),男,河北枣强人,讲师,系统分析师, 

它强制性地将应用程序的输入、处理和输出分开,将 

其划分为模型、视图和控制器3个核心部分,使它们 

各司其职,各自完成不同的任务,其中任何一部分的 

修改都不会影响其他两部分。 

在MVC模式中,模型封装了应用问题的核心 

数据、逻辑关系和业务规则,提供了业务逻辑的处理 

过程。模型一方面被控制器调用,完成问题处理的 

操作过程,另一方面为视图获取显示数据提供了访 

硕士研究生,主要从事数据库技术、信息系统开发、系统分析和计算 

机应用方面的研究。 

维普资讯

河北工业科技 第24卷 

问数据的操作。 

视图是MVC模式下用户看到的并与之交互的 

MVC的处理过程是:对于每一个用户输入的 

请求,首先被控制器接收,并决定由哪个模型来进行 

界面。视图从模型处获得数据,其更新由控制器控 

制。视图不包含任何业务逻辑的处理,它只是作为 

处理,然后模型通过业务处理逻辑处理用户的请求 

并返回数据,最后控制器用相应的视图格式化模型 

种输出数据的方式[2]。 

在MVC模式中,控制器主要起导航的作用,它 

返回的数据,并通过显示页面呈现给用户[3,43。图l 

所示为模型、视图、控制器这3个模块各自的功能以 

根据用户的输入调用相应的模型和视图去完成用户 

及它们之间的相互关系。模型、视图与控制器的分 

的请求。 

离,使得一个模型可以具有多个显示视图。 

— 一

方法调用:一一一 —事件 

图l MVC的功能和关系 

Fig.1 Relation and functions of MVC 

2.NET框架下MVC设计模式的应用方案 

中;也不会知道这些数据具体是如何进行操作 

在基于.NET框架的软件体系结构中,ASP. 

的,这极大地降低了软件体系中各个功能部件的 

NET提供一个很好实现这种经典设计模式的类似 

耦合性,提高了软件的可重用性和可扩展性。 

环境口],开发者通过在ASPx页面中开发用户接口 

在具体设计过程中,模型的设计实现最为重要, 

来实现视图,控制器的功能在逻辑功能代码(.cs)中 

可以借鉴J2EE中的多种设计模式[2]。Value Ob— 

实现,而模型就要通过编写具体的类来封装相应的 

ject值对象设计模式[5]:在J2EE的值对象设计模式 

应用逻辑功能。 

中,用一个数值对象bean来充当EJB对象的数值 

在.NET中实现MVC的设计与较经典的 

映像,当客户机和服务器通信时,就用这个数值 

ASP结构相比有明显的优点。将用户显示(视 

bean来包装实体bean的各个属性,形成一个粗粒 

图)从动作(控制器)中分离出来,提高了代码的 

度的对象[6],用这个对象作为参数来进行信息交换。 

重用性。在经典的ASP文件中,既包含有ASP 

而在.NET中,可以采用类似的模式创建这样一种 

语言,又包含有相应的脚本语言,显然不合适;将 

类:其针对数据库中的每张表或者每一次用户交互 

数据(模型)从对其操作的动作(控制器)分离出 

操作所创建的,它只包含有属性。 

来,又可以设计一个与后台的数据操作和数据存 

具体实现时,可以采用目前流行的三层体系架 

储无关的系统。如果设计正确的话,一个基于 

构[73。三层架构划分的目的是为了使系统的层次清 

MVC设计模式的系统将不会知道、也不会关心 

晰,易于设计、维护、伸缩和重用。三层体系架构与 

提供给模型组件的数据是存储在SQL Server或 

MVC传统的两层架构相互结合,成为当前Web程 

是Oracle数据库中,还是存储在一组XML文档 

序开发的主要模式,见图2。 

维普资讯

第6期 郑广成 MVC设计模式在.NET中的应用研究 323 

用户浏 \\J墒铂兰 二I寒 —] :j模型 

览 

器 < 视图 

 l广 

表示层 应用层 数据层 

图2 MVC与三层架构关系图 

Fig.2 Relationship between MVC and three layer 

MVC模式通过ASP.NET编写,具有极其良 

好的可扩展性。它可以轻松实现以下功能[6]: 

1)实现一个模型的多个视图; 

2)采用多个控制器; 

3)当模型改变时,所有视图将自动刷新; 

4)所有的控制器将相互独立工作。 

这就是MVC模式的好处,只需在以前的程序 

上稍作修改或增加新的类,即可轻松增加许多程序 

功能。以前开发的许多类可以重用,而程序结构根 

本不再需要改变,各类之间相互独立,便于团体开 

发,提高开发效率。图3讨论如何实现1个模型、2 

个视图和1个控制器的程序。其中模型类及视图类 

根本不需要改变,与前面的完全一样,这就是面向对 

象编程的好处。对于控制器中的类,只需要增加另 

个视图,并与模型发生关联即可。该模式下视图、 

控制器、模型三者之间的示意图见图3。同样也可 

以实现其他形式的MVC。例如:1个模型、2个视 

图和2个控制器。从上面可以看出,通过MVC模 

式实现的应用程序具有极其良好的可扩展性,是 

ASP.NET面向对象编程的未来方向n]。 

图3视图、控制器、模型三者之间 

的关系示意图 

Fig.3 Relation schematic diagram of 

view,controller,model 

3 MVC模式在.NET中的应用实例 

基于Web的高校教师绩效考评系统,其功能 

模块主要包括:查分、教学评价、科研评价、管理评 

价、综合模糊考评、后台系统管理等6个模块。登录 

打分查分:分为教师、学生、二级学院、教务处4级登 

录,分别具有不同权限,面对不同的页面视图;个人、 

学生、同行、领导等4个角色对教师分项打分和个 

人、集体查分;教学考评:有教务处或二级教学单 

位给予教学实绩考评分数,包括工作量、任课效果、 

奖励、结果等;科研评价:根据教师个人实际的学术 

科研成果给出相应的分数,包括论文、教材、课题、成 

果、专利等;管理评价:对担任管理方面的工作给予 

评价,包括行政职务、学生管理、学术兼职、荣誉称号 

等;后台管理主要实现对考核项目、综合考评结果、 

数据导入/导出、人员身份验证、安全、数据维护、参 

数设置等的管理。 

根据功能模块的分析,设计出相应的三层体系 

结构[7,8],见图4。 

客户层在Web层中,引入控制器对象,这是 

由.NET自带的模块,用.es(例如:Controller.es, 

Httpcature.cs)文件来实现,负责接收客户端的 

GET和POST请求。与J2EE中由Servlet集中控 

制的方式不同,.NET采用了分散控制的方式,这 

种方式有利于建立起控制器与页面的对应映射方 

式,增加了代码的可读性。使用该控制器作为处理 

请求的最初联系点,该控制器管理着请求的处理, 

包括调用安全服务,比如:验证和授权、委托业务处 

理、管理合适的视图选择、错误处理等。控制器有助 

于减少嵌入在ASPx中的C#代码的数量。应用逻 

辑层在Web层中,完成商业逻辑的实现,也已经将 

模型和控制器进行了有效分离,接着建立相应的数 

据模型。与J2EE中的JavaBean相对应,建立了2 

种类:用于数据的操作类和用于获取数据的属性 

类,可以将这2种类进行封装,放到统一的dll文 

件中,作为动态数据链接库,以便高层的程序员调 

用;这种建立数据模型的方式有利于提高代码的可 

重用性,也有利于整个系统的扩展。 

将MVC与.NET结合的最主要的难点也在于 

应用逻辑层的构建[93。在J2EE中,逻辑层可以直 

接通过EJB来获得,但是在.NET中,就不得不自 

己来构建。主要过程就是必须根据程序所要求的功 

能,建立与之对应的属性类(实体Bean)和操作类 

(会话Bean),而其中的每一个属性类和操作类都有 

数据库中的一个存储过程与之相对应,所以建立一 

个功能强大的应用逻辑层是非常复杂和繁琐的,但 

是考虑到构建它所带来的优点,付出时间和精力来 

开发这样的一个应用逻辑层是值得的。数据库层的 

维普资讯

324 第24卷 

登录打分查分 管理评价 教学评价 科研评价 后台系统管理 综合模糊考评 ASPx:页面 

— 

一 

dll文件:动态数据链接库 I 

I/I登录打分查分 l… I模糊评价 ‘

< 

、I/}登录打分查分 J… 

性类 

模糊评价 I\ 

\\ I 系统管理 l//\\ 系统管理 f// 

、\

一一

/、、\ 

—一一

/ 应用逻辑层 

..

l 丌一。 

数据库服务器 _J 裂琚库层 

图4 基于MVC架构的三层体系系统结构 

Fig.4 Three-layer system structure based on MVC 

设计严格遵循数据库逻辑结构设计中的第三范式, 

设计模式在.NET中三层架构的应用方案以及 

确保较小的数据冗余度,并保存了所有对数据库的 

ASP.NET对MVC模式的扩展;分析了.NET环 

操作,用存储过程来实现,以供高层开发者调用 如]。 

境下实现基于MVC的高校教师绩效考评系统的设 

计,并对系统设计结果进行分析,指出了优越性和不 

4结果分析 

足。 

将.NET中应用基于MVC架构的三层体系系 

参考文献: 

统结构进行软件系统开发,使得整个软件开发呈现 

[1]BELINASO M,HOFMAN K.ASP.NET Web站点高级编程 

出系统性,成功实现了软件开发的分工。因为按照 

[M].康博译.北京;清华大学出版社,2002. 

这种层次设计的思想,可以有专门的页面设计人员 

E2]张丽君,齐建卓,吴宏波.基于MVC模式的Struts框架在Web 

负责客户层的开发;专门的逻辑设计人员来负责应 

系统开发中的应用[J].内蒙古大学学报,2005,36(1):36—39. 

用逻辑层的开发;而且由于控制器与页面的分离,使 

[3]GAMMA E,HELM R,JOHNSON R,et a1.设计模式:可复用 

得html代码中将不包含脚本语言,这进一步提高了 

面向对象软件的基础[M].李英军,马晓显,蔡敏,等译.北 

京:机械工业出版社,2000. 

程序执行速度。在系统实现的过程中,还可以根据 

[4]林舒萍,罗键.设计模式的应用研究[J].计算机工程与设计, 

实际要求,构建适合的模型,进行模型移植和复用, 

2005,26(11):2 980—2 983. 

例如:可以将模型编成动态链接库(dl1),这就使得 

[5]柯茄,张忠能.Struts在开发B/S结构系统中的应用[J].计 

整个软件开发的过程更具灵活性,必要时还可以进 

算机工程,2004,30(12):48-51. 

行模型扩展。同时,也看到了MVC增加系统结构 

E6]甄镭..NET与设计模式[M].北京;电子工业出版社,2005. 

[7]涂永忠,邵晨曦,蔡维德,等.影子模式:一种新的用于测试的设 

和实现的复杂性,访问模型数据库的低效性,该模式 

计模式[J].计算机研究与发展,2004,41(1):34—40. 

更适合大型信息系统开发,不利于小型系统设计等 

[8]朱翠苗,林庆,郑广成.基于.NET Remoting的分布式数据 

现实情况。 

库查询方案[J].河北工业科技,2007,24(3):170—173. 

C9]黎永良,崔杜武.MVC设计模式的改进与应用[J].计算机工 

程,2005,31(9):96—98. 

5 结 语 

[1O]宋伟,杨振峰,杨丽华,等.基于J2EE和MVC模式的Web 

介绍了MVC设计模式的原理;提出了MVC 

应用程序开发方法[J].河北工业科技,2005,22(3):189—194. 


本文标签: 模型 控制器 视图 数据