Ciclo de vida de ASP.NET MVC

El objetivo de este artículo es proporcionar una buena comprensión de la canalización de MVC. El ciclo de vida es básicamente un conjunto de ciertas etapas que ocurren en un momento determinado.

Ciclo de vida de la aplicación

MVC en realidad se define en dos ciclos de vida, el ciclo de vida de la aplicación y el ciclo de vida de la solicitud. 

El ciclo de vida de la aplicación , en el que el proceso de la aplicación inicia el servidor en ejecución hasta el momento en que se detiene. y etiquetó los dos eventos en el archivo de inicio de su aplicación. es decir, los eventos de inicio y finalización de la aplicación

Esto es independiente del ciclo de vida de la solicitud , que es la secuencia de eventos o etapas que se ejecutan cada vez que la aplicación maneja una solicitud HTTP.

Ciclo de vida de solicitud de MVC:

Ciclo de vida de solicitud de MVC

  • El punto de partida para cada aplicación MVC comienza con el enrutamiento. Después de eso, la solicitud recibida determina y encuentra cómo debe manejarse con la ayuda del módulo de enrutamiento de URL. El módulo de enrutamiento es responsable de hacer coincidir la URL entrante con las rutas que definimos en nuestra aplicación.
  • Cada ruta tiene un controlador de ruta asociado asociado con ellos. Si la solicitud coincide con una ruta definida en nuestra aplicación MVC, el controlador de rutas de MVC recupera una instancia de HttpHandler de MVC.
  • El controlador MVC Inicia el proceso de inicialización y ejecución de un controlador. El marco MVC maneja la conversión de datos de ruta en un controlador específico que puede manejar las requests.
  • Esto se logra a través de los componentes MVC como Controller Factory y Activators, que son responsables de crear una instancia de la clase Controller.
  • Una vez que se ha creado el controlador, un componente llamado invocador de acciones encuentra y selecciona un método de acción apropiado para invocar en nuestro controlador.
  • El enlace del modelo ocurre antes de que se llame al método, lo que asigna los datos de nuestra solicitud HTTP a los parámetros de nuestros métodos de acción. También llamado filtro de acción antes y después de que se generen los resultados de la acción.
  • Ahora, después de que se haya preparado el resultado de nuestra acción, se activa la siguiente etapa, que es Ejecución de resultados.
  • Si el resultado es un tipo de vista, se llamará a View Engine y encontrará la vista y la representará.
  • Si no es un tipo de vista, el resultado de la acción se ejecutará por sí solo. Esta ejecución de resultados no es más que generar una respuesta real a esa solicitud HTTP original.

Veamos ahora el final del código,

La aplicación MVC es la parte principal de cada proyecto MVC. Esta clase se hereda de HttpApplication Class. Esta clase expone una serie de eventos del ciclo de vida de la solicitud a los que podemos adjuntar controladores de eventos y ejecutar nuestro propio código.

La aplicación comienza y termina. Estos dos eventos se ejecutan antes y después de cualquier otro evento y permiten que nuestra aplicación comience o deje de recibir requests.

Inicio de la aplicación:

por lo tanto, la vida de cada aplicación MVC comienza con un evento de inicio de aplicación. Este evento se activa cuando la aplicación recibe su primera solicitud. Este es el archivo de punto de entrada de la aplicación MVC. Este evento se activa cuando la aplicación recibe su primera solicitud. Nos permite realizar una configuración global antes de que suceda algo, y podemos ver la implementación predeterminada aquí.

Como puedes ver aquí,

C#

using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
  
namespace MVC_Application {
    public class MvcApplication : System.Web.HttpApplication {
    protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(
                GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
  • En la aplicación MVC, puede usar esto para varias tareas, como aplicar la configuración global, el script de registro y los paquetes CSS. Como puede ver aquí, implementa por defecto RegisterBundles, RegisterGlobalFilters, etc.
  • El método RegisterRoutes agrega cualquier ruta que definamos a la colección estática en la clase RouteTable. Esta es la colección de rutas que el enrutamiento de URL intenta hacer coincidir con las URL entrantes.
  • Necesitamos definir esto antes de que suceda algo para que la solicitud tenga algo que coincidir. y cada una de estas rutas también debe tener una clase RoutHandler asociada que realmente procesará las requests entrantes después de que se haya hecho coincidir con la ruta. RouteHandler se usa para recuperar el Httphandler correcto para la solicitud.

Fin de la aplicación:

Este evento se activa cuando nuestra aplicación se detiene y luego no se pueden recibir más requests. Es raro usar este evento, pero si desea ejecutar cualquier tarea antes de que la aplicación se apague por completo intencionalmente. Este es un buen lugar para hacerlo.

Inicio de preaplicación:

Hay algunos casos en los que desea ejecutar algún código personalizado antes de que se inicie la aplicación. En esta situación, tenemos la opción de utilizar el método PreApplication Start. En realidad, este método se define a nivel de ensamblaje.

Veamos cada fase en detalle:

Inicialización del controlador:

Flujo de inicialización del controlador MVC

El MVCHhandler,

  • El método ProcessRequest es responsable de generar una respuesta a una solicitud entrante. Para ello debe crear y ejecutar un controlador.
  • Primero, llama a un método secundario llamado ProcessRequestInit , que le pide a un componente llamado Controller Factory que proporcione un controlador para la solicitud actual. Controller Factory selecciona una clase de controlador adecuada de la aplicación actual utilizando los datos de ruta pasados.
  • Luego, la fábrica usa un componente llamado Controller Activator para crear una instancia de esa clase. El Activador del controlador utiliza un Solucionador de dependencias al instanciar la clase solicitada. permite implementar patrones como la inyección de dependencia. Después de que MVCHandler haya adquirido un controlador de estos pasos, llama al método Execute en ese controlador. Es desde dentro de este método que todas las herramientas poderosas como los métodos de Acción están expuestas y comienzan a procesarse.

Proceso de ejecución del método de acción:

Flujo de ejecución del método de acción

próxima fase,

  • El Action Invoker es responsable de seleccionar y ejecutar el mejor método para manejar la solicitud entrante. Lo elige haciendo coincidir los datos de la ruta con el nombre del método junto con el selector de acción aplicado a ese método.
  • una vez seleccionado previamente el método, ejecuta el proceso de autenticación y autorización. Estos pasos de seguridad se implementan a través de filtros MVC. Son componentes que le permiten inyectar lógica en la canalización de procesamiento para que
  • La primera autenticación , este filtro verifica a la persona si la persona es quien dice que es si la autenticación falla, luego se envía de vuelta al solicitante si tiene éxito. pasamos a la autorización , se comprueba qué puede hacer el solicitante, si el solicitante no está autorizado, se envía de vuelta al navegador.
  • si el usuario pasa ambas fases, la canalización avanza, por lo que el invocador de acciones ha sido elegido como método para ejecutar antes de que se ejecute el método, debe tener un parámetro poblado, de modo que ahí es donde entra en juego el enlace del modelo . por lo que está tomando datos de la solicitud y el uso esos datos para crear el objeto del solicitante. una vez que se han pasado todos los parámetros para un método dado, el invocador de la acción puede llamar a ese método. El enlazador de modelos en sí mismo recupera datos para completar el parámetro del método de acción de los proveedores de valores.

Flujo de proceso de vinculación de modelos

  • El MVC ofrece cuatro proveedores predeterminados que recopilan datos de lugares comunes que son Datos de formulario, Datos de ruta, String de consulta, Archivos. Estas clases brindan información de varias fuentes relacionadas con las requests actuales y luego se ejecuta un filtro de acción. ejecutó dos métodos, es decir, OnActionExecuting, que se activa antes del método de acción y OnActionExecuted, que se activa después, por lo que en este punto se ejecutan los filtros OnActionExecuting, por lo que después de que se realiza esta ejecución, finalmente el método de acción se llama a sí mismo, devuelve el resultado de la acción, en resumen, determina y prepara el tipo de respuesta. que manejará la solicitud después de que se ejecuten los filtros OnActionExecuted, esto nos permite agregar lógica a la canalización antes de que se ejecute el resultado.

MVC integrado proporciona filtros de acción:

Caché de salida: este filtro se utiliza para almacenar en caché la salida de la acción durante un período de tiempo determinado.

Manejar error: este filtro se usa para manejar el error causado por una acción o controlador, si ocurre alguna excepción, redirige la acción a una página de error personalizada.

Autorizar: este filtro se utiliza para filtrar el usuario autorizado para acceder al recurso.

Nota: podemos crear un filtro personalizado implementando esa clase de interfaz de filtro en particular.

Ver resultado del proceso de ejecución:

Ver flujo de ejecución de resultados

próxima fase,

  • La ejecución del resultado de la acción es desenstringda por el invocador de la acción antes de que se ejecute el resultado. El filtro de resultados asociado se ejecuta primero. Este filtro también expone dos métodos.
  • El primer OnResultExecuting se activa antes de que el resultado de la acción en sí mismo después de ejecutar este método se llame al resultado de ejecución del resultado de la acción. El MVC proporcionó los diferentes tipos de resultados de acción, el resultado de ejecución proporcionó ramificaciones de tubería entre dos rutas si el resultado está en forma de vista o vista parcial , luego el motor de vista representa la vista y si el resultado está en otra forma, este resultado generalmente maneja escribir el responde por sí mismo. Después de ejecutar el método onResultExecuted de los filtros de resultados. Este es el último punto de MVC para inyectar su propia lógica

Proceso de ejecución del resultado de la acción:

Acción Resultado Flujo de ejecución

próxima fase,

  • Ver proceso de representación Comienza cuando Action Invoker llama al método ExecuteResult en ese objeto.
  • En el caso de Ver resultados, el método ExecuteResult en realidad se define en una clase principal llamada ViewResultBase. Entonces, el invocador llama al método ExecuteResult de la clase base, que a su vez llama a un método abstracto llamado FindView. La clase secundaria ViewResult anula este método y lo usa para pedirle a View Engine que encuentre la vista correcta. View Engine devuelve un ViewEngineResult, que contendrá la vista adquirida o una lista de ubicaciones en las que intentó buscar una. Las vistas no son más que una clase que implementa la interfaz IView, que define solo un método que se llama Render. Render es el método que finalmente escribe el contenido de nuestra plantilla en la respuesta a la solicitud.

Eso es todo sobre el ciclo de vida de MVC.

Publicación traducida automáticamente

Artículo escrito por manaligujarathi0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *