码迷,mamicode.com
首页 > Web开发 > 详细

MVC5 Controller简要创建过程

时间:2015-06-26 12:45:04      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

即将离职,闲来无事回顾下MVC的源码,到了Controller创建这里,由于流程有点复杂,鉴于自己记性不太好,索性就记录一下吧,方便日后参照。

首先看MvcHandler

 1 public class MvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState
 2     {
 3           //...
 4           private ControllerBuilder _controllerBuilder;
 5           internal ControllerBuilder ControllerBuilder
 6         {
 7             get
 8             {
 9                 if (_controllerBuilder == null)
10                 {
11                     _controllerBuilder = ControllerBuilder.Current;
12                 }
13                 return _controllerBuilder;
14             }
15             set { _controllerBuilder = value; }
16         }
17            //...
18            protected internal virtual void ProcessRequest(HttpContextBase httpContext)
19         {
20             IController controller;
21             IControllerFactory factory;
22             ProcessRequestInit(httpContext, out controller, out factory);
23 
24             try
25             {
26                 controller.Execute(RequestContext);
27             }
28             finally
29             {
30                 factory.ReleaseController(controller);
31             }
32         }
33 
34         private void ProcessRequestInit(HttpContextBase httpContext, out IController controller, out IControllerFactory factory)
35         {
36             // ...
37             // Get the controller type
38             string controllerName = RequestContext.RouteData.GetRequiredString("controller");
39 
40             // Instantiate the controller and call Execute
41             factory = ControllerBuilder.GetControllerFactory();
42             controller = factory.CreateController(RequestContext, controllerName);
43             //...
44         }

简而言之,controller通过实现IControllerFactory的工厂的CreateController()方法创建,而该工厂通过ControllerBuilder.GetControllerFactory()获得。

那么来看看ControllerBuidler

MVC5 Controller简要创建过程

标签:

原文地址:http://www.cnblogs.com/chengs/p/4601962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!