Bueno,
explicaremos de una manera general los eventos del ciclo de vida de una
aplicación/sitio web en ASP.NET. Desde que la aplicación/sitio es iniciada en
el servidor web, pasando por la navegación a las distintas páginas, y
deteniendo la aplicación en el servidor web, se ejecutan diferentes eventos los
cuales podemos manejar a nivel de código.
Recordemos
que en ASP.NET existen dos frameworks: Web Forms y MVC. Ambos tienen un ciclo
de vida diferente y por lo tanto eventos diferentes. Sin embargo, nosotros
solamente hablaremos con respecto al framework Web Form.
Una
aplicación/sitio web inicia propiamente su existencia cuando un cliente se
conecta a su página de inicio (es el inicio de una sesión). El servidor web procesa
el código programado de la página solicitada que se ejecuta del lado del servidor.
El servidor crea un instancia (variable objeto de programación) de la página
web solicitada, la completa accediendo a los recursos e información necesarios,
ejecuta todo el proceso lógico de programación y emite como respuesta la página
web en formato HTML al navegador del cliente.
Vemos
como el ciclo de vida de un Web Form es muy corto.
Sin
embargo, la aplicación/sitio web sigue viviendo hasta que todas las sesiones a
las que está dando servicio finalizan. Tras un tiempo sin atender nuevos
eventos en una sesión, el servidor destruye la sesión, y cuando no queda
ninguna activa, finaliza la aplicación web.
Debemos
aclarar que por sesión entendemos una ventana de navegador emitiendo peticiones
a un servidor. Un usuario puede tener múltiples navegadores abiertos y por
tanto múltiples sesiones iniciadas.
- Eventos a nivel de aplicación y de sesión
- Eventos a nivel de página
- Eventos a nivel de control
Veremos estos eventos a continuación.
Eventos a nivel de aplicación y de sesión
Son eventos globales de nuestra aplicación
web, como pueden ser el inicio de la aplicación, finalización de una sesión,
etc. Estos eventos pueden ser manejados en el archivo Global.asax, que aparece al crear un proyecto.
El archivo Global.asax es opcional y nos permite manejar eventos de Aplicación y de Session en nuestra aplicación ASP.NET. El archivo Global.asax reside en el directorio raíz de una aplicación de ASP.NET. Este archivo se compila en tiempo de ejecución, no es accesible por URL y debe ubicarse en el directorio raíz de la solución.
El archivo Global.asax es opcional y nos permite manejar eventos de Aplicación y de Session en nuestra aplicación ASP.NET. El archivo Global.asax reside en el directorio raíz de una aplicación de ASP.NET. Este archivo se compila en tiempo de ejecución, no es accesible por URL y debe ubicarse en el directorio raíz de la solución.
Listado de eventos de aplicación y sesión, y su respectiva descripción:
Eventos a nivel de página
Listado de eventos de página, y su respectiva descripción:
Evento
|
Acción
asociada
|
Application_Start
|
Se
le llama cuando se solicita el primer recurso (por ejemplo, una página) en
una aplicación ASP.NET. Sólo
se llama una vez durante el ciclo de vida.
|
Application_BeginRequest
|
Inicio
petición al servidor (solicitar una página)
|
Application_EndRequest
|
Fin
de petición al servidor (la página ya ha sido solicitada)
|
Application_End
|
Todas
las sesiones de usuario expiran
|
Application_AuthenticateRequest
|
Petición
de autenticación
|
Application_Error
|
La
aplicación lanza un error
|
Session_Start
|
Un
nuevo usuario solicita una página de la aplicación web
|
Session_End
|
Un
usuario deja de hacer peticiones a la aplicación web y su tiempo de sesión
expira.
|
Eventos a nivel de página
Casi siempre originados por una interacción del usuario con
nuestra aplicación web, como el submit de un formulario o pulsar sobre un
enlace.
Evento
|
Acción
asociada
|
Page_PreInit
|
Es
el primer evento que es posible utilizar como
manejador en una página. Generalmente utilizado cuando se crean controles dinámicamente. |
Page_Init
|
Este evento
es lanzado luego que cada control ha sido inicializado. Este evento generalmente
es utilizado para cambiar los valores iniciales de los
controles. |
Page_InitComplete
|
Este
evento es lanzado antes que el ViewState haya sido cargado para la página y
para los controles. Generalmente es usado cuando se necesita ejecutar código
luego de que la página haya sido inicializada.
|
Page_PreLoad
|
Después
de que se provoca este evento, carga el ViewState para la página y para
los controles.
|
Page_Load
|
Los
controles del servidor se cargan en un nuevo objeto de tipo Page. Ahora el
programador puede acceder a la información del ViewState y manejar los
controles de la página, contenido, etc.
|
Page_LoadComplete
|
Todos
los controles han sido cargados.
|
Page_PreRender
|
El
objeto Page va a generarse en código interpretable por el navegador en
cuanto finalice este evento, por lo que podemos hacer modificaciones antes de
que se genere.
|
Page_Render
|
Este método
genera el HTML y los scripts necesarios para el cliente.
|
Page_Unload
|
El
objeto Page deja de ser referenciable, se destruye.
|
Eventos
a nivel de control
Son los eventos propios de los controles. Existen una infinidad de eventos asociados a los controles, y que van desde su propio ciclo de vida, eventos ejecutados por la interacción del usuario y eventos de validación.
Todo control pasa por un ciclo de vida, al igual que una página, y cada etapa tiene eventos que podemos manejar en nuestro código. La cantidad y complejidad de los eventos en el ciclo de vida pueden variar, en dependencia del control a usar.
Ahora, hay otros eventos que son disparados cuando el usuario hace uso de ellos, por ejemplo, al dar click en un botón, seleccionar un elemento de un combo y llenar otro combo según lo seleccionado en el primero, la paginación en una tabla de datos, etc. Todo esto puede ser manejado del lado del servidor y realizar tareas sencillas o complejas.
Otro tipo de eventos son los de validación. Aunque gran parte se maneja del lado del cliente, es posible utilizarlos del lado del servidor. Un ejemplo de evento de validación es cuando se debe verificar si el dato ingresado corresponde a un correo electrónico. Si el valor es válido, se continua con el resto del proceso, sino, se envía un mensaje de validación y el proceso normal no es ejecutado.
Esto de los eventos de control es muy amplio, así que lo vamos a ir viendo conforme construyamos ejemplos que hagan uso de estos eventos. Muchos controles comparten los mismos tipos de eventos, así que no va a ser necesario explicarlos muchas veces. Hay otros que son propios de un tipo de control y algunos podrían manejar procesos complejos. Todo esto lo veremos más adelante, por el momento les dejo solamente una idea.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.