ASP.NET MVC的原理,其实就是使用HttpModule和HttpHandler将用户的请求拦截,按照设定的路由规则解释到相应的控制器和Action,加以执行。Module是一个比较宏观一点的概念,像Session、Cache都由相应的Module负责;而Handler就是负责处理具体请求的。先有Module,再有Handler。它们的关系,有点像进程和线程。

MVC是一种思想。ASP.NET MVC只不过是实现了这种思想的一种开发框架。利用Web Form项目,其实也可以实现MVC。以前搞WEB FORM,我就试过MVP模式。

MVC的思想要点的在于将UI和业务逻辑、数据分离。好处一是逻辑清晰,二是有利于逻辑重用和测试。因为UI很难自动化测试,但逻辑却可以。所以说,ASP.NET MVC有利于进行单元测试。并且UI与逻辑、数据分离以后,也容易重用。比如说,在ASP.NET MVC中,不同的action可以指向同一个view。

经典的MVC中,Model是个巨无霸,包含业务逻辑和数据。controller只是一个中间人,在View和Model之间传递点什么,打打酱油。有时候,Model和View甚至直接联系,绕开了controller。

而在ASP.NET MVC中,虽然有一个Model,但此Model并非彼巨无霸Model。ASP.NET MVC中的Model,是一个跟视图有关的Model,也就是传说中的那个VM,ViewModel,它只是经典巨无霸Model的一部分。ViewModel,顾名思义,主要用于View。经典巨无霸Model,被拆分成了数据(ViewModel、领域对象、数据库实体类 )+ 业务逻辑(BLL ,各种Service)。因此,Model只不过是一群概念的集合,并不是一个实实在在的对象。

值得一提的是,ViewModel、领域对象、数据库实体类很有可能是同一个对象。比如说,我们在View里直接操作的VM,其实常常就是将数据持久层的实体类直接拿过来用的。即便如此,但在软件设计阶段,还是要将它们的概念区分开。

MVC-工作原理的更多相关文章

  1. Spring MVC工作原理(好用版)

    Spring MVC工作原理 参考: SpringMVC工作原理 - 平凡希 - 博客园https://www.cnblogs.com/xiaoxi/p/6164383.html SpringMVC的 ...

  2. Spring MVC工作原理及源码解析(三) HandlerMapping和HandlerAdapter实现原理及源码解析

    1.HandlerMapping实现原理及源码解析 在前面讲解Spring MVC工作流程的时候我们说过,前端控制器收到请求后会调⽤处理器映射器(HandlerMapping),处理器映射器根据请求U ...

  3. Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理

    MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ...

  4. MVC详解:mvc是什么?为什么要用MVC?MVC工作原理以及MVC优缺点

    一.什么是MVC Model:模型层 View:视图层 Controller:控制层 MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户 ...

  5. Spring MVC工作原理 及注解说明

    SpringMVC框架介绍 1) spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...

  6. spring mvc 工作原理

    SpringMVC的工作原理图: SpringMVC流程 1.  用户发送请求至前端控制器DispatcherServlet. 2.  DispatcherServlet收到请求调用HandlerMa ...

  7. MVC工作原理

    MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller) ...

  8. Struts MVC工作原理(转载)

    1.Struts MVC中Model 1 和Model 2简介 我们在开发Web应用时经常提到的一个概念是Model 1/Model 2,那么到底它是什么意思呢?其实它是对采用JSP技术构成Web应用 ...

  9. Spring MVC工作原理及源码解析(二)DispatcherServlet实现原理及源码解析

    1.DispatcherServlet 处理流程 从上一篇文章中Spring MVC原理图中我们可以看出:DispatcherServlet 在 Spring MVC框架 中处于核心位置,它负责协调和 ...

  10. ASP.NET WEB应用程序(.network4.5)MVC 工作原理

    MVC就是模型.视图.控制器. 项目中控制器对应Controllers目录,视图对应Views目录,模型对应Models目录. 1.当我们创建一个控制器时,比如在Controllers目录新建一个名字 ...

随机推荐

  1. MVC 5 - 查询Details和Delete方法

    MVC 5 - 查询Details和Delete方法 在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看De ...

  2. oracle实例,数据库,服务器区别

    实例(instance) 实例是一个非固定的,基于内存的基本进程与内存结构.当服务器关闭时,实例就不存在了. 数据库(DataBase) 数据库指固定的,基于磁盘的数据文件,控制文件,日志文件,参数文 ...

  3. Foundation 学习笔记

    笔记内容 学习笔记-段玉磊 Stanford course Foundation and Attributed Strings Dynamic binding id 是一个指向任何未知对象的指针,(t ...

  4. IOS UI 第一篇:基本UI

    1. UI 书写 最基本创建一个label 标签 写一个first rate :      UILabel *label = [[UILabel alloc] initWithFrame:CGRect ...

  5. c#中实现登陆窗口(无需隐藏)

    C#登录窗口的实现,特点就是不用隐藏. 在入口处打开登陆: static void Main() { Application.EnableVisualStyles(); Application.Set ...

  6. 设计模式之观察者模式(Observable与Observer)

    设计模式之观察者模式(Observable与Observer) 好久没有写博客啦,之前看完了<设计模式之禅>也没有总结一下,现在回忆一下设计模式之观察者模式. 1.什么是观察者模式 简单情 ...

  7. Repeater 模板中查找子控件

    前言:对于Repeater控件,相信从事NETWeb开发的同仁们再熟悉不过了.因其呈现方式和Literal一样,并不在前端生成任何表单标签元素,所以属于比较轻量级的控件.不过青睐于Repeater的主 ...

  8. JavaScript插件——标签页

    JavaScript插件——标签页 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.html ...

  9. DedeCms密码解密[转]

    dede 的密码怎么破解,dede后台.32位的DEDE密码如何破解 dede 的密码是32位MD5减去头5位,减去尾七位,得到20 MD5密码,方法是,前减3后减1,得到16位MD5. 比如我的数据 ...

  10. C/C++基础知识总结——类与对象

    1. 面向对象程序设计的特点 1.1 抽象 1.2 封装 1.3 继承 1.4 多态 (1) 分为:强制多态.重载多态.类型参数化多态.包含多态 (2) 强制多态:类型转换 重载多态: 类型参数化多态 ...