什么是ASP.NET MVC控制器的生命周期?
我正在开发我的MVC应用程序,我在想,一个控制器类的生命期是多less?
何时创build? 单个控制器有多less个实例? 局部variables的含义是什么? 什么时候销毁?
我确定在互联网上有一个很好的链接,但是我的google-fu找不到。
Stephen Walther在MVC框架处理的请求的生命周期中有一篇很棒的文章 。
这是他文章顶部的摘录,它继续详细解释每一步:
生命周期步骤概述
当您从ASP.NET MVC网站发出请求时,会发生以下五个主要步骤:
1.路由表已创build
ASP.NET应用程序第一次启动时,第一步只发生一次。 RouteTable将URL映射到处理程序。
2. UrlRoutingModule拦截请求
当你提出请求时,会发生第二步。 UrlRoutingModule拦截每个请求并创build并执行正确的处理程序。
3. MvcHandler执行
MvcHandler创build一个控制器,将控制器传递给ControllerContext,并执行控制器。
4.控制器执行
控制器确定执行哪个控制器方法,build立参数列表并执行该方法。
5.调用RenderView方法
通常情况下,控制器方法调用RenderView()将内容呈现回浏览器。 Controller.RenderView()方法将其工作委托给特定的ViewEngine
假设您不更改默认的ControllerFactory
,则将为每个请求创buildControllerFactory
,并且将在请求完成后的某个时间进行垃圾回收。
总之,你不需要担心实例variables的竞争条件(尽pipe你显然是为静态variables做的)。 话虽如此,我build议保持你的控制器动作重入为清洁代码的缘故。