ASP.NET MVC源码分析

MVC4 源码分析(Visual studio 2012/2013)

HttpModule中重要的UrlRoutingModule

 ASP.NET MVC源码分析_第1张图片

ASP.NET MVC源码分析_第2张图片

9:this.OnApplicationPostResolveRequestCache);

ASP.NET MVC源码分析_第3张图片

10:this.PostResolveRequestCache(context);

ASP.NET MVC源码分析_第4张图片

IRouteHandler routeHandler = routeData.RouteHandler; //根据路由数据创建出了MvcRouteHandler

IHttpHandler httpHandler = routeHandler.GetHttpHandler(requestContext);

根据MvcRouteHandler创建出了MvcHandler:IHttpHandler(MvcHandler实现了IHttpHandler接口,接下来就要进入MVC源代码分析)

在MVC4源代码src文件夹System.Web.Mvc类库下

MVC4百度云源代码:链接:http://pan.baidu.com/s/1pLDvXB9  密码:4tiv

Reflector7百度云盘:链接:http://pan.baidu.com/s/1eSm9Y06  密码:gyx0

1:routeHandler.GetHttpHandler(requestContext);

2:MvcHandler.cs  ProcessRequest方法

通过工厂模式创建MVC中的Controller控制器,然后执行Execute方法

3:controller.Execute(RequestContext);

IController是接口,需要找具体实现类(之前通过工厂模式创建Controller控制器,优先去找Controller类)

ASP.NET MVC源码分析_第5张图片

Controller : ControllerBase  //Controller并没有实现IController接口,找其父类

ControllerBase : IController  //ControllerBase实现了IController接口

4:ExecuteCore()  //Controller类中

ASP.NET MVC源码分析_第6张图片

 

5:ActionInvoker.InvokeAction(ControllerContext, actionName)方法

ControllerActionInvoker : IActionInvoker  //ControllerActionInvoker 实现了IActionInvoker  接口

6:InvokeActioin

ASP.NET MVC源码分析_第7张图片

1:InvokeActionMethodWithFilters

1.1:InvokeActionMethod

2:InvokeActionResultWithFilters

2.1:InvokeActionResultFilterRecursive

ASP.NET MVC源码分析_第8张图片

2.2:InvokeActionResult

7:actionResult.ExecuteResult(controllerContext);

ViewResult : ViewResultBase   //ViewResult 并没有实现ActionResult接口,找其父类

ViewResultBase : ActionResult  //ViewResultBase实现了ActionResult接口

ASP.NET MVC源码分析_第9张图片

8:View.Render(viewContext, writer); 渲染View视图【WebForm.aspx视图引擎】

ASP.NET MVC源码分析_第10张图片

WebFormView : BuildManagerCompiledView  //WebFormView 并没有实现IView接口,找其父类

BuildManagerCompiledView : IView  //BuildManagerCompiledView实现了IView接口

8.1:BuildManagerCompiledView (WebForm.aspx视图引擎模式)

RenderView为抽象类,由其子类实现具体方法内容

ASP.NET MVC源码分析_第11张图片

ASP.NET MVC源码分析_第12张图片

执行ASP.NET 页面生命周期ProcessRequest方法,把后续第13/第14等事件执行完毕,然后把Render渲染好的所有html代码返回给浏览器

ASP.NET MVC源码分析_第13张图片

Application  19事件

你可能感兴趣的:(ASP.NET MVC源码分析)