0% encontró este documento útil (0 votos)
43 vistas18 páginas

Gestión del Estado en ASP.NET Web Apps

Este documento describe diferentes mecanismos para gestionar el estado en aplicaciones web ASP.NET, incluyendo el uso de parámetros URL, elementos ocultos, cookies, variables de aplicación y variables de sesión. Explica cómo almacenar y recuperar información en cada uno de estos mecanismos para mantener el estado entre peticiones del cliente.

Cargado por

Alex Mina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas18 páginas

Gestión del Estado en ASP.NET Web Apps

Este documento describe diferentes mecanismos para gestionar el estado en aplicaciones web ASP.NET, incluyendo el uso de parámetros URL, elementos ocultos, cookies, variables de aplicación y variables de sesión. Explica cómo almacenar y recuperar información en cada uno de estos mecanismos para mantener el estado entre peticiones del cliente.

Cargado por

Alex Mina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Marcos de Desarrollo

Diseño e implementación de aplicaciones Web con .NET


Objetivos

 Conocer distintos mecanismos de gestión del estado


en aplicaciones Web [Link]
Gestión del Estado. Lado Cliente
 Parámetros incluidos en la URL (<a href="…">)
 Query string:
 e.g. [Link]
 Visibilidad elevada

 Elementos de formularios ocultos (<input type="hidden")


 VIEWSTATE

 Cookies
Gestión del Estado. Lado Cliente: ViewState
◼ ViewState almacena estado de los controles entre una
petición y la siguiente
 Todos los controles tienen la propiedad
EnableViewState (activado por defecto)
 Es posible añadir datos propios al ViewState:

ViewState["Contador"] = 1;

// sintaxis alternativa
[Link]("Contador", 1);

 ViewState se materializa como un campo oculto en el


HTML de salida
Gestión del Estado. Lado Cliente: Cookies
 Almacenan datos en el navegador del cliente
 Limitaciones
 Tamaño máximo (4Kb)
 Número total (~300)
 Cookies por sitio web (~20)
 Usuario puede bloquearlas
Gestión del Estado. Lado Cliente: Cookies
 Propiedades

 Domain
 Servidor del que se descargó la cookie

 Expires
 Fecha (objeto DateTime) en la que el navegador borrará la
cookie

 Name
 Nombre de la cookie

 Value
 Contenido de la cookie
Gestión del Estado. Lado Cliente: Cookies
 Creación
HttpCookie cookie =
new HttpCookie("loginName", [Link]);
[Link] = [Link](30);
[Link](cookie);

 Lectura

HttpCookie cookie = [Link]["loginName"];

 Borrado

HttpCookie cookie = [Link]["loginName"];


[Link] = [Link](-1);
[Link](cookie);
Gestión del Estado. Lado Cliente: Cookies
 Ejemplo: Registro de la última visita
protected void Page_Load(object sender, EventArgs
e)
{
String lastVisit;
if ([Link]["lastVisit"] == null)
{
[Link] = "Welcome. This is your visit today";
first
}
else
{
lastVisit = [Link]["lastVisit"];
[Link] = "Your last visit was on "
+ [Link] + ".";
}
DateTime time = [Link];

[Link]["lastVisit"] = [Link]();
[Link]["lastVisit"].Expires =
[Link](1);
Gestión del Estado. Lado Servidor
 Variables de Aplicación
 Compartidas entre todas las sesiones y usuarios

 Variables de Sesión
 Accesibles sólo al propietario de la sesión
 Requieren envío de SessionID
Gestión del Estado. Lado Servidor
Variables de Aplicación
 Estado aplicación se almacena en una instancia de la
clase HttpApplicationState

 Accesible a través de la propiedad [Link]


 Colección pares (clave, valor)
 Los valores son de tipo Object

 Usar principalmente en modo lectura

 Inicialización a través del fichero [Link]


Gestión del Estado. Lado Servidor
Variables de Aplicación
 Ejemplo de lectura y escritura de objetos a nivel de aplicación

//Escritura
Application["Message"] = "Welcome to the this site.";

//Las variables de estado de aplicación pueden ser accedidas por


múltiples threads al mismo tiempo. Para prevenir datos inválidos,
se debe bloquear el acceso de escritura para que sólo pueda
acceder un thread
[Link]();
Application["PageRequestCount"] =
((int)Application["PageRequestCount"])+1;
[Link]();

//Lectura
if (Application["AppStartTime"] != null)
{
DateTime myAppStartTime =
(DateTime)Application["AppStartTime"];
}
Gestión del Estado. Lado Servidor
Variables de Sesión
 ¿Qué es una sesión?
 Contexto en el que un usuario se comunica con un servidor a través de múltiples peticiones
HTTP

 Problemas
 HTTP es no orientado a estado (stateless)
 HTTP es no orientado a sesiones (sessionless)

 Concepto de sesión manejado a nivel de programación

 Estado aplicación se almacena en una instancia de la clase HttpSessionState

 Accesible a través de la propiedad [Link]


 Colección pares (clave, valor)
 Los valores son de tipo Object
Gestión del Estado. Lado Servidor
Variables de Sesión
 Ejemplo de lectura y escritura de objetos en la sesión

//Escritura
Session["firstName"] =
"Pedro";
//Si se almacenan datos procedentes de un control de entrada, usar
conviene el método HtmlEncode
Session["firstName"] = [Link]([Link]);

//Sintaxis alternativa
[Link](itemName,
itemValue)

//Lectura
string firstName = Session["firstName"].ToString();

//Alternativa
string firstName = (string)(Session["firstName"]);

//Conviene asegurarse de que el valor está en la


sesión if (Session["firstName"] == null)
{
...
Gestión del Estado. Lado Servidor
Variables de Sesión
 Identificador de sesión
 Cadena ASCII de 120 bits
 Puede almacenarse en una cookie (no persistente) generada automáticamente
(ASP.NET_SessionID)

 Opcionalmente puede gestionarse a través de la propia URL


 No requiere cambios en el código aplicación
 Links relativos siguen funcionando
 Redirecciones mediante [Link]

 Genera URLs del estilo:

[Link]
Gestión del Estado. Lado Servidor
Variables de Sesión
 El comportamiento puede establecerse a nivel de aplicación
([Link]), con el atributo cookieless:

 "True" o "UseUri": ASP.NET_SessionID incluído en la URL


(UrlRewriting)
 ¡Opción recomendada para desarrollo!

 "False" o "UseCookies": ASP.NET_SessionID incluído en una Cookie

 "AutoDetect": las cookies se utilizarán si el navegador del cliente las


permite

<configuration>
<sessionState cookieless="UseUri" timeout="20"/>
</configuration>
Gestión del Estado. Lado Servidor
Variables de Sesión
 El estado de la sesión puede almacenarse:

 In-process: en memoria, en el proceso de [Link]

 Out-of-process:
 en un servidor de estado [Link]
 en una base de datos SQL Server
 fiabilidad y escalabilidad
 Sobrevive a caídas proceso [Link]
 Estado compartido entre máquinas de una granja
 [Link]:

<sessionState inproc="false" server="serverName" port="42424" />


Gestión del Estado. Lado Servidor
Variables de Sesión

Extraído de (MacDonald, 2010)


Gestión del Estado. Lado Servidor
Variables de Sesión
 Propiedades objeto Session
 Count
 Número de pares (clave, valor) almacenados

 Keys
 Conjunto de las claves almacenadas en la sesión

 IsNewSession
 Indica si la sesión se ha creado durante la carga de la página actual

 SessionID
 Identificador de sesión

 Timeout
 Máximo número de minutos durante los que la sesión puede permanecer inactiva
antes de ser eliminada
 Tiempo por defecto: 20 minutos

También podría gustarte