我正在开发我的MVC应用程序,我在想,控制器类的寿命是多长?
它何时创建?一个控制器有多少个实例?局部变量的含义是什么?它什么时候被破坏?
我确定互联网上的某个地方有个不错的链接,但是我的Google-fu找不到它。
Answers:
Stephen Walther在MVC框架处理的请求的生命周期上有一篇很棒的文章。
这是他文章顶部的摘录,继续详细解释了每个步骤:
生命周期步骤概述
当您从ASP.NET MVC网站发出请求时,将发生五个主要步骤:
1.创建路由表
第一步仅在ASP.NET应用程序首次启动时发生。RouteTable将URL映射到处理程序。
2. UrlRoutingModule拦截请求
每当您提出请求时,就会发生第二步。UrlRoutingModule拦截每个请求,并创建并执行正确的处理程序。
3. MvcHandler执行
MvcHandler创建一个控制器,将该控制器传递给ControllerContext,然后执行该控制器。
4.控制器执行
控制器确定要执行的控制器方法,建立参数列表,然后执行该方法。
5.调用RenderView方法
通常,控制器方法调用RenderView()将内容呈现回浏览器。Controller.RenderView()方法将其工作委托给特定的ViewEngine
假设您不更改默认值 ControllerFactory
,将为每个请求创建控制器,并将在请求完成后的某个时候进行垃圾回收。
简而言之,您无需担心实例变量的竞争条件(尽管您显然需要静态变量)。话虽如此,为使代码更简洁,我建议您使控制器动作保持可重入状态。