Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
alumno
2015
Unidad 3
Unidad 3: Implementando
aplicaciones web
Objetivos
Introduccin
Cuando hacemos una peticin al servidor desde una pgina Asp .Net se realizan una
serie de acciones hasta que el servidor devuelve una respuesta al usuario. Dichas
acciones delimitan el ciclo de vida de una pgina asp .net.
alumno 2
Unidad 3
Cuando el cliente solicita una pgina Web por primera vez, se genera el siguiente
conjunto de acciones:
1) El navegador cliente enva una solicitud POST HTTP al servidor.
Cuando el usuario invoca la misma pgina Web por segunda vez, se genera el siguiente
conjunto de acciones:
1) El navegador cliente enva una solicitud POST HTTP al servidor.
Dentro de este ciclo de vida, se realizan una serie de acciones, llamadas eventos, que
devolvern una respuesta al cliente despus de una peticin al servidor.
Los eventos en ASP.NET se dividen en tres grupos:
alumno 3
Unidad 3
Eventos a nivel de aplicacin: Son eventos globales de nuestro sitio web, como
por ejemplo el inicio de la aplicacin o la finalizacin de una sesin.
Eventos a nivel de pgina. Son normalmente ejecutados por la peticin de un
usuario, como el envio de un formulario con submit o al pulsar sobre un enlace.
Eventos a nivel de servidor. Son los eventos propios de los controles de servidor
de los Web Forms
Los eventos de una pgina ASP .NET son los siguientes:
Para controlar los eventos del ciclo de vida de una pgina, debemos conocer como
interacta con los controles de servidor que existan en su interior.
Controles de evento de envo: Son los eventos lanzados por controles que
emiten un envo (post) al servidor de manera inmediata para procesar el
Web Form. Por ejemplo, al enviar un formulario pulsando sobre el botn
de accin. Estos controles son: Button, LinkButton e ImageButton.
alumno 4
Unidad 3
Los eventos de control se realizarn a peticin del usuario, segn sus acciones en la
pgina, mientras que el evento Page Load siempre se realizar en el lado del servidor.
Cache["horaactual"] = DateTime.Now;
//Cdigo de implementacin
DateTime fechaactual = DateTime.Parse(Cache["miprimeraVariable"].ToString());
alumno 5
Unidad 3
ASP.NET proporciona un motor de cach completo que puede utilizarse para almacenar
y recuperar elementos de informacin. El objeto Cache simplemente almacena una
referencia a esos objetos y proporciona un proceso para realizar el seguimiento de sus
dependencias y establecer las polticas de expiracin.
El proceso para utilizar el objeto Cache es:
Una pgina solicita un elemento que se ha identificado como almacenado en el
objeto Cache.
ASP .NET comprueba el objeto Cache y utiliza la versin en cach si est
disponible.
Si no hay una versin en cach disponible, ASP .NET vuelve a crear el elemento,
lo utiliza y lo almacena en el objeto Cache para utilizarlo en el futuro.
ASP.NET crea un nico objeto Cache por cada aplicacin Web. El ciclo de vida de la cach
es el mismo que el de la aplicacin Web. Cuando la aplicacin Web se reinicia, la cach
vuelve a crearse. El objeto Cache puede utilizarse para almacenar informacin que
tambin podra almacenarse en variables de aplicacin. El objeto Cache utiliza pares
clave-valor para almacenar y recuperar objetos.
La clave es la cadena de la clave de la cach utilizada para referenciar el objeto. El valor
es el objeto a almacenar en la cach. En el caso ms simple, almacenar un elemento en
la cach y recuperarlo es exactamente igual que agregar un elemento a un diccionario.
Un uso eficiente de cache nos puede permitir almacenar datos en la memoria para,
posteriormente recuperarlo, sin necesidad de acceder a su origen.
Pongamos como ejemplo una consulta de datos de Linq. Si almacenamos el resultado
de la consulta en cache, podremos recuperarlo en cualquier momento de la memoria
sin necesidar de acceder de nuevo a la base de datos.
public IQueryable<Tabla> RecuperarDatos()
{
IQueryable<Tabla> consulta;
if (Cache["consulta"] == null)
{
BBDDDataContext contexto = new BBDDDataContext();
consulta = from datos in contexto.Tabla
select datos;
Cache.Insert("consulta", consulta, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
}
else
{
consulta = (BBDDDataContext)Cache["consulta"];
}
return consulta;
}
alumno 6
Unidad 3
En el primer parmetro asignamos el nombre de esa variable de cache.
En el segundo, ubicamos la propia variable a almacenar.
El tercer parmetro define ciertas dependencias de la cache, pero en nuestro sencillo
ejemplo no nos interesa y le damos un valor de null.
En cuanto al cuarto parmetro, definimos el tiempo absoluto de caducidad de la variable
de cache. En nuestro caso, caducar 5 minutos despus de haberla creado.
El ltimo parmetro es el tiempo relativo de caducidad, que es el tiempo que pasa desde
la ltima vez que hemos accedido a la variable de cache. Por ejemplo, si hubiramos
indicado un tiempo relativo de 5 minutos, la variable hubiera caducado 5 minutos
despus de la ltima vez que se ha accedido a esa variable de cache.
Las ventajas de utilizar el objeto Cache son:
Es mucho ms rpido recuperar un elemento almacenado en memoria que
volver a generarlo.
Las funciones callback son cdigo que se ejecuta cuando se elimina un elemento
de la cach.
alumno 7
Unidad 3
Una propiedad VaryByParam que determina cundo crear una nueva copia de la
pgina en la cach, basndose en parmetros pasados a la pgina.
El uso del almacenamiento en la cach de resultados para almacenar las pginas del sitio
Web accedidas con mayor frecuencia puede reducir considerablemente el tiempo de
respuesta de la pgina del servidor Web. Podemos especificar el valor de tiempo de
expiracin de la cach para una pgina estableciendo la directiva de pginas
OutputCache.
Por ejemplo, para almacenar en cach una pgina ASP.NET durante 15 minutos,
debemos agregar la siguiente directiva de pginas OutputCache a la pgina .aspx:
<%@ OutputCache Duration="900" VaryByParam="None"%>
ADMINISTRAR EL ESTADO
ASP.NET ofrece una administracin del estado que guarda informacin en el servidor
entre pginas, lo que ayuda a mantener la continuidad de la informacin del usuario
durante una visita a un sitio Web.
Si se mantiene el estado entre pginas, la informacin suministrada originalmente por
los usuarios puede ser reutilizada, de esa forma, los usuarios no necesitan volver a
introducir la misma informacin varias veces cada vez que se enva una pgina de nuevo
al servidor.
ASP.NET proporciona dos tipos de administracin del estado que pueden utilizarse para
mantener el estado entre envos y respuestas al servidor. La eleccin de uno de los dos
tipos de administracin del estado disponibles en ASP.NET depende principalmente de
la naturaleza de la aplicacin Web.
Los dos tipos de administracin del estado son:
Estado en el lado del servidor: Las opciones de la administracin del estado en el lado
del servidor utilizan recursos del servidor para almacenar la informacin del estado. La
seguridad de estas opciones es mayor que en el lado del cliente.
Estado en el lado del cliente: La administracin del estado en el lado del cliente no utiliza
recursos del servidor para almacenar la informacin del estado. Las opciones en el lado
alumno 8
Unidad 3
del cliente tienden a tener seguridad mnima, pero ofrecen un rpido rendimiento del
servidor porque no existe demanda en el servidor para mantener el estado.
Los estados de aplicacin y de sesin son dos de las opciones que permiten administrar
el estado en el lado del servidor.
ASP.NET proporciona el estado de aplicacin utilizando una instancia de la clase
HttpApplicationState para cada aplicacin Web activa. El estado de aplicacin es un
mecanismo de almacenamiento global al que se puede acceder desde todas las pginas
de la aplicacin Web, y por lo tanto, es til para almacenar informacin del usuario que
debe preservarse entre transferencias al servidor y peticiones entre pginas.
El estado de la aplicacin es una estructura compuesta por elementos de tipo clave-valor
que se crea en cada peticin a una URL especfica. Podemos agregar la informacin
especfica de la aplicacin a esta estructura para almacenarla entre peticiones de
pginas. Despus de agregar la informacin especfica de aplicacin al estado de la
aplicacin, el servidor la gestiona y administra.
ASP.NET proporciona las variables de aplicacin que mantienen el estado de aplicacin.
Los datos ideales para insertar en variables de aplicacin son los datos compartidos por
mltiples sesiones y que no son modificados regularmente.
ASP.NET proporciona el estado de sesin utilizando una instancia de la clase
HttpSessionState para cada sesin de aplicacin Web activa. El estado de sesin es
similar al estado de aplicacin, diferencindose en que est limitado a la sesin actual
del navegador. Si diferentes usuarios estn utilizando una aplicacin Web, cada usuario
tendr un estado de sesin distinto. El estado de sesin est almacenado como una
estructura de diccionario clave-valor que se utiliza para almacenar informacin
especfica de la sesin que debe mantenerse entre transferencias de pginas al servidor
y entre peticiones de pginas.
alumno 9
Unidad 3
Cada sesin de aplicacin Web activa est identificada y monitorizada utilizando una
cadena SessionID de 120 bits que nicamente contiene los caracteres ASCII permitidos
en las URLs.
La administracin del estado en el lado del servidor requiere que una cookie almacene
la SessionID en el equipo cliente. La vida de una SessionID es muy breve, por lo que no
se utiliza para un almacenamiento a largo plazo. Si deseamos implementar el
almacenamiento a largo plazo de la informacin de sesin del usuario, debemos requerir
a los usuarios que introduzcan su informacin personal, y deberemos implementar
nuestra propia solucin de almacenamiento utilizando una base de datos que almacene
permanentemente la informacin personal de usuarios registrados.
Para administrar elementos persistentes en la informacin del servidor se utiliza la
siguiente sintaxis:
Variables de sesin: Su informacin es diferente para cada cliente. La
informacin es almacenada en el servidor.
Almacenar un valor:
string informacion = "Valor almacenado";
Session["Variable"] = informacion;
Recuperar un valor:
string informacion = "";
if (Session["Variable"] != null)
{
informacion = (string)Session["Variable"];
}
Application["Variable"] = informacion;
Recuperar un valor:
string informacion = "";
if (Application["Variable"] != null)
{
informacion = (string) Application["Variable"];
}
Estado en el cliente
alumno 10
Unidad 3
Persistentes: Cuando un navegador solicita una pgina que crea una cookie
persistente, ste guarda esa cookie en el disco duro del usuario. Podemos crear
una cookie persistente que dure meses, o incluso aos, en el equipo cliente. Con
Microsoft Internet Explorer, las cookies persistentes se almacenan en un archivo
denominado nombreusuario@nombredominio.txt, que se crea en el disco duro
del cliente.
Almacenar un valor:
HttpCookie cookie = new HttpCookie("informacion");
cookie.Value = "Texto almacenado en Cookie";
Response.Cookies.Add(cookie);
Recuperar un valor:
alumno 11
Unidad 3
Variables ViewState: Son almacenadas en el explorador del cliente. La informacin es
diferente para cada uno de los usuarios. La informacin se mantiene activa para cada
una de las pginas. No se puede compartir la informacin entre las pginas.
Almacenar un valor:
ViewState["Variable"] = informacion;
Recuperar un valor:
alumno 12