Ciclo de vida de la página MVC explicado en un lenguaje sencillo

Publicado: 2021-11-26

Este artículo se centrará en el ciclo de vida de la aplicación MVC y cómo la aplicación procesa una solicitud a través de su paso por los componentes de la aplicación. Dos ciclos de vida están presentes en un ciclo de vida de MVC . Estos dos ciclos de vida son:

  • El ciclo de vida de la aplicación
  • El ciclo de vida de la solicitud.

Tabla de contenido

Ciclo de vida de la aplicación

El ciclo de vida de la aplicación generalmente significa el momento en que el proceso de la aplicación comienza a ejecutarse. Para indicar el ciclo de vida de la aplicación MVC , se marcan el inicio y el final de la aplicación.

El ciclo de vida de la solicitud

El ciclo de vida de la solicitud se refiere a la serie de eventos que ocurren cada vez que la aplicación maneja una solicitud HTTP. El enrutamiento es el punto de entrada para comenzar cualquier aplicación de MVC. Cuando se realiza una solicitud a la plataforma ASP.NET, se toma la decisión de cómo manejar la solicitud a través del módulo de enrutamiento. El término módulo significa componentes de .NET, que se utilizan para agregar funcionalidad al código. Es responsabilidad de los módulos de enrutamiento hacer coincidir la URL entrante con las respectivas rutas definidas en la aplicación. Un controlador de ruta está asociado con cada ruta, lo que marca el punto de entrada en el marco de MVC.

El marco de MVC es responsable de manejar la conversión de los datos de la ruta en controladores que manejarán las solicitudes. Una vez que se realiza la creación del controlador, el siguiente paso es tomar medidas. Esto se hace a través del componente del invocador de acciones, que selecciona un método de acción para invocar el Controlador.

Una vez realizada la preparación del resultado de la acción, el siguiente paso es la ejecución del resultado. Se crea un paso de separación para el resultado de la ejecución del resultado. Para un resultado de tipo de vista, la aplicación llamará al motor de vista, y encontrará y ayudará a representar la vista. Si el resultado no es una vista, la ejecución de la acción se realizará por sí sola. Es la ejecución del resultado la que genera la respuesta real a la solicitud HTTP original.

Los desarrolladores saben que la mayoría de los componentes se utilizan para procesar la solicitud. En la mayoría de los casos se está trabajando en los métodos y controladores relacionados con las acciones. Además, se están trabajando diferentes resultados de acciones y visiones. Pero también hay otros componentes dentro del marco de MVC. Puede haber muchas preguntas en la mente sobre cómo se lleva a cabo el flujo de solicitudes a través de los diferentes componentes o el rol del módulo HTTP y el controlador mientras se procesa la solicitud. Siendo el marco MVC un marco de desarrollo web, tiene que haber módulos de los controladores HHTP y HTTP en la canalización MVC del marco.

Muchos componentes están presentes en el ciclo de vida de la página MVC , además del controlador y los métodos de acción.

UrlRoutingModule

Este es un tipo de módulo HTTP. Cada vez que se realiza una solicitud por primera vez, se intercepta a través de UrlRoutingModule. En este módulo, se decide si la aplicación MVC debe manejar la solicitud. UrlRoutingModule selecciona la primera ruta que coincide.

¿Cómo se compara la solicitud con las rutas presentes en la aplicación MVC a través de UrlRoutingModule?

Al observar el método de RegisterRoutes, que se llama desde global.asax, se pueden ver las rutas agregadas a RouteCollection de las rutas. La llamada al método se realiza desde el controlador de eventos en application_start de global.asax.

Fuente

¿Cómo se definen las rutas en el RouteHandler?

Las rutas se definen como métodos de extensión, como se pudo ver en el método del maproute. El controlador de ruta está asociado con todas las rutas.

El método de UrlRoutingModule se define de la siguiente manera.

Fuente

A través de la explicación anterior, se puede saber que UrlRoutingModule conoce todas las rutas que están definidas en la aplicación. Por lo tanto, la ruta correcta puede coincidir con la solicitud en la aplicación.

Un punto importante a tener en cuenta es que el módulo UrlRoutingModule está involucrado en la selección de la primera ruta coincidente. Entonces, cada vez que se detecta la coincidencia, el proceso de escaneo se detiene. Si resumimos lo que sucede en esta etapa, el controlador de ruta se adjunta a las rutas a través de U RLRoutingModule.

Controlador de ruta

Mediante el método de maproute, las rutas se adjuntan a las instancias de MvcRouteHandler. La interfaz IRouteHandler se implementa a través de MvcRouteHandler.

Por lo tanto, el objeto de MvcRouteHandler se usa para obtener una referencia para la cosa de MvcRouteHandler que es el HTTPHandler de la aplicación.

La creación del MvcRouteHandler exige la llamada del método PostResolveRequestCache(). Este método PostResolveRequestCache() se puede definir de la siguiente manera:

Fuente

Por lo tanto, los siguientes eventos ocurren en el método PostResolveRequestCache().

  • Un método GetRouteData() está presente en la propiedad RouteCollection. Se llama al método y se pasa a través de HttpContext.
  • El objeto RouteData se devuelve mediante el método de GetRouteData().
  • una propiedad RouteHandler está contenida en routeData que devuelve el controlador IRouteHandler para la solicitud, que es actual, es decir, el MvcRouteHandler.
  • El método G etHttpHandler() está asociado con el MvcRouteHandler que devuelve una referencia para el MvcHandler.
  • Luego, los controles se delegan a la instancia de MvcHandler.

MvcHandler

El MvcHandler es un controlador normal de HTTP. Como es un manejador del HTTP, se lleva a cabo la implementación del método ProcessRequest(). Este método ProcessRequest() se puede definir como:

Fuente

El método ProcessRequest() se usa para llamar al método ProcessRequestInit() como se define en la siguiente imagen:

Fuente
Los siguientes eventos ocurren en el método ProcessRequest().

  • ControllerFactory se crea llamando al método ProcessRequestInit().
  • ControllerFactory crea el controlador.
  • Se llama al método Execute() del controlador.

ControllerFactory

Se puede observar que ControllerFactory se obtiene a través del método ProcessRequest(). Luego, ControllerFactory se usa para crear el objeto del objeto Controller. La interfaz IControllerFactory es implementada por Controller Factory.

POR DEFECTO, el marco MVC crea el tipo DefaultControllerFactory cuando se usa ControllerBuilder para crear ControllerFactory.

La siguiente línea de código crea ControllerFactory en el método ProcessRequestInit().

Fuente

Controlador

Se ha observado que el objeto Controller se crea en ControllerFactory en el método ProcessRequest() del MvcHandler. El controlador creado contiene los métodos para las acciones que debe realizar el marco. Cada vez que se realiza una solicitud de URL en el navegador, se llama al método para las acciones. Los controladores se crean para que no haya una implementación explícita de la interfaz de IControlle. La clase Controller se utiliza para crear los controladores que proporcionan varias funciones. La clase de controlador puede heredar otra clase de controlador que se llama "ControllerBase" como se define en el código que se muestra a continuación:

Fuente

El ActionInvoker se utiliza para llamar a los métodos de las acciones en el controlador.

Los siguientes eventos ocurren después de la creación del controlador a través de la fábrica de controladores:

  • Llamar al método Execute() de controllerbase.
  • El método ExecuteCore() es llamado por el método Execute() que se declara como abstracto y luego se define a través de la clase Controller.
  • El nombre de la acción se recupera de RouteData a través del método ExecuteCore() de la clase Controller.
  • El método InvokeAction() de ActionInvoker es llamado por el método ExecuteCore().

ActionInvoker

Se utiliza para la selección de acciones.

La clase ActionInvoker tiene algunas responsabilidades importantes que incluyen encontrar un método de acción y luego invocar el método de acción en el controlador.

Los eventos que ocurren cuando se llama al método InvokeAction() de ActionInvoker son:

  • La información sobre el controlador debe ser obtenida por ActionInvoker y la acción que se necesita realizar.
  • El objeto descriptor proporciona esta información.
  • El nombre del controlador y el nombre de la acción los proporciona la clase de descriptor de la acción y el controlador.
  • No está invocando el ActionMethod .

AcciónResultado

El ActionResult es un tipo de la clase abstracta. Al ser un método abstracto, existen diferentes implementaciones para el método ExecuteResult() proporcionadas por las diferentes subclases.

Los siguientes eventos ocurren en ActionResult

  • Hay una invocación de los métodos de OnActionExecuting de los ActionFilters.
  • Invocación de la acción del método.
  • Invocación de los métodos OnActionExecuted de ActionFilters.
  • Hay un retorno de ActionResult desde ActionMethod.
  • Llamar al método ExecuteResult() de ActionResult.

Ver motor

La mayoría de las aplicaciones usan ViewResult como su tipo de devolución. Se representa una vista a través de ViewEngine para el cliente. Desde esta vista, se puede generar el HTML. El HTML se genera a partir de la vista a través de ViewEngine.

Conclusiones

Comprender el papel de cada componente en la aplicación es un paso crucial. De esta manera, se pueden entender las conexiones entre los componentes y su forma de trabajar. Si quiere ser un desarrollador experimentado, dominar sus habilidades es una forma. Puede consultar los cursos de ingeniería de software en línea de upGrad que le brindarán certificación y capacitación experta en el área de desarrollo de aplicaciones y software. El curso está diseñado para profesionales que trabajan tanto para hombres como para mujeres y está certificado por IIIT-B, y obtendrá su estado de ex alumno.

¿Puede explicar el ciclo de vida de la página de MVC?

Cuando se aplica MVC, la aplicación se divide en tres capas: capa de datos o modelo, interfaz de usuario o vista y controlador. Cada capa de MVC tiene una función diferente. Primero, la capa UI o Vista es la interfaz de usuario. Es la interfaz principal entre los usuarios y la aplicación. Es responsable de recibir las entradas de los usuarios y presentar los resultados. Luego, el controlador se conecta a todos los componentes en la capa de vista y procesa la entrada del usuario, envía datos a la capa del modelo y devuelve el resultado al usuario. La capa del modelo es donde se almacenan los datos. Es responsable del control de los datos. Además, una capa de modelo también es responsable de leer y escribir datos en el almacenamiento.

¿Cómo podemos mantener sesiones en MVC?

El marco ASP.NET MVC utiliza el poder del estado de sesión de ASP.NET. El estado de la sesión es un servicio web integrado en la plataforma ASP.NET. Es responsable de mantener todos los objetos, datos y otra información asociada con una sesión determinada. El objeto SessionState mantiene los valores del estado de la sesión. También es responsable de completar y mantener los valores del objeto Sesión. El objeto Session actúa como puerta de entrada al estado de la sesión. Es una propiedad del objeto SessionState y es lo que se usa para almacenar y recuperar los valores del estado de la sesión.

¿Cuántos tipos de filtros hay en MVC?

Los filtros en MVC son los que se encuentran entre el controlador y el modelo y se pueden usar para validar la entrada del usuario o modificar la salida del modelo. Los siguientes son algunos de los filtros en MVC. 1. Filtros de validación: los filtros de validación ayudan a validar la entrada del usuario. 2. Filtros de acción: los filtros de acción ayudan a modificar los resultados del modelo. 3. Filtros de modelo: los filtros de modelo ayudan a modificar los resultados del modelo. 4. Filtros de salida: los filtros de salida se utilizan para modificar la salida del modelo.