Upload
desideria-conejo
View
13
Download
4
Embed Size (px)
Citation preview
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
¿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
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
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
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
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)
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
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") = 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;}
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();
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>
<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
SQL
Variables de sesión y de aplicación
Cliente
Granja Web
Variables de sesión y de aplicación
-O-
Servidor de estado
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
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");
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
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
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"]);
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
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" />