1、 ASP.NET MVC 是什么?设计模式
ASP.NET MVC是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来,日前最新版本是ASP.NET MVC 4.0。是将一个Web应用分解为:Model、View和Controller。ASP.NET MVC框架提供了一个能够代替ASP.NET WebForm的基于MVC设计模式的应用。浏览器
MVC的优势:服务器
(1)、经过把项目分红Model、View和Controller,使得复杂项目更加容易维护,减小项目之间的耦合;框架
(2)、没有使用ViewState和服务器表单控件,能够更方便的控制应用程序的行为;单元测试
(3)、应用程序经过Controller来控制程序请求,并提供了原生的UrlRouting功能来重写Url;测试
(4)、使Web程序对单元测试的支持更加出色;spa
(5)、在团队开发模式下表现更出众。设计
二、MVC 包含的关键技术:orm
ActionResult:Action 的返回类型对象
Filter:过滤器
ModelBinder:Model绑定器
Url Routing:Url路由规则
三、MVC Web 项目的执行阶段:
阶段 |
详细信息 |
接收对应用程序的第一个请求 |
在 Global.asax 文件中,Route 对象将添加到 RouteTable 对象中。 |
执行路由 |
UrlRoutingModule 模块使用 RouteTable 集合中第一个匹配的 Route 对象来建立 RouteData 对象,而后使用所建立的对象建立 RequestContext 对象 |
建立 MVC 请求处理程序 |
MvcRouteHandler 对象将建立 MvcHandler 类的实例,并将 RequestContext 实例传递给处理程序 |
建立控制器 |
MvcHandler 对象使用 RequestContext 实例标识用于建立控制器实例的 IControllerFactory 对象(一般是 DefaultControllerFactory 类的实例) |
执行控制器 |
MvcHandler 实例调用控制器的 Execute 方法 |
调用操做 |
对于从 ControllerBase 类继承的控制器,与该控制器关联的 ControllerActionInvoker 对象将决定要调用的 controller 类的操做方法,而后调用该方法 |
执行结果 |
操做方法将接收用户输入,准备合适的响应数 据,而后经过返回结果类型来执行结果。可执行的内置结果类型包括:ViewResult(呈现视图而且是最经常使用的结果类型)、 RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult 和 EmptyResult |
简单的描述一下:
步骤1:建立RouteTable
当ASP.NET应用程序第一次启动的时候才会发生第一步。RouteTable把URL映射到Handler。
步骤2:UrlRoutingModule拦截请求
第二步在咱们发起请求的时候发生。UrlRoutingModule拦截了每个请求而且建立和执行合适的Handler。
步骤3:执行MvcHandler
MvcHandler建立了控制器,而且把控制器传入ControllerContext,而后执行控制器。
步骤4:执行控制器
控制器检测要执行的控制器方法,构建参数列表而且执行方法。
步骤5:调用RenderView方法
大多数状况下,控制器方法调用RenderView()来把内容呈现回浏览器。Controller.RenderView()方法把这个工做委托给某个ViewEngine来作。