Está en la página 1de 17

Introduccin

Como las aplicaciones web no guardan un estado entre las


peticiones, es decir que cada vez que el usuario realiza una
peticin la pgina se carga completamente de nuevo existen
distintas formas de persistir datos entre peticiones de usuarios:
objetos de aplicacin
campos ocultos
objetos de sesin
objetos de cache
cookies, etc.
La diferencia entre las mismas est dada por la visibilidad,
manejo de datos, y tiempo de persistencia.

Cmo elegir cual usar?


Necesitamos saber:
Quien necesita los datos?
Por cuanto tiempo se necesita que se
persistan?
Que tan grande son los datos?

Objetos contenedores de
datos
Mtodo de
Quien necesita? Cuanto tiempo? Cantidad de
persistencia

datos?

Application

Todos

Hasta que la
Casi cualquier
siguiente aplicacin tamao.
comience.

Cookie

Usuario

El tiempo que se
desee si no se
borra.

Poco, datos
simples.

Form Post

Usuario

Para la prxima
peticin.

Cualquier tamao.
Los datos viajan
con la pagina.

QueryString

Usuario o grupo de Para la prxima


usuarios.
peticin.

Session

Usuario

Poco, datos
simples.

Mientras el usuario Casi cualquier


este activo, ms el tamao
timeout.

Objetos contenedores
Mtodo de
persistencia

Quien necesita? Cuanto tiempo? Cantidad de


datos?

Cache

Todos los
usuarios.

Por el tiempo
Todo tipo.
que se necesite.

Context

Usuario

Solo en la
peticion.

Gran tamao.

ViewState

Usuario

Un formulario Web

Minimo, estos datos


son enviados y
recibidos con cada
pgina.

Config file

Todos

Hasta que el archivo Puede contener


de configuracin
gran cantidad de
sea actualizado.
datos.

Application
El objeto Application provee un lugar ideal para guardar datos
de uso frecuente los cuales rara vez cambian en la aplicacin.
Ejemplo:
Application.Lock();
Application[Valor]= txtValue.Text;
Application.UnLock();

Cookies
Son tiles cuando el usuario necesita un dato muy particular.
No deben de ser usadas para datos crticos ya que pueden ser
borradas por el usuario.
Cantidad de datos limitados. Lo mejor es guardar Keys y el
resto de la informacin en base de datos.

Cookies
//crear una cookie y agregarla a la coleccin.
HttpCookie mCookie = new HttpCookie(miCookie");
mCookie.Value = DateTime.Now.ToString();
mCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(mCookie);
//Eliminar
mCookie.Expires

= DateTime.Now.AddDays(-1)

//Leer una cookie


lblResult.Text = El valor de la cookie es: " +
Request.Cookies[miCookie].Value

Form Post / Campo oculto


Esta tcnica era mas usada en Asp, en Asp.Net como los
controles son capaces de guardar su estado, esta tcnica ya
no es muy utilizada.

Inline-code
<input type=hidden" name=usuario" value="<%#
TxtUsuario.Text %>" >
Para leerloOculto.Text =
TxtCampoOculto.Text =
Context.Request.Form["TxtCampoOculto"].ToString();

QueryString
Los datos guardados en el objeto QueryString son utilizados
por un solo usuario.
Es un buen modo de enviar informacin entre formularios.

Request.QueryString[Valor].ToString
();

Session
Sus datos pertenecen a un usuario en particular.
Viven mientras el usuario contine haciendo peticiones, ms un
un timeout (por defecto 20 min.)
Pueden guardar grandes o pequeas cantidades de datos.
Su uso debe de tratar de restringirse si se desea un buen
rendimiento con muchos usuarios.

Session
//Cargar un valor en variable de session.
Session[Valor] = txtValue.Text;
//Asignar valor de variable de session.
lblResult.Text =
Session[Valor].ToString();
/*Se puede optimizar un poco el
rendimiento de una pagina indicando si la
misma no utilizara objetos de session o
solo leera de los mismos.*/
<%@ Page
EnableSessionState="false" %>

Session
Las sesiones en Asp.Net se configuran en el Web.config o en
el Machine.config.

<system.web>
<sessionState timeout="10"
cookieless=UseCookies"
mode="Inproc" />
</system.web>

Cache
Puede contener grandes cantidades de datos.
La pueden utilizar uno o varios usuarios.
Puede persistir por largos perodos de tiempo, pero no al
restart de la aplicacin.

//Agregar item al cache


Cache[valor]= miValor;
//Leer un item
Response.Write(Cache[valor])
;

Context
Maneja datos para un solo usuario, durante una sola peticin.
Puede contener grandes cantidades de datos, pero se utiliza
generalmente con pocos ya que se implementa en cada
peticin.
Context.Items[valor] = miValor;
Response.Write(Context.Items [valor]);

ViewState
Guarda el estado de la informacin para un solo usuario por el
tiempo que trabaje con la pgina.
Puede guardar grandes cantidades de datos
Los datos viajan con cada peticin y respuesta.
Puede ser deshabilitado para toda la pgina agregando:

EnableViewState="false" en la directiva
Se declara:
ViewState[miEstado]=txtNombre.Text;
Se lee:
Label.Text=ViewState[miEstado].ToString();

@Page.

ViewState vs Session
Session
Almacena los
S
recursos del
servidor?
Se agota el tiempo S; transcurridos 20
de espera?
minutos (valor
predeterminado)
Almacena algn
S
tipo de .NET?

Aumenta la "carga No
HTML"?

ViewState
No

No

No; presenta
compatibilidad
limitada con
cadenas, enteros,
operadores
booleanos, matrices,
ArrayList.
S