Administración del estado. Descripción Administración del estado Variables de aplicación y de...

22
Administración del estado

Transcript of Administración del estado. Descripción Administración del estado Variables de aplicación y de...

Page 1: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Administración del estado

Page 2: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Descripción

Administración del estado

Variables de aplicación y de sesión

Cookies y sesiones que no utilizan cookies

Page 3: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Lección: administración del estado

¿Qué es la administración del estado?

Tipos de administración del estado

Administración del estado en el lado del servidor

Administración del estado en el lado del cliente

El archivo Global.asax

Page 4: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

¿Qué es la administración del estado?

Nombre

Apellido

Introduzca su información de inicio de sesión:

John

EnviarEnviar

Chen

Servidor WebServidor Web

Login.aspx Login.aspx

Servidor WebServidor Web

Hola John Chen

Greetings.aspx

Introduzca su información de inicio de sesión:

John

EnviarEnviar

Chen

Hola

Greetings.aspx

¡¡He olvidado quién eres!!

¡¡He olvidado quién eres!!

Nombre

Apellido

Sin administración del estado

Con administración del estado

Page 5: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Tipos de Administración del estado

Administración del estado en Administración del estado en el lado del servidorel lado del servidor

Administración del estado en Administración del estado en el lado del clienteel lado del cliente

Estado de la aplicación

La información está disponible para todos los usuarios de una aplicación Web

Cookies

Archivo de texto que almacena información para mantener el estado

Estado de sesión

La información está disponible únicamente para el usuario de una sesión específica

Propiedad ViewState

Conserva valores entre múltiples peticiones para la misma página

Base de datos

En algunos casos, se utiliza el soporte de base de datos para mantener el estado en el sitio Web

Cadenas de consulta

Información añadida al final de una URL

Page 6: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Administración del estado en el lado del servidor

El estado de la aplicación es un mecanismo de almacenamiento global accesible desde todas las páginas de la aplicación Web

El estado de sesión está limitado a la sesión de explorador actual

Los valores se conservan mediante el uso de variables de aplicación y de sesión

Escalabilidad

La sesión ASP.NET se identifica con la cadena SessionID

Servidor WebServidor Web

Equipo clienteEquipo cliente

Variables de aplicación y de sesión

SessionID

Page 7: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Administración del estado en el lado del cliente

Utiliza cookies para mantener el estado

Cookies persistentes

Cookies temporales/no persistentes

Menos fiable que las opciones de administración del estado en el lado del servidor

El usuario puede eliminar cookies

Menos seguro que las opciones de administración del estado en el lado del servidor

Cantidad de información limitada

Restricciones en el lado del cliente en el tamaño de los archivos Servidor WebServidor Web

Equipo clienteEquipo cliente

Cookies

Page 8: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

El archivo Global.asax

Sólo un archivo Global.asax por aplicación Web

Almacenado en la raíz del directorio virtual de la aplicación Web

Utilizado para gestionar eventos de aplicación y de sesión

El archivo Global.asax es opcional

Page 9: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

El archivo Global.asax (continuación)

Servidor Web ASP.NET

Cliente

ASP.NET HTTP RuntimeASP.NET HTTP Runtime

IISIIS

Application_BeginRequestApplication_BeginRequest

Application_AuthenticateRequestApplication_AuthenticateRequest

Application_AuthorizeRequestApplication_AuthorizeRequest

Application_ResolveRequestCacheApplication_ResolveRequestCache

Application_AquireRequestStateApplication_AquireRequestState

Application_PreRequestHandlerExecuteApplication_PreRequestHandlerExecute

Application_EndRequestApplication_EndRequest

Application_UpdateRequestCacheApplication_UpdateRequestCache

Application_ReleaseRequestStateApplication_ReleaseRequestState

Application_PostRequestHandlerExecuteApplication_PostRequestHandlerExecute

Ejecución de la páginaEjecución de la página

PeticiónPetición RespuestaRespuesta

Page 10: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Lección: variables de aplicación y de sesión

Inicializar variables de aplicación y de sesión

Utilizar variables de aplicación y de sesión

Demostración: uso de las variables de sesión

Duración de las variables de aplicación y de sesión

Almacenamiento escalable de variables de aplicación y de sesión

Almacenar las variables de aplicación y de sesión en una base de datos

Page 11: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Inicializar variables de aplicación y de sesión

Las variables se inicializan en Global.asax

El objeto Application comparte información entre todos los usuarios de una aplicación Web

El objeto Session almacena información para una sesión de usuario concreta

Sub Application_Start(s As Object,e As EventArgs) Application("NumberofVisitors") = 0End Sub

Sub Application_Start(s As Object,e As EventArgs) Application("NumberofVisitors") = 0End Sub

protected void Application_Start(Object sender,EventArgs e){ Application["NumberofVisitors"] = 0;}

protected void Application_Start(Object sender,EventArgs e){ Application["NumberofVisitors"] = 0;}

Page 12: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Utilizar variables de aplicación y de sesión

Establecer variables de aplicación y sesión

Leer variables de aplicación y de sesión

Session("BackColor") = "blue"Application.Lock()Application("NumberOfVisitors") += 1Application.UnLock()

Session("BackColor") = "blue"Application.Lock()Application("NumberOfVisitors") += 1Application.UnLock()

strBgColor = Session("BackColor")lblNbVisitor.Text = Application("NumberOfVisitors")strBgColor = Session("BackColor")lblNbVisitor.Text = Application("NumberOfVisitors")

Session["BackColor"] = "blue";Application.Lock();Application["NumberOfVisitors"] =

(int)Application["NumberOfVisitors"] + 1;Application.UnLock();

Session["BackColor"] = "blue";Application.Lock();Application["NumberOfVisitors"] =

(int)Application["NumberOfVisitors"] + 1;Application.UnLock();

strBgColor = (string)Session["BackColor"];lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();strBgColor = (string)Session["BackColor"];lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();

Page 13: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Demostración: uso de las variables de sesión

Inicializar una variable de sesión (un número) en global.asax

Acceder a la variable de sesión desde una página

Acceder a la variable de sesión desde otra página y modificarla

Volver a acceder a la variable de sesión desde la primera página

Page 14: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Duración de la variable de aplicación y de sesión

Las variables de sesión tienen una duración establecida tras el último acceso

20 minutos es la duración predeterminada La duración de la sesión puede modificarse en

Web.config:

Las variables de aplicación persisten hasta que se provoca el evento Application_End

<configuration> <system.web>

<sessionState timeout="10" /></system.web>

</configuration>

<configuration> <system.web>

<sessionState timeout="10" /></system.web>

</configuration>

Page 15: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Almacenamiento escalable de variables de aplicación y de sesión

Por defecto, el estado de sesión se administra en proceso (in process) Inconveniente del almacenamiento en proceso:

No escalable ASP.NET proporciona almacenamiento fuera del proceso (out of process)

del estado de sesión El estado puede almacenarse en una base de datos SQL Server o un

servidor de estado Ventajas del almacenamiento fuera del proceso:

Escalabilidad

SQL

Variables de sesión y de aplicación

Cliente

Granja Web

Variables de sesión y de aplicación

-O-

Servidor de estado

Page 16: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Almacenar variables de aplicación y de sesión en una base de datos

Configurar el estado de sesión en Web.config

Modo establecido a sqlserver o stateserver

A continuación, configurar el servidor SQL Server

OSQL crea varios procedimientos almacenados y bases de datos temporales para almacenar las variables

<sessionState mode="SQLServer" sqlConnectionString="data source=SQLServerName; Integrated security=true" />

<sessionState mode="SQLServer" sqlConnectionString="data source=SQLServerName; Integrated security=true" />

c:\> OSQL –S SQLServerName –E <InstallSqlState.sqlc:\> OSQL –S SQLServerName –E <InstallSqlState.sql

1111

2222

Page 17: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Lección: sesiones con y sin cookies

Utilizar cookies para almacenar datos de sesión

Práctica dirigida por el instructor: utilizar variables y cookies

Recuperar información de una cookie

Uso de sesiones que no utilizan cookies

Configurar sesiones que no utilizan cookies

Page 18: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Utilizar cookies para almacenar datos de sesión

Crear una cookie:

La cookie contiene información sobre el nombre de dominio

HttpCookie objCookie = new HttpCookie("myCookie");DateTime now = DateTime.Now;

objCookie.Values.Add("Time", now.ToString());objCookie.Values.Add("ForeColor", "White");objCookie.Values.Add("BackColor", "Blue");

Response.Cookies.Add(objCookie);

HttpCookie objCookie = new HttpCookie("myCookie");DateTime now = DateTime.Now;

objCookie.Values.Add("Time", now.ToString());objCookie.Values.Add("ForeColor", "White");objCookie.Values.Add("BackColor", "Blue");

Response.Cookies.Add(objCookie);

HttpCookie objCookie = new HttpCookie("myCookie");DateTime now = DateTime.Now;

objCookie.Values.Add("Time", now.ToString());objCookie.Values.Add("ForeColor", "White");objCookie.Values.Add("BackColor", "Blue");

objCookie.Expires = now.AddHours(1);

Response.Cookies.Add(objCookie);

HttpCookie objCookie = new HttpCookie("myCookie");DateTime now = DateTime.Now;

objCookie.Values.Add("Time", now.ToString());objCookie.Values.Add("ForeColor", "White");objCookie.Values.Add("BackColor", "Blue");

objCookie.Expires = now.AddHours(1);

Response.Cookies.Add(objCookie); Para crear una cookie persistente, especificar el tiempo de expiración

Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com;Expires=Tuesday, 01-Feb-05 00.00.01 GMT

Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com;Expires=Tuesday, 01-Feb-05 00.00.01 GMT

Page 19: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Práctica dirigida por el instructor: utilizar variables y cookies

Los estudiantes:

Aprenderán a utilizar las variables de aplicación y de sesión, y las cookies persistentes, para almacenar información del usuario

Tiempo: 15 Minutos

Page 20: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Recuperar información de una cookie

Leer la cookie

Recuperar valores de la cookie

lblTime.Text = objCookie.Values("Time")lblTime.ForeColor = System.Drawing.Color.FromName _

(objCookie.Values("ForeColor"))lblTime.BackColor = System.Drawing.Color.FromName _

(objCookie.Values("BackColor"))

lblTime.Text = objCookie.Values("Time")lblTime.ForeColor = System.Drawing.Color.FromName _

(objCookie.Values("ForeColor"))lblTime.BackColor = System.Drawing.Color.FromName _

(objCookie.Values("BackColor"))

Dim objCookie As HttpCookie = Request.Cookies("myCookie")Dim objCookie As HttpCookie = Request.Cookies("myCookie")

HttpCookie objCookie = Request.Cookies["myCookie"];HttpCookie objCookie = Request.Cookies["myCookie"];

lblTime.Text = objCookie.Values["Time"];lblTime.ForeColor = System.Drawing.Color.FromName

(objCookie.Values["ForeColor"]);lblTime.BackColor = System.Drawing.Color.FromName

(objCookie.Values["BackColor"]);

lblTime.Text = objCookie.Values["Time"];lblTime.ForeColor = System.Drawing.Color.FromName

(objCookie.Values["ForeColor"]);lblTime.BackColor = System.Drawing.Color.FromName

(objCookie.Values["BackColor"]);

Page 21: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Uso de sesiones que no utilizan cookies

Cada sesión activa está identificada y se realiza su seguimiento utilizando IDs de sesión

Los IDs de sesión se comunican entre peticiones cliente-servidor utilizando una cookie HTTP o incluyéndolos en la URL

Sesiones que no utilizan cookies

La información de ID de sesión está codificada en URLs

No pueden utilizar URLs absolutas La mayoría de navegadores limitan el tamaño de la URL

a 255 caracteres, lo cual limita el uso de IDs para las sesiones que no utilizan cookies

http://server/(h44a1e55c0breu552yrecobl)/page.aspxhttp://server/(h44a1e55c0breu552yrecobl)/page.aspx

Page 22: Administración del estado. Descripción Administración del estado Variables de aplicación y de sesión Cookies y sesiones que no utilizan cookies.

Configurar sesiones que no utilizan cookies

El estado de sesión se configura en la sección <SessionState> de Web.config

Configurar cookieless = true

<sessionState cookieless="true" /><sessionState cookieless="true" />