230 likes | 468 Views
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
E N D
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
¿Qué es la administración del estado? Sin administración del estado Con administración del estado Login.aspx Login.aspx Introduzca su información de inicio de sesión: Introduzca su información de inicio de sesión: Nombre Nombre John John Apellido Apellido Chen Chen Servidor Web Enviar Enviar Servidor Web Greetings.aspx Greetings.aspx Hola Hola John Chen ¡¡He olvidado quién eres!!
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 Web Equipo cliente Variables de aplicación y de sesión SessionID
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 Web Equipo cliente 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
El archivo Global.asax (continuación) Cliente Petición Respuesta Servidor Web ASP.NET IIS ASP.NET HTTP Runtime Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_EndRequest Application_ResolveRequestCache Application_UpdateRequestCache Application_AquireRequestState Application_ReleaseRequestState Application_PreRequestHandlerExecute Application_PostRequestHandlerExecute Ejecución de la página
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
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") = 0 End Sub protected void Application_Start(Object sender,EventArgs e) { Application["NumberofVisitors"] = 0; }
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") += 1 Application.UnLock() Session["BackColor"] = "blue"; Application.Lock(); Application["NumberOfVisitors"] = (int)Application["NumberOfVisitors"] + 1; Application.UnLock(); strBgColor = Session("BackColor") lblNbVisitor.Text = Application("NumberOfVisitors") strBgColor = (string)Session["BackColor"]; lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();
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
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>
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 Servidor de estado Granja Web Variables de sesión y de aplicación -O- SQL Cliente Variables de sesión y de aplicación
Almacenar variables de aplicación y de sesión en una base de datos 1 • 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" /> 2 c:\> OSQL –S SQLServerName –E <InstallSqlState.sql
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
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"); 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
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
Recuperar información de una cookie • Leer la cookie • Recuperar valores de la cookie Dim objCookie As HttpCookie = 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"]);
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.aspx
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" />