tutorial net mvc libro framework español asp asp.net-mvc

asp.net mvc - libro - ¿Cuál es la vida útil de un controlador MVC ASP.NET?



libro asp.net mvc 5 español (2)

Stephen Walther tiene un excelente article sobre el ciclo de vida de una solicitud manejada por MVC Framework.

Aquí hay un extracto de la parte superior de su artículo, que explica cada paso en detalle:

Resumen de los pasos del ciclo de vida

Hay cinco pasos principales que se producen cuando realiza una solicitud desde un sitio web de ASP.NET MVC:

1. Se crea la RouteTable

Este primer paso solo ocurre una vez cuando se inicia una aplicación ASP.NET. La RouteTable asigna direcciones URL a los controladores.

2. El módulo UrlRouting Intercepta la solicitud

Este segundo paso sucede cada vez que haces una solicitud. UrlRoutingModule intercepta todas las solicitudes y crea y ejecuta el controlador correcto.

3. El MvcHandler ejecuta

MvcHandler crea un controlador, pasa el controlador a ControllerContext y ejecuta el controlador.

4. El controlador ejecuta

El controlador determina qué método de controlador ejecutar, crea una lista de parámetros y ejecuta el método.

5. El método RenderView se llama

Por lo general, un método de controlador llama a RenderView () para devolver el contenido al navegador. El método Controller.RenderView () delega su trabajo a un ViewEngine particular

Estoy en el proceso de desarrollar mi aplicación MVC y estaba pensando: ¿Cuál es la duración de una clase de controlador?

¿Cuándo se crea? ¿Cuántas instancias de un solo controlador hay? ¿Cuáles son las implicaciones de las variables locales? cuando se destruye

Estoy seguro de que hay un buen enlace en algún lugar que flota en Internet, pero mi google-fu no lo pudo encontrar.


Suponiendo que no cambie el ControllerFactory predeterminado, los controladores se crearán para cada solicitud y se recogerán como basura "en algún momento después" de que la solicitud se haya completado.

En resumen, no necesita preocuparse por las condiciones de carrera para las variables de instancia (aunque sí lo hace para las variables estáticas, obviamente). Habiendo dicho eso, recomendaría mantener las acciones de su controlador reentradas por un código más limpio.