MVC模式在.NET框架中的应用与实现

  引言

.NET开发平台是由微软公司近年来推出的新型体系结构,在Microsoft .NET框架下,建立大型的Web应用和Web服务变得更加便捷。如何在.NET框架下构建健壮的、易维护、可复用的Web应用和服务,下面以肉仔鸡肠胃道微生物信息分析(GMIAS)系统为例介绍了具体的解决方案。

系统采用了MVC设计模式,很好的实现了控制逻辑、业务逻辑、数据逻辑和显示a

人们在发现问题并寻找问题的解决方案的过程当中,经常会遇到一些问题重复出现并不断改变面孔,而这些问题的背后往往有着共同的本质,这些“共同的本质”就是模式的概念。在当今面向对象的软件开发过程当中,人们经常会把软件的开发过程分解成若干个不同的设计模式,从而提高代码复用程度、降低开发复杂度、提高项目开发效率。所以设计模式就是一系列的对象以及对象间的关系,并据此对某一特定的软件设计问题提供一个稳定的、可扩展的方案。

1.2          MVC设计模式

MVC设计模式是Model(模型)-View(视图)-Controller(控制器)的简称。最初是在20世纪70年代由施乐(Xerox)Palo Alto研究中心(PARC , Palo Alto Research Center)被提出的。MVC模式最先被用来在第一代基于视窗的计算机上管理GUI和用户交互[2]。近些年开始被推荐应用在J2EE平台上。近两年来,随着ASP.NET技术在大型Web应用上的地位得到巩固,MVC这个最为广为人知、最著名的设计模式在.NET平台上也逐渐开始得到应用[2],并已成为当今设计交互式应用事实上的标准[1]。

MVC模式通过区分各个层,允许组成每个层的各个组件间松散地耦合。这使得程序开发更加灵活,并且可以减少重复性代码,实现代码重用。

模型组件表示应用程序的数据,并包括这些数据的访问和修改的业务规则,它表达了程序所使用的数据和生成数据的运行状态。它独立于用户界面和I/O操作。

视图组件是用户看到并与之交互的界面,主要负责从模型访问数据指定如何表示数据,并当模型改变时,维护表示的一致性。视图也负责把用户动作传递给控制器。

控制组件定义应用程序的行为,解释用户动作,并把它映射为模型执行的过程。它负责模型和视图之间的交互,控制对用户输入的响应方式和流程。它主要包括两个动作:一方面将用户的请求分发到相应的模型,另一方面将模型的改变及时反映在视图上。

2   MVC模式在.NET框架下的实现

2.1     MVC模式的应用模型

.NET 采用“code-behind”代码来处理显示页面的用户交互。即每个aspx文件都对应一个“code-behind”源代码文件。通过“code-behind”实现了逻辑控制代码与脚本语言、HTML等代码的分离。本系统按照三层Web结构划分为表示层(Web)、业务层(Biz)和数据层(DAO)。表示层由Web窗体组成,实现View和Controller的功能;业务层包括业务实体组件和业务逻辑组件;数据层包括数据对象、数据访问组件等,由业务层和数据层共同实现Model的功能。通过映射MVC模式三个部分到.NET体系结构中的相应的组件,构建了基于MVC模式在.NET框架下的肉仔鸡肠胃道微生物信息分析系统应用模型。如图二所示。

2.2     View的实现

在.NET开发环境中设计视图十分便捷,View由aspx文件来实现。Visual Studio .NET在视图设计器的工具箱中提供了数据、Web窗体、组件、HTML等各种控件,同时还为我们提供了用户控件。用户控件是一种直观的可重用的模型,扩展名为.ascx。它可以是最简单HTML控件、服务器控件或多个控件嵌套构成的Web自定义控件。通过以上各种控件,我们可以像开发Windows界面一样方便的通过所见即所得的方式进行可视化设计。本系统中视图与各模块中的aspx文件相对应,aspx文件与系统中的各个用户界面相对应。

2.3     Controller的实现

.NET中的代码分离机制使View中的代码与Model及Controller中的代码能够很容易的分离。每个aspx对应了一个后端代码aspx.cs,通过aspx.cs来实现Controller的功能。每个ASP.NET页面都有一种机制,将页面中的控件所要调用的方法在一个与其分离的类中实现。这些 aspx 和 ascx 文件后端代码继承了System.UI.Web.Page的类执行控制器功能,它包括了各种初始化和控制函数。当加载aspx页面时将调用Page_Load事件,当aspx页面从内存中被卸载时将调用Page_Unload事件。如果某个控件触发页面以使其被重新加载则将调用Control Event事件。在本系统中, Controller负责接收、截取并处理用户请求、处理各种事件,通过调用Model中的业务逻辑组件来对获取各种数据对象,根据当前状态和业务操作的结果决定向客户呈现的视图,控制aspx页面的显示。以肉仔鸡肠胃道微生物信息分析系统中基本试验数据管理模块中视图ExpInfo.aspx对应的Controller为例,具体实现如下文:

public class ExpInfo: System.Web.UI.Page

{

protected System.Web.UI.WebControls.DataGrid dgExpInfoList; // 声明DataGrid控件

ExpInfoBiz expInfo = new ExpInfoBiz();     //实例化对应业务逻辑类

private void Page_Load(object sender, System.EventArgs e)

{

if(!IsPostBack)     //是否为响应客户端回发而加载该页

{

this.BindDataExpInfo();

}

}

public void BindDataExpInfo()     //绑定数据方法

{

DataSet Ds = new DataSet(); //定义DataSet对象

Ds = expInfo.GetExpInfo();   //调用业务逻辑类中的方法,由GetExpInfo()调用DAO内方法获取试验信息的数据集

this. dgExpInfoList.DataSource = Ds.Tables[0].DefaultView; //获取数据源

this. dgExpInfoList.DataBind();//绑定控件到指定数据源

}

}

2.4     Model的实现

Model用来管理应用程序域的行为和数据。在本系统中将业务逻辑、与数据库连接和交互的公共操作封装在单独的类中,用专门的类来处理业务逻辑和数据逻辑,提高了代码的重用性。具体实现方式为:在公用的基本类库中,定义DataBase类作为数据库操作的基本类。在DataBase类中与数据库连接和交互的公共操作的方法之一的实现代码如下文:

public class DataBase    // 对数据库操作的基本类

{

public DataSet RunProc(string SQL) // 执行SQL语句,返回DataSet对象

{

SqlConnection = new SqlConnection(ConnStr); // 建立SQL连接

SqlDataAdapter Da = new SqlDataAdapter(SQL,Conn); // 创建SqlDataAdapter对象并实现连接的打开和关闭

DataSet Ds = new DataSet();// 创建DataSet对象

Da.Fill(Ds);           // 填充数据到DataSet中

Da.Dispose();      // 释放SqlConnection对象

return Ds;      // 返回DataSet对象

}

}

应用程序在DAO中引用公用基本类中的方法RunProc()来获取数据对象:

public class ExpInfoDao:BaseObjectDTO // 继承所有数据对象的基类BaseObjectDTO

{

public DataSet GetExpInfo()   // 从数据库中获取试验信息

{

string sql ="select * from ExpInfo"; //SQL查询语句

return DB.RunProc(sql);         //调用数据库操作的基本类中RunProc()方法

}

}

Controller不直接对Model中的数据逻辑进行操作,而是通过业务逻辑获取DAO层中的数据对象。Biz层由.cs文件组成,其中业务逻辑组件封装了具体的处理逻辑。以下为最简单的返回一个DataSet的处理逻辑。

public class ExpInfoBiz

{

ExpInfoDAO expInfo = new ExpInfoDAO();     //实例化对应数据逻辑类

public DataSet GetExpInfo()              // 得到包含试验信息的一个DataSet

{

return expInfo.GetExpInfo();       //调用DAO层ExpInfoDAO类中的GetExpInfo()方法

}

}

最后,Controller中的事件调用业务逻辑方法,并且把响应提交到对应的视图组件以产生响应,完成客户端表单数据的描述。

0           结束语

本文基于MVC模式,设计和开发了一个肉仔鸡肠胃道微生物信息分析系统。采用了当今开发大型Web应用的两大平台之一Microsoft .NET,用Visual C#.NET设计完成。系统实现了应用程序模块化,是一个具有良好安全性、可扩展、易维护的交互式系统。所设计系统满足了用户需求,增强了试验数据分析和管理的自动化程度,辅助了用户对“肉仔鸡胃肠道微生物与饲料营养的相互作用及其对肉品质的调控机理”研究的进一步深化。由此可见应用MVC设计模式于.NET平台实现Web应用开发具有十分现实的意义。

参考文献

[1]杨晓江,王继成. .NET Web应用的MVC设计[J].计算机工程与应用.2003.26

[2][美]James Turner ,Kevin Bedell 著.Struts KICK START[M]. 北京:电子工业出版社.2004

[3]庞开放,李龙澍.基于.NET框架的Web应用与实现[J].微机发展.第15卷 第3期.2005年3月

[4][阿根廷]Daniel Cazzulino 著.Beginning C# Web Applications with Visual Studio .NET[M].北京:清华大学出版社,2003

[5] Eiiti, Hanyuda ,MVC dance: Connecting software development and corporeality from agile process and pattern language perspectives,Proceedings - Second International Conference on Creating, Connecting and Collaborating Through Computing, Proceedings - Second International Conference on Creating, Connecting and Collaborating through Computing, 2004, p 174

[6]张计龙,张成洪,张凯等,基于改进MVC的高校人事管理系统,计算机工程[J],2004年第30卷第8期

转载于:https://www.cnblogs.com/zhangzheny/archive/2007/01/08/614517.html

MVC模式在.NET框架中的应用与实现 (转)相关推荐

  1. MVC模式在.NET框架中的应用与实现

    0           引言 ­ .NET开发平台是由微软公司近年来推出的新型体系结构,在Microsoft .NET框架下,建立大型的Web应用和Web服务变得更加便捷.如何在.NET框架下构建健壮 ...

  2. Android MVC模式在android系统中的体现

    在前一段时间学习android中总是听到mvc模式,但是却不是很清楚,不过现在有了初步的了解,那么mvc的体现如下: mvc应该是M.V.C,就是指数据模型,视图,控制器: 1) 模型层(Model) ...

  3. 模版方法模式在Spring框架中的应用

  4. Java Web学习总结(30)——Service层在MVC框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  5. 基于MVC模式Struts框架研究

    不做web开发多年了, 可偶尔去面试的时候, 还是会问道Struts实现mvc的细节. 很多东西都模糊了. 在网上找了下, 觉得这篇不错, 记下来防止以后用的着. ' 分布式企业应用软件结构复杂.涉及 ...

  6. mvc identity连接mysql_asp.net MVC5,如何使用mysql数据库,使用MVC框架中自带的identity用户验证体系...

    问题如题 现在很多时候,即使是.net项目,我们用的数据库也未必时是 SQL Server了. 但很多VS 自带的框架(如MVC .WebAPI等框架)中的示例自带的仍然是默认Sql Server的, ...

  7. MVC模式与三层架构的区别

    MVC模式与三层架构的区别 原文地址:http://www.cnblogs.com/yourshj/p/5197310.html 之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MV ...

  8. Web MVC模式实现

    Web MVC模式实现 Java WEB中 MVC模式是一种非常好的框架搭建思想,其思想是将输入.处理.输出进行分离.现在给出两种常用的MVC实现方式. Web-Service Web-Service ...

  9. 通过MVC模式将Web视图和逻辑代码分离

    MVC模式(Model-View-Controller)常被用在Web程序中.如Struts框架就是一个基于MVC模式的Web框架.所谓MVC模式,就是将视图(也就是客户端代码,包括html.java ...

最新文章

  1. html textarea换行和dom换行
  2. HttpContext.Cache属性
  3. Cpp 对象模型探索 / new 运算符内部调用过程分析
  4. 关于微信授权与登录的相关操作(纯手敲)
  5. C#生成新浪微博短网址 示例源码
  6. Linux网络设置(第二版) --互联网寻址过程
  7. Python《搞事情==蜂-鸟-图-片(二)》
  8. 《统一沟通-微软-实战》-6-部署-5-边缘服务器-2012-07-12-1
  9. Windows 7样式地址栏(Address Bar)控件实现
  10. Android----Google code android开源项目(二)
  11. mysql表的默认所有者_MySQL数据库基本管理-001
  12. java8 merge_给老弟讲解java8中的marge()方法,一顿骚操作
  13. 【数学基础】一份非常适合人工智能学习的线性代数基础材料中文版 (国内教材精华)...
  14. 网络计算机装系统,网络克隆——为电脑重装系统
  15. 腾讯云实验室linux基本操作
  16. Linux打补丁遇到Hunk# succeeded at提示
  17. 疯狂python讲义豆瓣评分_书榜 | 计算机书籍(9.9-9.15)销售排行榜
  18. python 手动读取cifar10_如何用python解析cifar10数据集图片
  19. python对于字典d d.get(x、y)_字典的使用与操作
  20. 你什么时候放下,什么时候就没有烦恼。

热门文章

  1. 主流的券商系统有哪些?
  2. 固定测斜仪全自动DE816型固定式测斜仪
  3. BLDC无刷直流电机之电机驱动的方案总结
  4. tomcat服务器各文件夹的作用
  5. 中国网上团购行业市场供需与战略研究报告
  6. js贺卡_贺卡病毒许可证
  7. 【论文写作】如何写引言?应该思考什么问题?总体架构!!!
  8. ubantu 无法打开文件 Failed to execute default File manager
  9. 古代一两银子到底值多少钱?
  10. 《淘宝大学-电商运营管理》