CHAPTER 3 SAMPLE PREPARATION AND ANALYTICAL TECHNIQUES
3.3 Structural analysis techniques
3.3.2 Advanced characterisation techniques
4. El navegador lee la respuesta HTTP y la interpreta como una página Web para el usuario.
Este proceso está representado en la Figura 4-6.
Como desarrollador, estará interesado en conocer lo que sucede tras bambalinas cuando un servidor Web ejecuta una solicitud para una página ASP.NET. La siguiente lista describe el proceso:
5. Cuando el Servicio de Información de Internet (IIS) recibe una solicitud HTTP, utiliza la extensión del nombre del archivo para determinar qué programa de interfaz de programación de aplicación (ISAPI) del servidor ejecutar para procesar la solicitud. Cuando la solicitud es para una página ASP.NET, pasa la solicitud al ISAPI DLL capaz de manejar las solicitudes para páginas de ASP.NET, el cual es aspnet_isapi.dll.
6. El proceso aspnet_isapi.dll pasa la solicitud al proceso trabajador de ASP.NET (aspnet_ wp.exe), el cual cumple la solicitud.
7. El proceso trabajador de ASP.NET compila el archivo .aspx en un assembly y le pide al CLR que ejecute el assembly.
8. Cuando el assembly se ejecuta, toma los servicios de varias clases en la librería de clases del .NET Framework para llevar a cabo su trabajo y genera mensajes para el cliente solicitante.
9. El proceso trabajador de ASP.NET colecta las respuestas generadas por la ejecución de la página Web, crea un paquete de respuesta y lo pasa al proceso aspnet_isapi.dll.
10. Aspnet_isapi.dll reenvía el paquete de respuesta a IIS, el cual a su vez pasa la respuesta a la maquina cliente solicitante.
Antes de la ejecución, cada página ASP.NET es convertida en una clase. Esta clase deriva la mayoría de su funcionalidad de la clase System.Web.UI.Page. La clase Page proporciona algunas propiedades importantes tales como Request, Response, Session y Server.
Ciclo de vida y modelo de evento de una página ASP.NET
Durante su ejecución una página ASP.NET pasa a través de muchas etapas diferentes de procesamiento, cada una de estas etapas va a través de pasos de procesamiento específcos tales como inicialización, carga, código manejador de evento en ejecución e interpretación.
Conforme una página se ejecuta, va a través de varias etapas de procesamiento. La página también dispara algunos eventos con los cuales puede adjuntar un manejador de evento
Solicitud HTTP
Respuesta HTTP
Tome Nota La clase Page proporciona algunos métodos y propiedades importantes que pueden controlar cómo una solicitud de página es procesada. Para la lista completa de métodos y propiedades, mire http://msdn. microsoft.com/en-us/ library/system.web. ui.page.aspx.ETC IBEROÁMERICA
www.pdftron.com
para ejecutar su código personalizado en distintas etapas de procesamiento de la página. Los desarrolladores de ASP.NET deben tener una buena comprensión del ciclo de vida de una página de manera que pueden escribir código que es ejecutado exactamente en la etapa deseada del procesamiento de la página.
La tabla 4.1 enlista las diferentes etapas del ciclo de vida y sus eventos asociados.
Etapa Significado Eventos Asociados
Solicitud de página Cuando una solicitud de página es recibida, se inicia el ciclo de vida de la página. En este punto, ASP.NET decide si la página será fácilmente servida desde la caché o si necesita ser analizada y compilada.
Inicio En esta etapa, se determina si la solicitud es una devolución de datos o una nueva solicitud. Algunas propiedades de la página tales como Request, Response, IsPostBack y UICulture son establecidas en esta etapa.
PreInit
Inicialización Durante la etapa de inicialización, todos los controles en la página son inicializados y se hacen disponibles. Un manejador de evento para el evento Init es el mejor lugar para el código que desea que se ejecute antes de seguir con el procesamiento de la página.
Init
Carga Si la solicitud es una devolución de datos, esta etapa es utilizada para restaurar las propiedades de control con información desde el estado de vista y el estado de control. Un método que maneja el evento Load es el mejor lugar para almacenar el código de inicialización para cualquier control específico para esta página.
Load
Manejador de
evento Postback Si la solicitud es una devolución de datos, el control de los manejadores de evento son llamados, entonces, los valores de entrada son validados y la propiedad IsValid para la clase Page es establecida.
Pre interpretación Esta fase señala que la pagina esta por interpretar sus contenidos. Un manejador de evento para el evento PreRender es la última oportunidad para modificar la salida de la página antes de que sea enviada al cliente.
PreRender
Interpretación En esta etapa, la página llama al método Render para cada control y rellena la respuesta que será enviada al navegador. Tome Nota En un formulario de contacto típico, introduzca información y presione el botón de enviar. Cuando envía esta página, la página puede procesar los datos enviados para tomar alguna acción tal como el almacenamiento de los datos en una base de datos o enviar un correo electrónico. En muchos casos, la página principal es mostrada nuevamente con una confirmación del envío del formulario. Ocurre una devolución de datos cuando la información es publicada a la misma página Web para el procesamiento. Una devolución de datos es distinta a la carga inicial de la página debido a que la página recibe información adicional como datos de formulario como parte del postback de la página.
Tabla 4-1
Etapas importantes en el ciclo de vida de una página ASP.NET
ETC IBEROÁMERICA
Descarga En esta etapa, la respuesta es enviada al cliente y se desempeña la limpieza de la página. Como parte de la limpieza, las propiedades tales como Request y Response son descartadas.
Unload
Cuando desea manejar un evento, debe escribir el código que registra al método para manejar el evento (también llamado manejador de evento) con el evento. Esto se hace generalmente utilizando el patrón de registro de evento común a través del .NET Framework:
object.event += new EventHandler(eventhandler);
Aquí, reemplace object con el nombre del objeto que expone el evento, event con el nombre del evento, y eventhandler con el nombre del método que maneja al evento.
Sin embargo, ASP.NET proporciona seis métodos especiales que son reconocidos como manejadores de evento por defecto y que no necesitan el código de registro. Estos son llamados especialmente métodos Page_Init, Page_Load, Page_DataBind, Page_PreRender y Page_Unload. Estos métodos son tratados como manejadores de evento para los eventos correspondientes expuestos por la clase page. Este evento automático es controlado por el atributo AutoEventWireup de la directiva @Page. Por defecto el valor de este atributo es True, lo cual signifca que estos métodos llamados especialmente son automáticamente enlazados con sus eventos correspondientes.
Æ
Comprender el ciclo de vida de una página ASP.NET
PREPÁRESE. Para ver cuántos eventos diferentes de la clase Page son ejecutados, desempeñe lo siguiente.
1. Crear un nuevo proyecto basado en la plantilla de aplicación web vacía de ASP.NET a la solución Leccion04. Nombre el proyecto como PageEvents.
2. Seleccione Proyecto, Agregar nuevo elemento. Seleccione la plantilla de Formulario Web. Nombre el archivo WebForm1.aspx.
3. En la etiqueta HTML para la página (WebForm1.aspx), asegúrese que el atributo AutoEventWireup para la directiva @Page está establecida como True:
<%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”WebForm1.aspx.cs”
Inherits=”PageEvents.WebForm1” %>
4. Haga clic derecho en la ventana de código y seleccione Ver Código desde el menú para cambiar a la vista de código. Remplace el código en el archivo de código subyacente (WebForm1.aspx.cs) con el siguiente código:
using System;
namespace PageEvents {
public partial class WebForm1 : System.Web.UI.Page {
ETC IBEROÁMERICA
protected void Page_Load
(object sender, EventArgs e) {
Response.Write
(“Mensaje desde Page_Load. <br/>”); }
protected void Page_Init
(object sender, EventArgs e) {
Response.Write
(“Mensaje desde Page_Init. <br/>”); }
protected void Page_PreRender (object sender, EventArgs e) {
Response.Write
(“Mensaje desde Page_PreRender. <br/>”); }
protected void Page_PreInit (object sender, EventArgs e) {
Response.Write
(“Mensaje desde Page_PreInit. <br/>”); }
} }
5. Seleccione Depurar y después Inicie la depuración (o presione F5). La página default.htm se abrirá en un navegador Web. Se mostrará la salida de la página en la Figura 4-7.
Los caracteres<% y %>son utilizados para incrustar bloques de código en la etiqueta HTML de una página. El código dentro de estos bloques de código incrustado es ejecutado durante la etapa de interpretación de la página. En los bloques de código incrustado, la sintaxis <%=expression>es utilizada para resolver una expresión y retornar su valor en el bloque. Por ejemplo, el siguiente bloque de código:
<i><% = DateTime.Now.ToShortDateString() %></i>
Cuando se ejecuta, visualizará la fecha actual en formato de itálicas: 12/01/2010
ETC IBEROÁMERICA
La directiva @Page especifca varios atributos que controlan como el ASP.NET interpreta una página. Por ejemplo, en este ejercicio, los atributos de la directiva @Page especifcan: