首页 > Web开发 > 详细

ASP.NET MVC源码分析

时间:2016-03-28 23:21:08      阅读:260      评论:0      收藏:0      [点我收藏+]

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

HttpModule中重要的UrlRoutingModule

 技术分享

技术分享

9:this.OnApplicationPostResolveRequestCache);

技术分享

10:this.PostResolveRequestCache(context);

技术分享

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类)

技术分享

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

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

技术分享

4:ExecuteCore()  //Controller类中

技术分享

 

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

技术分享

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

6:InvokeActioin

技术分享

1:InvokeActionMethodWithFilters

技术分享1.1:InvokeActionMethod

技术分享

2:InvokeActionResultWithFilters

技术分享

2.1:InvokeActionResultFilterRecursive

技术分享

2.2:InvokeActionResult

技术分享

7:actionResult.ExecuteResult(controllerContext);

技术分享

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

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

技术分享

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

技术分享

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

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

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

技术分享

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

技术分享

技术分享

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

技术分享

Application  19事件

技术分享

ASP.NET MVC源码分析

原文:http://www.cnblogs.com/Dr-Hao/p/5315556.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!