You are on page 1of 12

Unidad 3

Implementando aplicaciones web

alumno
2015
Unidad 3

Unidad 3: Implementando
aplicaciones web
Objetivos

Controlar las peticiones al servidor desde una pgina web.


Entender la implementacin de estados en el desarrollo de aplicaciones web.

Introduccin

CONTROLAR LOS EVENTOS DEL CICLO DE VIDA DE UNA PAGINA

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.

2) El parseador ASP.NET interpreta el cdigo fuente.

3) Si el cdigo no se ha compilado todava en una biblioteca de enlace dinmico


(DLL), ASP.NET invoca el compilador.

4) El CLR carga y ejecuta el cdigo Microsoft intermediate language (MSIL).

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.

2) El CLR carga y ejecuta inmediatamente el cdigo MSIL que ya se ha compilado


durante el primer intento de acceso del usuario.

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.

Controles de evento de cach. Estos eventos se producen en la vista y sern


procesados en el servidor cuando se enve la informacin mediante un
evento de envo. Por ejemplo el seleccionar un elemento de una lista
provoca un cambio de estado de la misma que posteriormente, en el
servidor, podremos obtener. Controles con eventos de cach son TextBox,
DropDownList, CheckBox...

alumno 4
Unidad 3

Controles de evento de validacin. Son los eventos que se procesan dentro


de la pgina web. El ejemplo tpico es la validacin de que un campo de
entrada est vaco o no cuando es obligatorio, usando capacidades de
validacin del propio componente.

La accin de eventos de una pgina podemos visualizarla en el siguiente grfico:

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.

IMPLEMENTAR EL ALMACENAMIENTO EN CACHE

El almacenamiento en cach es un mtodo de recuperacin de datos desde una lista de


almacenamiento (memoria cach) en lugar de utilizar los recursos para generar cada vez
que se necesita la misma informacin. El uso de la cach es mucho ms rpido para
recuperar la informacin y generalmente se recomienda esta prctica para las
aplicaciones ms modernas.
El almacenamiento en cache en la versin ASP .net 4.0 aporta un amplio abanico de
posibilidades para aumentar el rendimiento, disminuir consumos de CPU y recursos en
memoria de nuestras aplicaciones Web controlando el almacenamiento del HTML
generado.
La utilizacin de las variables de cache es muy similar al de las variables de sesin o
aplicacin. Veamos un ejemplo en el que se guarda en una variable de cache el momento
en que la hemos guardado, y posteriormente recogemos ese momento y lo guardamos
en una variable DateTime:

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;
}

Como podemos comprobar en el cdigo anterior, lo que estamos haciendo es recuperar


la consulta de la memoria cache. Si no existe el objeto Cache[consulta], lo que
haremos ser recuperarlo de la base de datos y almacenarlo, por el contrario, si existe
el objeto Cache, lo que haremos ser recuperar la consulta de la base de datos de la
memoria.

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.

El objeto Cache proporciona una gestin automtica de bloqueos para los


elementos que se encuentran en la cach, por lo tanto, las peticiones
simultneas de un mismo elemento no pueden modificar el objeto.

ASP.NET elimina regularmente y de forma automtica elementos de la cach.

Las funciones callback son cdigo que se ejecuta cuando se elimina un elemento
de la cach.

Si un elemento en una cach tiene una dependencia con otro elemento en la


cach o en un archivo, podemos configurar el objeto Cache para que ese
elemento se elimine cuando la dependencia cumpla determinados
requerimientos.

Cache de resultados de pginas

El almacenamiento en la cach de pginas permite almacenar contenido dinmico en la


cach. Cuando se solicita por primera vez un formulario Web Form, la pgina se compila
y se almacena en la cach de resultados, y est disponible para la prxima peticin. Esta
pgina en cach se elimina cuando el archivo fuente se modifica o se alcanza el tiempo
de expiracin de la cach. En ocasiones, es poco viable almacenar en cach una pgina
completa, pues es posible que algunas partes de la pgina deban crearse dinmicamente
para cada peticin.
Para cargar una pgina en la cach de resultados, debemos agregar la directiva
OutputCache al formulario Web Form. La directiva OutputCache incluye dos
propiedades:
Una propiedad Duration que establece en segundos el tiempo mximo de
almacenamiento en cach para la pgina

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"%>

La propiedad VaryByParam se utiliza para determinar si ASP.NET debera crear distintas


versiones de la pgina en cach en situaciones en las que las peticiones de la pgina
pasen parmetros especficos. Establecer la propiedad VaryByParam en "none" significa
que nicamente se almacenar en cach una versin de la pgina.
Establecer la propiedad con el valor * significa que cualquier variacin de los
parmetros de la pgina generar una nueva versin de la pgina almacenada en la
cach.
Identificar uno o ms parmetros significa que nicamente los cambios a estos
parmetros producirn nuevas pginas almacenadas en la cach.

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.

Estado del servidor

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"];
}

Variables de aplicacin: Su informacin es compartida por todos los clientes. La


informacin es almacenada en el servidor.
Almacenar un valor:
string informacion = "Valor almacenado";

Application["Variable"] = informacion;

Recuperar un valor:
string informacion = "";
if (Application["Variable"] != null)
{
informacion = (string) Application["Variable"];
}

Estado en el cliente

La mayora de aplicaciones Web utilizan cookies para la administracin del estado en el


lado del cliente. Una cookie es una pequea cantidad de datos que se almacena en un
archivo de texto en el sistema de archivos del equipo cliente o en memoria en la sesin

alumno 10
Unidad 3

cliente-navegador. Podemos utilizar cookies para almacenar informacin sobre un


determinado cliente, sesin o aplicacin. Las cookies se almacenan en el equipo cliente,
y cuando el navegador solicita una pgina, enva la informacin de la cookie, junto con
la informacin solicitada. El servidor est autorizado a leer la cookie y extraer su valor.
Existen dos tipos de cookies:
Temporales: Las cookies temporales, tambin denominadas cookies de sesin o
no persistentes, existen nicamente en la memoria del navegador. Cuando el
navegador se cierra, las cookies temporales que se han aadido son eliminadas
automticamente.

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.

Tambin existe un lmite sobre cunta informacin puede almacenarse en una


cookie ya que los equipos cliente tienen restricciones en el tamao de los
archivos. Adems, cada cookie individual puede contener una cantidad limitada
de informacin, no ms de 4 kilobytes (KB). Las Cookies solamente pueden
almacenar informacin de cadenas de texto (string).
Los usuarios tambin pueden decidir eliminar cookies de su equipo antes de que
stas expiren, por lo tanto, no existe una garanta de que una cookie persistente
permanecer en el equipo de un usuario durante el periodo de tiempo
especificado. Las cookies son menos seguras si las comparamos con las opciones
de administracin del estado en el lado del servidor. Las cookies tambin estn
sujetas a la manipulacin, ya que los usuarios pueden manipular cookies en su
equipo.
Para almacenar la informacin en el cliente podemos utilizar Cookies o ViewState de la
pgina.
Su sintaxis es la siguiente:
Variables Cookies: Son almacenadas en explorador del cliente. La informacin
es diferente para cada uno de los usuarios. Pueden ser persistentes, pero el
usuario puede eliminar las cookies del explorador.

Almacenar un valor:
HttpCookie cookie = new HttpCookie("informacion");
cookie.Value = "Texto almacenado en Cookie";
Response.Cookies.Add(cookie);

Recuperar un valor:

string informacion = Request.Cookies["informacion"].Value;

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:

string informacion = "Valor almacenado";

ViewState["Variable"] = informacion;

Recuperar un valor:

string informacion = "";


if (ViewState["Variable"] != null)
{
informacion = (string) ViewState["Variable"];
}

Realizar Laboratorio: Almacenar favoritos ViewState

alumno 12

You might also like