[ASP.NET MVC 小牛之路]01 - 理解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 MVC有如下特点:

  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》

作者:Liam Wang

出处:http://www.cnblogs.com/willick/

联系:[email protected]

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。

时间: 2024-08-09 17:19:41

[ASP.NET MVC 小牛之路]01 - 理解MVC模式--转载的相关文章

[ASP.NET MVC 小牛之路]02 - C#知识点提要--转载

本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在学asp.net mvc的童鞋,不防花个几分钟浏览一下.本文要回顾的C#知识点有:特性.自动属性.对象集合初始化器.扩展方法.Lambda表达式和Linq查询.C#资深“玩家”可路过. 本文目录 1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行

[ASP.Net] 转 > ASP.NET MVC 小牛之路

URL: http://www.cnblogs.com/willick/ 看到了不错的学习笔记,MVC.Net学习之路展开 [ASP.NET MVC 小牛之路]18 - Web API [ASP.NET MVC 小牛之路]17 - 捆绑(Bundle) [ASP.NET MVC 小牛之路]16 - Model 验证 [ASP.NET MVC 小牛之路]15 - Model Binding [ASP.NET MVC 小牛之路]14 - Unobtrusive Ajax [ASP.NET MVC 小

[ASP.NET MVC 小牛之路]18 - Web API

原文:[ASP.NET MVC 小牛之路]18 - Web API Web API 是ASP.NET平台新加的一个特性,它可以简单快速地创建Web服务为HTTP客户端提供API.Web API 使用的基础库是和一般的MVC框架一样的,但Web API并不是MVC框架的一部分,微软把Web API相关的类从 System.Web.Mvc 命名空间下提取了出来放在 System.Web.Http 命名空间下.这种理念是把 Web API 作为ASP.NET 平台的核心之一,以使Web API能使用在

[ASP.NET MVC 小牛之路]05 - 使用 Ninject实现依赖注入

在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来演示Ninject在ASP.NET MVC中的应用. 为了更好的理解和撑握本文内容,强烈建议初学者阅读本文前先阅读依赖注入(DI)和Ninject. 本文目录: 准备工作 新建一个名为BookShop的空白解决方案.在该解决方案中分别添加一个名为BookShop.WebUI的MVC空应用程序,和一个

[ASP.NET MVC 大牛之路]01 - 开篇

匆匆2014,转眼就到末尾了.在这一年,你还有哪事情些想做而没有做? 2014年在我身上发生了两件意义重大的事,一是正月初一宝宝出生,我升级成为了爸爸:二是加入了瞬聘网,成为了技术负责人. 2014我计划想做的事,比如带家人去一次旅行.看完家里那几本想看而没看的书.写完[ASP.NET MVC 大牛之路]系列博客.做一个教育类的网站等等,计划其实都还算合理,但终究还是80%的事没有完成,50%的事根本没有去做. 去年结束了[ASP.NET MVC 小牛之路]系列,本来计划在2014年接着写大牛之

ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象

本文标题说是"深入理解Controller"其实有点“标题党”的味道了.本篇只会探讨"Controller"的激活机制,也就是如何创建Controller的并调用的.本篇不是讲解Controller底层相关知识,不过后期博文会对其进行介绍. 0X1 DefaultControllerFactory DefaultControllerFactory对象可以说是Controller创建激活的一个重要类,在默认情况下(这里的默认情况指没有向MVC指定负责创建Control

[ASP.NET MVC 小牛之路]03 - Razor语法(转)

出处:http://www.cnblogs.com/willick/p/3224144.html Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活更简洁.下面通过一些简单示例让大家快速撑握Razor语法的使用. 本文目录 准备工作 在演示Razor语法的使用之前,我们需要做一些准备工作. 1.打开VS创建一个ASP.NET MVC空项目,很简单,就不具体演

[ASP.NET MVC 小牛之路]03 - Razor语法--转载

Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活更简洁.下面通过一些简单示例让大家快速撑握Razor语法的使用. 本文目录 准备工作 在演示Razor语法的使用之前,我们需要做一些准备工作. 1.打开VS创建一个ASP.NET MVC空项目,很简单,就不具体演示了. 2.添加一个Model.在项目的Models文件夹中添加一个名为Product的类.在这我

ASP.NET MVC进阶之路:深入理解依赖注入(DI)和控制反转(IOC)

0X1 什么是依赖注入 依赖注入(Dependency Injection),是这样一个过程:某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点.在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行.详细的介绍可以阅读上一篇博文:http://www.cnblogs.com/dazhuangtage/p/5672190.html 0X2 什么是控制反转 在解释什么是控