admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:pg3)

维普资讯

第15卷第2期 

Vo1.15 No.2 

北京电子科技学院学报 

Journal of BeiJing Electronic Science and Technology Institute 

2007年6月 

Jun.2007 

MVC设计模式在.NET三层结构开发中的研究和实现 

徐朝辉,樊银亭 

(河南工业大学信息科学与工程学院,河南省郑州450001) 

摘要:为了克服当前应用.NET开发技术的种种弊端,本文首先介绍了MVC设计模式的概念及WEB 

三层结构技术,接着提出了MVC设计模式在.NET三层结构开发中的应用模型并讨论了该应用模型在. 

NET环境下的实现过程,最后对MVC在.NET下的使用特点及不足之处进行了分析。 

关键词:MVC;设计模式;三层结构;ASP.NET 

中图分类号:TP393 文献标识码:A 文章编号:1672—464X(2007)02-0070-04 

Research and Implementation of MVC Design Pattern in Development of 

NET with Three Tier Structure 

XU 舯 ,FAN啊n-_tiI.g 

l School of Information ciSence and Engineering,Henan Universily of Technology,Zhengzhou 

450001,China) 

Abstract:To overcome the disadvantages of current application development technology of.NET.This paper 

ifrstly introduces the concept of the MVC design pattem and three-tie structure technology,secondly,n a

application model of MVC in.net wih tthree tie sU'ucture is put forward and realizing of the model in.NET 

environment are discussed;finally.the characteristics and disadvantages of he appltication about MVC in.NET 

ale analyzed. 

Keywords:MVC;desin pattgem;three tier slructure;ASP.NET 

0引言 

ASP.NET是微软最新推出的新型体系结构.NET框架 

(控制器)的简称。最初是在20世纪70年代由施乐(Xerox) 

公司的Palo Alto研究中心提出的。MVC模式最先被用来在 

第一代基于视窗的计算机上管理GUI和用户交互。近些年 

广泛应用在J2EE平台上,近两年来,随着ASP.NET技术在 

大型WEB应用上的地位得到巩固.MVC这个最广为人知、 

最著名的设计模式在.NET平台上也逐渐开始得到应用,并 

已成为当今设计交互式应用事实上的标准【1】。 

MVC模式的组成分解成模型、视图、控制器三个部分, 

允许组成每个部分的各个组件间松散地耦合。这使得程序 

开发更加灵活.并且可以减少重复性代码。实现代码重用。 

视图把表示模型数据及逻辑关系和状态的信息以特定 

形式展示给用户。它从模型获得显示信息,对于相同的信息 

可以有多个不同的显示形式或视图。 

的一部分,它为构建新一代网络分布式应用提供了强有力 

的支持。与以前的Web开发模型相比.ASP.NET提供了许 

多如简易性、安全性、可管理性等重要优点。而且与基于过 

程的Web页面技术相比,面向对象技术在ASP.NET中得到 

了完全实现:三层结构的开发技术在.NET中逐步得到应 

用,并发挥了极大的优越性.但也有不足之处,由于Web页 

面的特殊性.三层结构逻辑的划分并没有使代码在物理上 

完全实现分离.反而使设计的系统结构复杂、用户难以理 

解.应用上缺乏可复用性..NET技术结合MVC设计模式能 

够很好地解决上述问题。 

1MVC设计模式和三层结构 

1.1 MVC设计模式 

MVC设计模式是Model(模型)一View(视图)-Controller 

收稿日期:2007—05—31 

基金项目:国家自然基金项目(60673108) 

控制器是处理用户与软件的交互操作的.其职责是控 

制提供模型中任何变化的传播,确保用户界面于模型间的 

对应联系;它接受用户的输入,将输入反馈给模型,进而实 

现对模型的计算控制.是使模型和视图协调工作的部件。 

维普资讯

第15卷 徐朝辉, ̄:MVC设计模式在.NET三层结构开发中的研究和实现 .71. 

—————— 

万i2= 调用 一………一 件 

图1 MVC组件类型的关系和功能 

模型保存由视图显示,由控制器控制的数据;它封装了 

问题的核心数据、逻辑和功能的计算关系.它独立于具体的 

界面表达和I/O操作。 

模型、视图与控制器的分离.使得一个模型可以具有多 

个显示视图。如果用户通过某个视图的控制器改变了模型 

的数据.所有其它依赖于这些数据的视图都应反映到这些 

变化。因此.无论何时发生了何种数据变化。控制器都会将 

变化通知所有的视图.导致显示的更新。这实际上是一种模 

型的变化一传播机制[21。模型、视图、控制器三者之间的关系 

和各自的主要功能。如图1所示。 

1.2三层结构 

数据库应用系统的开发,经历了从早期的单机模式。到 

后来较为流行的客户机,服务器模式.发展到今天较流行的 

三层结构模式。所谓三层结构.即将整个处理分成表示层、 

业务层、数据层。客户层提供应用程序的用户界面。负责与 

用户交互。它根据用户的操作调用相应的业务逻辑。不能直 

接访问后台数据库;业务逻辑部分是应用系统的关键。它负 

责处理用户请求.进行具体的运算和决定程序的流程.并且 

把处理的结果返回给表示层;服务器层仍然提供的是数据 

支持.维护和更新应用程序的数据.这种结构的目的是缓和 

客户机或数据库服务器上的代码膨胀.集中管理业务逻辑 

更灵活的使用数据库.三层架构的提出.使得系统层次划发 

清晰,在有一定规模的项目实施中,易于设计、维护、功能延 

伸和组件的重用.有利于开发人员有效的组织和分工协作。 

尽管三层结构较以往的二层结构有了很大的改进.但 

是仍然存在一些不足:复杂性、应用缺乏可复用性和可移植 

性等等。 

现在流行的典型三层结构是B/S系统.即浏览器/web 

服务器,数据库服务器。在开发B/S系统时。所有的web页 

面既含有表示层的HTML/XML代码、又含有业务逻辑层的 

逻辑控制代码。逻辑上的分离与物理上的结合增加了系统 

结构的复杂性。而且不加选择地随意运用,会导致WEB页 

面内嵌人大量的脚本片段,不利于流程的控制.从根本上 

讲。将导致角色定义不清和职责分配不明。给项目管理带来 

不必要的麻烦。即使可以开发出的这样系统。但由于难以理 

解而缺乏可复用性。MVC设计模式是采用两层结构设计, 

而三层结构是对两层结构的延伸.所以可以将 

MVC应用于三层结构的开发中.以发挥二者的优 

势.因此本文提出了MVC设计模式在.NET三层 

结构中的应用模型。 

1.3 MVC设计模式的应用模型 

NET提供了一个实现MVC设计模式的“天 

然”环境。.NET采用“code—behind”代码来处理显 

示页面的用户交互。即每个aspx文件都对应一个 

code—behind”源代码文件。通过“code—behind”实 

现了逻辑控制代码与脚本语言、HTML等代码的 

分离。.NET应用系统按照三层WEB结构划分为 

表示层(WEB)、业务层(BIZ)和数据层(DAO)。表示层由 

EWB窗体组成。实现视图和控制器的功能;业务层包括业 

务实体组件和业务逻辑组件;数据层包括数据对象、数据访 

问组件等,由业务层和数据层共同实现模型的功能。通过映 

射MVC模式三个部分到.NET体系结构中的三层结构.构 

建了基于MVC模式在.NET框架下的系统应用模型(如图2 

所示),以下以WEB系统中常见的用户信息查询模块为例, 

探讨MVC设计模式在.NET应用中的实现机制。 

Model(模型) 

浏 业务实体组件数槲对缘 

览  ̄ii 业务逻辑组件数摊 『u]组件 

器 

—— 

朋 表示 (WEB) 业务 (BIZ) 数 (DAO) 

图2 MVC模式在.NET中的应用模型 

2 MVC设计模式的实现 

2.1视图的实现 

在.NET开发环境中设计视图十分便捷,View由aspx 

页面来实现。Visual Studio.NET在视图设计器的工具箱中提 

供了数据、 b窗体、组件、HTML等各种控件,同时还提供 

了用户控件。用户控件是一种直观的可重用的模型。扩展名 

为.aSCX。它可以是最简单HTML控件、服务器控件或多个控 

件嵌套构成的 b自定义控件[4t。通过以上各种控件,可以 

像开发Windows界面一样以所见即所得的方式进行可视化 

设计。本系统中视图与各模块中的aspx文件相对应,aspx 

文件与系统中的各个用户界面相对应。 

2.2控制器的实现 

NET中的代码分离机制使View中的代码与Model及 

Controller中的代码能够很容易分离。每个aspx文件对应了 

个后端代码.cs(本文以C#语言为例)。通过该后端代码 

来实现Controller的功能。每个aspx页面都有一种机制,将 

页面中的控件所要调用的方法在一个与其分离的类中实 

现。这些aspx和瑚c】【.文件后端代码继承了System.UI.Web. 

Page的类执行控制器功能.它包括了各种初始化和控制函 

维普资讯

72・ 北京电子科技学院学报 2007征 

数。当加载aspx页面时将调用Page—Load事件,当aspx页 DataBase类中与数据库连接和交互的公共操作方法的实现 

面从内存中被卸载时将调用Page—Unload事件。如果某个 

控件触发页面以使其被重新加载则将调用ControlEvent事 

件。在本系统中,Controller负责接收、截获并处理用户请求 

和各种事件。通过调用Model中的业务逻辑组件来获取各 

代码如下: 

Public class DataBase 

{ 

//对数据库操作的基本类 

Public DataSet RunSql(string SQL)//执行SQL语句,返回DataSet 

对象 

{ 

种数据对象,根据当前状态和业务操作的结果决定向客户 

呈现的视图,控制aspx页面的显示。以常用的用户数据查 

询模块中视图UserInfo.aspx对应的Controller为例,该 

sqlconnection=new sqlcohnection(connstr);//建立SQL连 

接 

Controller实现根据用户输入的个人ID号查询出的个人基 

本信息,具体实现如下文: 

Public class Userlnfo:System.Web.UI.Page 

{ 

Protected System.Web.UI.WebControls.DataGrid dgUserlnfo; 

//声明DataGrid控件 

Protected Sy ̄em.Web.UI.WebControls.Button btnSubmit;|商 

明Button控件,提交按钮 

Protected Sy ̄em.Web.UI.WebControls.TextBox tbID;|庐呗 

TextBox控件.用户填写ID数据 

UserlnfoBiz userlnfo=new UserhffoBiz 0;//实例化对应业务逻 

辑类 

Private void Page

_

Load(object sender,System,EventArgs e) 

{ 

I !IsPostBack1//是否为响应客户端回发而加载该页 

{ 

BindUserlnfo0; 

】 

Void BindUserlnfo0//公共绑定数据方法 

{ 

Stirng id=tbID.Text;//用户输入在textbox中的数据 

DataSet ds=userlnfo.GetSingleUserlnfo(id);//调用业务逻辑 

类中的方法,由GetSingleUserlnfo0调用DAO内方法获取某一用户 

信息的数据集 

dgUserlnfo.DataSource=ds.Tables[0].DefaultView;//获取数 

据源 

dgUsed ̄o.DataBindO;//绑定控件到指定数据源 

】 

void btnSubmit

Click(Object sender,EventArgs e)//提交按钮 

事件 

{ 

BindUserlnfo0; 

】 

2.3模型的实现 

Model用来管理应用程序域的行为和数据。在本系统 

中将业务逻辑、与数据库连接和交互的公共操作封装在单 

独的类中,用专门的类来处理业务逻辑和数据逻辑,从而提 

高了代码的重用性。具体实现方式为:在公用的基本类库 

中,定义DataBase类作为公共数据库操作的基本类。在 

SqlDataAdapter da=new SqlDataAdapter(SQL.Conn);// ̄0建 

SqlDataAdapterg ̄象并实现连接打开和关闭 

DataSet ds=new DataSet0;// ̄r]建DataSet对象 

da.Fill(ds);//填充数据到DataSet中 

da.Dispose0;//释放SqlConnection对象 

return ds;//返回DataSet对象 

】 

】 

应用程序在数据访问层(DAO)中通过引用公用基本类 

中的方法RunSql O来获取数据对象,下面的数据层返回所 

有用户的基本信息,具体方法如下: 

Public class UserlnfoDAO:BaseObjecff/ ̄承所有数据对象的基类 

BaseObject 

{ 

Public DataSet GetUserlnfo 0//从数据库中获取用户信息 

{ 

Stirng sql=”select from Userlnfo”://SQL查询语句 

retunr db.RunSql(sq1);//调用数据库操作的基本类中RunSql 0 

方法 

】 

】 

Controller不直接对Model中的数据进行操作,而是通 

过业务逻辑获取数据层(DAO)中的数据对象。Biz层由类(. 

es)文件组成,其中业务逻辑组件封装了具体的处理逻辑。 

该业务逻辑先取得数据层中的所有用户信息,然后根据一 

个用户ID过滤其对应的用户信息。 

Public class UserlnfoBiz 

{ 

UserlnfoDAO userlnfo=new UserlnfoDAO0;//实例化对应数据 

逻辑类 

Public DataSet GetSingleUserlnfo(string ID1//得到包含用户信息 

的一个DataSet 

{ 

DataSet ds=userlnfo.GetUserlnfo 0; //调用DAO层 

UserlnfoDAO类中的GetUserlnfo()3Y法 

DataView dr=new DataView0;//创建DataView对象 

dv.Table=ds.Tables[0];//ds表数据复制到dv中 

dv.RowFiher=”userID=”+ID;//过滤符合ID用户的纪录. 

DataSet dsl=(DataSet)dv;//强制转换为DataSet对象 

return(ds1) 

) 

维普资讯

第15卷 

) 

徐朝辉,樊银亭:MVC设计模式在.NET三层结构开发中的研究和实现 .73. 

比重比较大.不如直接访问方便:另一方面,代码的分离增 

最后.Controller中的事件调用Model中的业务逻辑方 

加了代码的维护成本,如果有涉及j者的变化时,在不同的 

文件中修改显然比在同一个文件修改花费的代价大[61。因 

此.在设计系统前权衡这样的代价是必不可少的,一般而 

法,并且把响应提交到对应的视图组件以产生响应,完成对 

客户端表单数据的描述。 

3 MVC设计模式在.NET中的使用特点及不足之处 

通过上述实现过程进行分析 在_NET中用MVc模式 

开发的应用程序具有如下特点: 

(1)减少页面依赖性,提升代码复用。通过页面中的代码 

分离,可降低系统设计的复杂性,减少页面中的重复代码, 

言,小型应用系统和需求比较明确的系统,这样的代价可以 

忽略不计。 

4结束语 

本文针对开发.NET三层结构应用系统提出了MVC设 

计模式在,NET平台上的应用模型,讨论了该模型中MVC 

模块划分和WEB三层结构的划分之间的关系.并给出了每 

如GetUserInfo和GetSingleUserInfo可被其它页面或类使 

用。排除在多个视图中复制该实现代码。 

f2)系统结构清晰,增加系统的可扩展性。MVC模式实 

现的应用程序具有极其良好的结构和可扩展性,它可以轻 

松实现以下功能。实现一个模型的多个视图;采用多个控制 

器:当模型改变时,所有视图将自动刷新;所有的控制器将 

相互独立工作嗍 

f3)便于优化系统,提高系统性能。由于每次向数据库请 

模块的具体实现。利用该应用模型设计的系统具有结构 

稳定、易于复用、易于维护、易于伸缩等多种优点。由此可见 

应用MVC设计模式开发.NET应用系统具有十分现实的意 

义 

参考文献: 

【1】杨寅华.两类Web服务器数据接口的比较及基于MVC下的实 

求,都要从数据库装载数据.通过公共的数据访问类和 

ASP.NET的内部机制可以把数据存放在高速缓存中,从而 

优化整个应用系统的性能.没有代码的分离这是不可能实 

现的。 

现[J].计算机应用与软件,2006,(2):69—71. 

【2】孙奥,黄燕,吴平.MVC模式在.NET框架中的应用与实现【JJ_科技 

广场,2006,(1):69—71. 

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

2005,(9):96-98. 

(4)系统模型独立,提高系统的可测性。模型独立于视 

图,既可以在.NET环境之外用第三方工具测试模型,也可 

以通过编写测试脚本实现自动化测试,从而大大提高测试 

的有效性和效率。 

【4】李颖,乇丽芳,等.截取过滤器模式对MVC体系结构的优化[JJ. 

微电子学与计算机,2005,(1):85—87. 

【5 J易可可.陈志刚.基于MVC模式的Web OA系统设计与研究『J Jl 

计算机工程与应用,2005,(4):112—115. 

[6]邹鹏,尚维等.基于MVC模式的客户关系管理系统设计[JJ_计算 

机应用研究,2005,(2):21—23. 

(5)便于团队开发,提高开发效率。视图、控制器和模型 

的分离,使得容易在开发人员中分工任务,提高专业化开发 

技能和加快开发进度; 

与任何事务一样,在.NET中使用MVC模式也有一些 

作者简介: 

不足之处,一方面,控制器不直接访问数据层,增加了代码 

的复杂性,对于一些简单的业务逻辑附加的额外代码所占 

徐朝辉(1970一),男,工学硕士,计算机应用技术专业高级工程师。 

研究方向:软件工程、计算机网络、数据挖掘。 

(_k+Lg 69页) 

[19】陈燕敏,王晓龙,刘远超,等.一种基于文章主题和内容的自动 

摘要方法.维普咨询1002—8331一(2004)33—001 1-04. 

作者简介: 

邱鹃(1983一),燕山大学信息工程学院通信与信息系统硕士研究 

生。主要研究方向:文本挖掘,数据挖掘。 


本文标签: 数据 应用 视图 模型 系统