ASP.NET MVC 原理

我出了份卷子做面试题,其中之一就是要求说说ASP.NET MVC的原理。感觉太空泛了,谁能说得准呢?

但是,如果站在我这个面试官立场,面试题好多时并不要求有标准答案,可能也没有什么标准答案,主要是通过问答,了解一下面试者的理解程度,相关知识程度什么的。其实,我自己水平也不行,但因为年纪大,好像不带点人大家会觉得有点怪怪的,所以过去一段时间也参与点招聘工作。

对于ASP.NET MVC,我自己的理解是酱紫的:

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,其实常常就是将数据持久层的实体类直接拿过来用的。即便如此,但在软件设计阶段,还是要将它们的概念区分开。

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

版权声明:本文为博主原屙文章,喜欢你就担走。

时间: 2024-08-08 01:38:34

ASP.NET MVC 原理的相关文章

仅此一文让你明白ASP.NET MVC原理

ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与Action名称: 一个名为MvcHandler的自定义HttpHandler,用来实现对Controller的激活和Action的执行: !!阅读本文前请先弄明白asp.net执行的流程及httpmodule与httphandler的作用. 下面是进行路由转换时相关类的简化结构图: 整个ASP.NET MVC系统的路由信息全部存放在RoteTa

[转] 仅此一文让你明白 ASP.NET MVC 原理

ASP.NET MVC 由以下两个核心组成部分构成: 一个名为 UrlRoutingModule 的自定义 HttpModule,用来解析 Controller 与 Action 名称: 一个名为 MvcHandler 的自定义 HttpHandler,用来实现对 Controller 的激活和 Action 的执行: !!阅读本文前请先弄明白 asp.net 执行的流程及 httpmodule 与 httphandler 的作用. 下面是进行路由转换时相关类的简化结构图: 整个ASP.NET

【转】仅此一文让你明白ASP.NET MVC原理

原文地址:http://www.cnblogs.com/DotCpp/p/3269043.html ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与Action名称: 一个名为MvcHandler的自定义HttpHandler,用来实现对Controller的激活和Action的执行: !!阅读本文前请先弄明白asp.net执行的流程及httpmodule与httphandler的作用. 下面

Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

出处:http://www.cnblogs.com/SeeYouBug/p/6401737.html 一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数据的操作的一个封转.可以分为视图模型(view model)和领域模型(domain models),视图模型就是在视图与控制器之间传输数据的一个封转,而领域模型就是业务逻辑,后台数据模型等的一个集

第2章 ASP.NET MVC(URL、路由及区域)

ASPNET MVC ASP.NET MVC简介 一.      简介 二.      MVC概念 三.      Asp.NET MVC 原理 四.      与ASP.NETWeb From比较 五.      安装必要软件 六.      第一个MVC应用程序 控制器向视图传递数据的方法 1.         ViewData[Key]=value 只能在当前视图中使用 2.         ViewBag.名称=value  只能在当前视图使用 3.         TempData[k

ASP.NET MVC学习目录

一.ASP.NET MVC原理详解 1.了解MVC架构模式 3.学习ASP.NET MVC的必备语言知识 4.MVC中的razor语法详解 5.ASP.NET MVC路由系统机制详细讲解 6.ASP.NET MVC输出生成Url链接详解 7.自定义ASP.NET MVC路由系统截获MVC的路由请求 8.ASP.NET MVC使用Area区域,使用功能模块清晰明了 9.ASP.NET MVC的Controller介绍 10.ASP.NET MVC的Controller接收输入详解 11.ASP.N

Asp.net MVC 3 防止 Cross-Site Request Forgery (CSRF)原理及扩展

原理:http://blog.csdn.net/cpytiger/article/details/8781457 原文地址:http://www.cnblogs.com/wintersun/archive/2011/12/09/2282675.html Cross-Site Request Forgery (CSRF) 是我们Web站点中常见的安全隐患. 下面我们在Asp.net MVC3 来演示一下. 例如我们有一个HomeContoller中一个Submit Action,我们标记了Http

ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC框架吗? 答案是:可以. 模拟URL映射 先来看一个Demo,在传统的.NET WebForms项目中,实现URL的拦截. 打开VS2013,新建一个“ASP.NET Web窗体应用程序”项目,并取名为Demo4URLRouting. 为了方便测试,注释掉Default.aspx页面的内容和模板引用

ASP.NET MVC下的异步Action的定义和执行原理

Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我们需要定义异步Action方法,必须继承抽象类AsyncController.这篇问你讲述两种不同的异步Action的定义方法和底层执行原理.[本文已经同步到<How ASP.NET MVC Works?>中] 目录 一.基于线程池的请求处理 二.两种异步Action方法的定义     XxxAs