Compartir a través de


Procesamiento de páginas de formularios Web Forms

En general, el ciclo de vida de una página de formularios Web Forms es similar al de cualquier proceso Web que se ejecuta en el servidor. Algunas características de procesamiento Web, como la información pasada a través del protocolo HTTP, el hecho de que las páginas Web no tengan estado, etc., se aplican a las páginas de formularios Web Forms de la misma forma que a la mayoría de aplicaciones Web.

Sin embargo, el marco de trabajo de página ASP.NET realiza por sí sola muchos servicios de aplicación Web. Por ejemplo, el marco de trabajo de página ASP.NET captura la información enviada con la página de formularios Web Forms, extrae los valores importantes y hace que la información sea accesible a través de las propiedades del objeto.

Es importante entender la secuencia de eventos que tiene lugar cuando se procesa una página de formularios Web Forms. Este conocimiento le ayudará a programar sus páginas de formularios Web Forms y aplicaciones Web de manera más eficiente.

El ciclo de vida de una página de formularios Web Forms

Puede serle útil comprender ciertas características fundamentales sobre cómo trabajan las páginas de formularios Web Forms en las aplicaciones Web antes de examinar los detalles de lo que sucede en una página cuando ésta se procesa.

Acciones de ida y vuelta

Uno de los conceptos principales que debe comprender es la división del trabajo en una página de formularios Web Forms. El explorador presenta el formulario al usuario y éste interactúa con él, causando que el formulario se envíe de vuelta al servidor. Sin embargo, como todo procesamiento que interactúa con componentes de servidor debe ocurrir en el servidor, esto significa que, para cada acción que necesita procesamiento, el formulario debe enviarse al servidor, procesarse y ser devuelto al explorador. Esta secuencia de eventos se conoce con el nombre de acción de ida y vuelta.

Nota  ** **Puede crear una secuencia de comandos de cliente en formularios Web Forms, que puede serle útil para validar la introducción de datos por el usuario y para algunos tipos de programación de UI. La secuencia de comandos de cliente no interactúa con los componentes de servidor.

Imagine un escenario empresarial: un usuario introduce un pedido y usted desea confirmar si existe inventario suficiente para el pedido, por lo que su aplicación envía la página al servidor en un punto determinado del proceso de entrada del pedido del usuario. Un proceso de servidor examina el pedido, realiza una búsqueda en el inventario, quizás realice alguna acción definida en la lógica de negocio (como modificar la página para indicar un error) y devuelve la página al explorador para que el usuario continúe.

Acción de ida y vuelta

En los formularios Web Forms, la mayoría de las acciones del usuario, como hacer clic en un botón, dan como resultado una acción de ida y vuelta. Por dicha razón, los eventos disponibles en los controles de servidor ASP.NET suelen limitarse a eventos de tipo clic. La mayoría de los controles de servidor exponen un evento Click, que requiere una respuesta explícita del usuario.

Por la misma razón, los controles de servidor no exponen eventos que se producen con mucha frecuencia, como, por ejemplo, onmouseover, porque cada vez que se produce un evento, ocurre una nueva acción de ida y vuelta al servidor, lo que afecta considerablemente al tiempo de respuesta del formulario.

Volver a crear la página (estado de vista y administración de estado)

En cualquier escenario Web, las páginas se vuelven a crear con cada acción de ida y vuelta. Tan pronto como el servidor termina de procesar y enviar la página al explorador, descarta la información de la página. Mediante la liberación de recursos de servidor después de cada petición, se puede ajustar una aplicación Web para que admita cientos o miles de usuarios simultáneos. La siguiente vez que se envía la página, el servidor empieza a crearla y procesarla y, por esta razón, se dice que las páginas Web no tiene estado, ya que los valores de las variables y controles de una página no se conservan en el servidor.

**Nota   **Se puede configurar el servidor para que almacene la información de la página en la memoria caché y así optimizar las páginas, pero para el objetivo de la programación de aplicaciones, es mejor pensar que se eliminan tan pronto como el servidor ha terminado de procesarlas.

En una aplicación Web tradicional, la única información que tiene el servidor sobre el formulario es aquella que ha agregado el usuario a los controles del formulario, porque dicha información es enviada al servidor con el formulario. Cualquier otro tipo de información, como los valores de las variables y la configuración de las propiedades, se elimina.

ASP.NET soluciona estas limitaciones de las siguientes formas:

  • Guarda la página y las propiedades de los controles entre las acciones de ida y vuelta. Esto se conoce como guardar el estado de vista del control*.*
  • Proporciona servicios de administración de estado para que pueda guardar su propia información sobre las variables e información específica de la aplicación o de la sesión entre acciones de ida y vuelta.
  • Puede detectar cuándo es pedido un formulario por primera vez y cuándo es enviado, lo que le permite programar de manera conveniente. Puede desear un comportamiento diferente durante la devolución de datos de la página y durante la petición inicial.

Ventajas de un modelo orientado a eventos contra un modelo de procesamiento lineal

Si ya tiene experiencia en el uso de ASP (Active Server Pages, páginas Active Server), sabrá que ASP es un modelo de programación lineal. Una página ASP se procesa en una secuencia de arriba abajo. Cada línea de código ASP y HTML estático se procesa en secuencia tal y como aparece en el archivo. Las acciones del usuario hacen que la página se envíe al servidor en una acción de ida y vuelta. Por esta razón, el servidor debe volver a crear la página. Una vez que la página se ha creado de nuevo, se procesa en la misma secuencia de arriba abajo anterior. Por lo tanto, la página no muestra un comportamiento real de orientación a eventos. Para que esté orientada a eventos, es necesario diseñarla explícitamente. Además, tiene que mantener explícitamente el estado de la página y de los controles al más bajo nivel. Este modelo limita la riqueza de las interfaces de usuario que se pueden ensamblar y aumenta la complejidad del código.

En comparación, un modelo orientado a eventos, como es el caso de una aplicación de Visual Basic tradicional, contiene elementos programables que se inicializan y se muestran en el formulario. El usuario interactúa con los elementos, lo que produce eventos que, por turnos, llaman a los controladores de eventos. Este modelo admite un comportamiento real de orientación a objetos que, mediante diseño, aumenta la riqueza de las interfaces de usuario que se pueden ensamblar y reduce la complejidad del código.

ASP.NET reemplaza el modelo de procesamiento lineal de ASP emulando el comportamiento de un modelo orientado a eventos. El marco de trabajo de página ASP.NET sirve para realizar implícitamente las asociaciones de un evento a un controlador de evento. Mediante el marco de trabajo de páginas se puede crear fácilmente una interfaz de usuario que reaccione a las acciones del usuario. Para obtener información detallada sobre la creación y utilización de eventos y controladores de eventos, vea Control de eventos de servidor en páginas de formularios Web Forms.

Adicionalmente, este mismo marco de trabajo facilita la implementación de la administración de estado de la página y los controles. Para obtener más información sobre la administración de estado, vea Administración del estado de los formularios Web Forms.

Por ejemplo, ASP.NET le permite configurar controladores de eventos en el código de servidor para los eventos que se pasan desde el explorador. Imagine que el usuario está interactuando con una página de formularios Web Forms que contiene un único control de servidor de botón. El usuario hace clic en el control de botón y se produce un evento que se transmite al servidor mediante un envío HTTP, donde el marco de trabajo de página ASP.NET interpreta la información enviada y asocia el evento producido a un controlador de evento apropiado. Este controlador de evento puede ser un controlador predeterminado proporcionado por ASP.NET o una implementación personalizada. El marco de trabajo llama automáticamente al controlador de evento correspondiente al botón como parte del procesamiento normal del marco de trabajo. Como resultado, ya no necesita diseñar explícitamente un comportamiento orientado a eventos en un modelo de procesamiento lineal. Para obtener más información sobre el control de eventos en formularios Web Forms, vea Modelo de eventos de controles de servidor ASP.NET.

Fases del procesamiento de formularios Web Forms

El marco de trabajo de página ASP.NET procesa las páginas de formularios Web Forms en distintas fases. Durante cada fase del procesamiento de formularios Web Forms, se pueden producir eventos, por lo que se ejecutará el controlador de evento correspondiente. Dichos métodos le proporcionan puntos de entrada, enlaces, que le permiten actualizar el contenido de la página de formularios Web Forms.

La tabla siguiente muestra una lista de las fases más comunes del procesamiento de página, los eventos que se producen y los usos más frecuentes de cada fase. Estas fases se repiten cada vez que se solicita o se envía el formulario. La propiedad Page.IsPostBack le permite probar si la página está siendo procesada por primera vez.

**Nota   **Existen más fases de procesamiento de una página de formularios Web Forms que las que aparecen en la lista siguiente. Sin embargo, no se utilizan en la mayoría de los escenarios de procesamiento de páginas. Las usan fundamentalmente los controles de servidor de la página de formularios Web Forms para tareas de inicialización y procesamiento. Si intenta escribir sus propios controles de servidor ASP.NET, necesitará un conocimiento más profundo de dichas fases. Para obtener información detallada acerca de todas las fases de procesamiento de páginas, vea Programar controles de servidor de ASP.NET.

Fase Significado Usos típicos
Inicialización del marco de trabajo de página ASP.NET Se produce el evento Page_Init de la página y se restaura el estado de vista de la página y los controles. Durante este evento, el marco de trabajo de página ASP.NET restaura las propiedades de los controles y de los datos devueltos.
Inicialización del código de usuario Se produce el evento Page_Load de la página. Leer y restaurar valores almacenados previamente:
  • Usar la propiedad Page.IsPostBack para comprobar si es la primera vez que se procesa la página.
  • Si es la primera vez, realizar enlace de datos inicial.
  • Si no, restaurar los valores de los controles.
  • Leer y actualizar las propiedades de los controles.
Validación El método Validate de cualquier control de servidor Web de validación permite ejecutar la validación especificada del control. (En esta fase no existe ningún enlace de usuario. Puede probar el resultado de la validación en un controlador de evento).
Control de eventos En esta fase, si la página fue llamada en respuesta a un evento del formulario, se llama al controlador de evento correspondiente. Realizar el procesamiento específico de la aplicación:
  • Controlar el evento producido.

    Nota   Los eventos no se producen en un orden concreto, exceptuando los eventos de controles almacenados en memoria caché, que se especifican en la propiedad AutoPostBack del control y que siempre se procesan antes de enviar el evento.
  • Si la página contiene Tipos de validaciónTipos de validación para controles de servidor ASP.NET, comprobar la propiedad IsValid de la página y de cada control de validación.
  • Guardar de forma manual el estado de las variables de la página que está manteniendo usted mismo.
  • Compruebe la propiedad IsValid de la página o de los controles de validación individuales.
  • Guardar de forma manual el estado de los controles que se agregan dinámicamente a la página.
Limpieza Se llama al evento Page_Unload porque la página ha terminado de procesarse y está lista para ser eliminada. Realizar el trabajo de limpieza final:
  • Cerrar archivos.
  • Cerrar conexiones a bases de datos.
  • Eliminar objetos.

    Nota   Es importante que los recursos caros, como las conexiones de base de datos, se cierren explícitamente. En caso contrario, se mantendrán abiertas hasta que ocurra la siguiente recolección de elementos no utilizados. En un servidor muy cargado, el hecho de tener muchos recursos abiertos puede afectar al rendimiento.

Vea también

Introducción a la validación de los datos proporcionados por el usuario en formularios Web Forms | Acceso a datos en las páginas de formularios Web Forms | Modelo de eventos de controles de servidor de ASP.NET | Introducción a la administración del estado de formularios Web Forms | Administración de estado de ASP.NET | Páginas de formularios Web Forms