ASP.NET MVC 理解MVC模式

PS:MVC出来很久了,工作上一直没机会用,所以我也没去学。出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正。

理解一般意义上的MVC模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分:

  • 模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。
  • 视图(View):视图能够实现数据有目的的显示。在视图中一般没有程序上的逻辑。
  • 控制器(Controller) :控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。

上面的定文来自维基百科。根据上面的定文和我个人的理解,我画了下面这样一张表示MVC各部分关系的图:

  

注意,不同的平台和不同的语言框架对MVC的定义各有不同,并没有一个明确的定义。但大体上,MVC模式中的每个部分是分工明确、界定清晰的。操作数据的逻辑只存在于模型中,呈现数据的逻辑只存在于视图中,处理用户的请求和输入只存在于控制器中。不管应用程序有多大、处于哪段生命周期,这种清晰的关注点分离(separation of concerns)的MVC模式让我们的应用程序更容易维护和扩展。

理解领域模型

领域模型(Domain Model) 是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、业务对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。 领域模型是描述业务用例实现的对象模型,它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。

对于MVC应用程序,领域模型是一个非常重要的部分。在某种行业内,我们根据现实世界的实体、相关的操作和规则来创建模型(Model)。对于C#程序来说,领域模型就是一组封装现实世界对象的C#类型(类、结构等);领域内对对象的一些操作(或者叫处理),则是定义在C#类型中的方法(Method);而领域内对对象操作的一些规则就是方法内部的逻辑处理,比如C#中的属性读写器的get和set方法对读写类成员的控制。举个例子:
比如银行这个领域,个人的“银行帐户”可以建成一个模型。每个账户都有“银行卡消费”这项操作,即银行账户模型下的一个方法。“不能透支消费”是对这个帐户使用银行卡的约束规则,这个规则就是定义在银行卡消费方法内部的逻辑处理。

上面说的虽然有点抽象,但还是很容易理解的。而我对领域模型的理解只能到这里了,朋友们好好体会吧。总之,在MVC应用程序中,我们要有这样一个概念:要通过Model操作数据,或添加一项操作,或给某项操作添加、改变一个规则,这些都是在改变应用程序的领域模型。

理解ASP.NET中的MVC

概括的讲ASP.NET有如下特点:

  1. 通过把项目分成model view和controller,这种任务分离(亦称关注点分离),使得复杂项目更加容易维护,另外测试驱动组件使得应用程序也更加容易测试。
  2. 可扩展的简便的框架。mvc框架被设计用来更轻松的移植和定制功能。你可以加入自己的视图引擎,url重写策略,重载action方法等。mvc也支持Dependency Injection (DI) 和 Inversion of Control (IOC)。强大的url重写机制让你更方便的建立容易理解和可搜索的url。url可以不包含任何文件扩展名,并且可以重写url使其对搜索引擎更加友好。
  3. 对现有的asp.net程序的支持,可以使用asp.net现有的页面标记、用户控件、模板页、数据绑定等等。
  4. ……

在ASP.NET MVC中,控制器通常是继承System.Web.Mvc.Controller的类。控制器中类的每个公共方法被称为Action方法。ASP.NET路由系统内部根据请求的URL和路由配置调用对应的Action方法,完成领域模型的操作后,再选择一个视图呈现给客户端。下图显示了ASP.NET MVC中Controller、Model和View之间的关系:

另外,ASP.NET MVC框架可以使用任何被.NET支持的数据库、ORM框架和其他工具。

对于初学者,我觉得对ASP.NET MVC的概念了解到这就差不多了。如果想更好的理解ASP.NET中 MVC的概念建议访问MSDN文档
如果你是新手,为了帮助你理解,建议自己做几个简单的Demo,可参考另一位园友的无废话MVC入门教程系列博文。

参考:
《Pro ASP.NET MVC 3 Framework》

 
 
标签: MVC

ASP.NET MVC 理解MVC模式的更多相关文章

  1. [ASP.NET MVC 小牛之路]01 - 理解MVC模式

    本人博客已转移至:http://www.exblr.com/liam  PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各 ...

  2. ASP.NET MVC:01理解MVC模式

    ASP.NET MVC是ASP.NET Web应用程序框架,以MVC模式为基础. MVC:Model View Controller 模型-视图-控制器Model(模型):负责对数据库的存取View( ...

  3. 理解MVC模式

    理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻 ...

  4. <转>ASP.NET学习笔记之理解MVC底层运行机制

    ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET ...

  5. Asp.net MVC - 使用PRG模式(附源码)

    阅读目录: 一. 传统的Asp.net页面问题 二.Asp.net MVC中也存在同样的问题 三.使用PRG模式 四.PRG模式在MVC上的实现 一. 传统的Asp.net页面问题 一个传统的Asp. ...

  6. [概念理解] MVC模式和C++的实现

    [转]学习可以是一件很快乐的事,特别是当你发现以前所学的点点滴滴慢慢地能够串起来或者变成了一个环,这种感觉真好.这篇文章就这么来的. 从MVC架构开始说起吧.这两天系统了解了一下MVC架构的内容,主要 ...

  7. MVC视图展现模式之移动布局解析-续集

    网站就必须用响应式布局吗?MVC视图展现模式之移动布局:http://www.cnblogs.com/dunitian/p/5213787.html demo:http://pan.baidu.com ...

  8. 深入理解MVC与MVP

    http://www.cnblogs.com/seaky/archive/2011/04/06/1982533.html 在深入分析MVC和MVP之前,我们有必要回顾下经典的三层架构.分层是计算机学科 ...

  9. 【ASP.NET MVC】MVC概述

    描述 本篇文章主要概述ASP.NET MVC,具体包括如下内容: 1.MVC模式概述 2.WebForm概述 3.WebForm与MVC区别 4.ASP.NET MVC发展历程 5.运用程序结构 6. ...

随机推荐

  1. Socket 由浅入深系列--------- 简单实现编程(三)

    socket 由浅入深 原理(一)介绍了一些,以下也就是简单实现,并未考虑其它性能化! 使用TCP的server客户机举例 server 设置一个简单的TCPserver涉及下列步骤: 调用 sock ...

  2. s性能优化方面的小知识

    总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...

  3. java23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  4. java ResultSet 结果集处理 createStatement() 里参数的意义(第一弹)

    createStatement(int   resultSetType,int  resultSetConcurrency)参数一:结果集类型可取值:  1.ResultSet.TYPE_FORWOR ...

  5. 表单元素的外观改变(webkit and IE10)

    1.禁止表单默认外观: input,select{ -webkit-appearance:none; appearance:none; }2.伪元素改变ie10表单元素默认外观 select::-ms ...

  6. VS2015集成新潮工具4

    VS2015集成新潮工具(四)   本课程来源与微软connect视频教程,Modern Web Tooling in Visual Studio 2015 本课程主要讲下当下流行的前端工具 bowe ...

  7. 2.3 LINQ查询表达式中 使用select子句 指定目标数据

    本篇讲解LINQ查询的三种形式: 查询对象 自定义查询对象某个属性 查询匿名类型结果 [1.查询结果返回集合元素] 在LINQ查询中,select子句和from子句都是必备子句.LINQ查询表达式必须 ...

  8. 过度补脑系列:Nokia的不归路

    没有数据,没有调查,只是突然想起诺基亚... 23号的一节酱油课,脑海中突然闪过两个关键字--nokia & android 于是用手机百度了一下,竟然真的出了新机型,NokiaX,X东24日 ...

  9. NHibernate 数据查询之QueryOver<T>

    NHibernate 数据查询之QueryOver<T>   一.限制运算符 Where:筛选序列中的项目WhereNot:反筛选序列中的项目 二.投影运算符 Select:创建部分序列的 ...

  10. 10 Super Useful Tools for Web Designers

    36个扁平化设计的iphone和ipad应用界面设计案例 http://designwoop.com/2014/04/36-examples-of-flat-iphone-and-ipad-appli ...