首页 > Web开发 > 详细

MVC5 Controller简要创建过程

时间:2015-06-26 12:44:11      阅读:204      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!