1 / 21

José Antonio Rastoll Pérez

Presentación PI. José Antonio Rastoll Pérez. Índice. 1. EL OBJETO SESSION Introducción. Propiedades. Funcionamiento. Variables de sesión, desventajas y mal uso. Colecciones. EJEMPLO: Variables de sesión . 2. EL OBJETO APPLICATION Introducción.

viola
Download Presentation

José Antonio Rastoll Pérez

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Presentación PI José Antonio Rastoll Pérez

  2. Índice 1. EL OBJETO SESSION Introducción. Propiedades. Funcionamiento. Variables de sesión, desventajas y mal uso. Colecciones. EJEMPLO:Variables de sesión. 2. EL OBJETO APPLICATION Introducción. Problemas de concurrencia, Lock y Unlock. Colecciones. Variables de aplicación, desventajas y mal uso. 3. LOS EVENTOS OnStart Y OnEnd

  3. 1. EL OBJETO SESSION El Objeto Sessión: Introducción ESTADO DE UN USUARIO EN LA WEB Se dice que la web carece de estado ya que cuando el mismo cliente vuelve a pedir una página al servidor, éste: - No tiene por qué saber quién es el cliente, - ni si ya ha pedido algo antes, - ni si está haciendo algún tipo de interacción en la Web Para el servidor Web es otra petición más y cualquier cosa que ocurriese en la petición anterior no influye en ésta: el estado se ha perdido. Este codigo es para que asp no inicie una sesion ya que podria ser una página estática y asi nos ahorramos enviar cookies. <%@ EnableSessionState=False%> Para mantener cualquier tipo de estado necesitamos utilizar los objetos Session y Application de ASP que hacen posible la identificación de un usuario en un mismo sitio web durante un determinado tiempo.

  4. 1. EL OBJETO SESSION El Objeto Sessión: Propiedades PROPIEDADES • El objeto Session es un objeto intrinseco en asp • -No hay que crearlo o instanciarlo. • Cada visitante que entra en el sitio Web recibe su propia instancia del objeto Session -Que no tiene absolutamente nada que ver con los demás visitantes que estén en ese momento en el sitio. • Toda la informacion almacenada de un usuario concreto en una sesion determinada puede ser modificada o leida desde cualquier página ASP a lo largo del sitio. • -Por esto es un lugar muy útil para almacenar datos particulares, puesto que desde cualquier página podremos tratar al usuario de forma personalizada. • Ejemplo: Un sitio Web de comercio electrónico. • El contenido del carrito de la compra de cada visitante son sus datos de sesión y visitando las mismas páginas que otros clientes, recibirá del servidor respuestas referentes a su carrito, como por ejemplo el precio total, los artículos que tiene, etc.

  5. 1. EL OBJETO SESSION El Objeto Sessión: Propiedades PROPIEDADES • Existen cuatro propiedades: • Session.Timeout • Especifica el número de minutos que tienen que pasar, mientras la sesión está inactivapara darla por terminada, siendo el valor por defecto de 20 minutos. • Session.SesionID • Session.CodePage • Session.LCID <% Session.Timeout = 35 %>

  6. 1. EL OBJETO SESSION El Objeto Sessión: Propiedades PROPIEDADES • Existen cuatro propiedades: • Session.Timeout • Session.SesionID • Proporciona un identificador de sesión para el usuario actual. Este identificador es generado por el servidor, y consiste en un número del tipo largo (long) Se obtiene así: • Y este podría ser el resultado: • Tu número de sesión es: 465107831 • El servidor Web garantiza que este valor es único para cada visitante mientras esté corriendo.Si el servidor es reiniciado ya no se puede garantizar que siga siendo único para cada visitante que hayamos tenido en la vida de nuestro sitio Web. • Session.CodePage • Session.LCID <% Response.Write "Tu número de sesión es: " & Session.SessionID %>

  7. 1. EL OBJETO SESSION El Objeto Sessión: Propiedades PROPIEDADES • Existen cuatro propiedades: • Session.Timeout • Session.SesionID • Session.CodePage ( Versión 3 o superior ) • Especifica al servidor que página de código de caracteres debe utilizar. • Por defectoel servidor utilizará la página predeterminada en el sistema. • El cambio de página solamente estará activo el tiempo que dure la sesión. • Veamos cómo utilizarla: • Session.LCID <%Session("CodOriginal") = Session.CodePageNuevocod = Request.Form("NuevoCod") Texto = Request.Form("Lo_que_hay_que_convertir") Session.CodePage = NuevoCodConversion = FindTranslation(Texto, Nuevocod) If Conversion <> "" Then   Session.CodePage = Session("CodOriginal")   Response.Write "La conversión de " & Texto & " es "    Session.CodePage = NuevoCod   Response.Write ConversionEnd If%>

  8. 1. EL OBJETO SESSION El Objeto Sessión: Propiedades PROPIEDADES • Existen cuatro propiedades: • Session.Timeout • Session.SesionID • Session.CodePage • Session.LCID • Esta propiedad utiliza el número identificador de localización para dar en varios formatos, la fecha, hora y localizador específicos de un lugar o región. El número identificador de localización únicamente define una situación geográfica. Por ejemplo el identificador de España es el 2048, el de Francia es el 1036, etc. <% Response.Write "Este es el LCID para esta página " & Session.LCID & "<BR>"Response.Write "Este es el formato fecha y hora para el LCID: " & NOW() & "<BR>"Session.LCID = 1033Response.Write "Este es el LCID para esta página " & Session.LCID & "<BR>"Response.Write "Este es el formato fecha y hora para el LCID: " & NOW() & "<BR>"Session.LCID = 3079%>

  9. 1. EL OBJETO SESSION El Objeto Sessión: Funcionamiento ¿Cómo funciona el objeto Session? 1.- Un nuevo visitante llega al servidor 2.- Éste le asigna un identificador de sesión, SessionID y se guarda otra copia para él. 3.- Después, para cada nueva petición, el servidor comprueba el ID de sesión con todos los SessionID que tiene guardados para identificar al visitante. ¿Cómo guarda el servidor el ID de sesión en cada visitante? Almacenándolo en una cookie de sesión, que desaparece del ordenador del cliente cuando se termina la sesión. De esta forma, cuando un cliente pide una página, envía (si la tiene) la cookie con el identificador de sesión. El servidor puede así saber cuál es su instancia del objeto Session y comprobar su estado y/o personalizar su comportamiento. Si no tiene esta cookie, el servidor supone que es un nuevo visitante y le asigna un nuevo ID de sesión y un nuevo objeto Session.

  10. 1. EL OBJETO SESSION El Objeto Sessión: Funcionamiento BORRAR SESIONES DEL SERVIDOR Dos formas: -Automáticamente, al caducar el tiempo de sesión (Session TimeOut). El tiempo de sesión puede cambiarse, bien para todo el sitio Web desde el Administrador de IIS, o bien para una única sesión, especificándolo en una página ASP así: - Llamando desde una página ASP al método Abandon del objeto Session, así: <% Session.TimeOut = 5 %> <% Session.Abandon %>

  11. 1. EL OBJETO SESSION Variables de sesión. Cada visitante de nuestro sitio Web recibe su objeto Session, donde nuestras páginas ASP pueden guardar y recuperar información específica para cada visitante. Para guardar ‘Pepe' en la variable de sesión 'Nombre' escribimos: Y para recuperar el valor, utilizamos: <% Session("Nombre") = “Pepe" %> <% Dim nombre = Session("Nombre") %>

  12. 1. EL OBJETO SESSION Variables de sesión:desventajas y mal uso. DESVENTAJAS Y MAL USO Numero Uno:almacenar objetos en variables de sesión. - Tener cuidado con el almacenamiento masivo para no relentizar el servidor. - Tener en cuenta que muchos usuarios dejan su objeto sesion sin utilizar la mayor parte del tiempo debido a visitas fugaces y esto produce mayor ocupación del servidor. Número Dos.Poner un tiempo de sesión muy pequeño o muy alto. - Si es pequeño es malo ya que puede producir que los usuarios estén descontentos al ver que su tiempo ha expirado al volver del baño o al entretenerse y perder los articulos seleccionados de un sitio de comercio electrónico. - El otro extremo es mucho peor: vamos a poner un TimeOut de 30 minutos. Si 100 usuarios llegan al mismo tiempo y se van en 10 minutos, tienes 100 objetos Session malgastando memoria durante 20 minutos.

  13. 2. EL OBJETO SESSION Variables de aplicación. COLECCIONES Tenemos las colecciones Contents y StaticObjects para ver el contenido del objeto Session. Contents guarda todas las variables que no sean objetos y StaticObjects todas las variables de objeto. <% Dim variable, objeto 'Primero recorremos las variables normales for each variable in Session.Contents Response.Write( variable & "=" & Session(variable)&"<br>") Next Response.Write("Tienes " & Session.Contents.Count & " variables de sesión.<br>") 'Y ahora las variables de objeto for each objeto in Session.StaticObjects Response.Write( objeto & "<br>") next Response.Write("Tienes " & Session.StaticObjects.Count & " objetos en tu sesión.<br>") %>

  14. 1. EL OBJETO SESSION EJEMPLO:Variables de sesión. fechahora.asp <% Response.Write("</p>Hola visitante") 'Si ha elegido no mostrar la hora 'le presento la opcion para volver a hacerlo if Session("noHora") = True then Response.Write("<a href=""nohora.asp"">Mostrar la hora</a>") else 'le muestro la hora Response.Write("<p>Son las " & Time & ".<br>") 'Le permito ocultar la hora Response.Write("<a href=""nohora.asp"">Ocultar la hora</a><br>") end if Response.Write("Hoy es " & Date() & ".<br>") %> Almacenamos su elección en una variable de sesión y así cada vez que recargue o vuelva a visitar la página, la verá como él o ella decidió. nohora.asp <% 'Invierto el valor de Session("noHora") if Session("noHora") = True then Session("noHora") = False else Session("noHora") = True end if Response.Redirect("fechahora.asp") %> Pagina que muestra la fecha y la hora. Damos la opción al usuario de que elija si quiere mostrar o no la hora . Utilizamos la misma página nohora.asp para poner a verdadero o falso la variable de sesión noHora y redirigirle a la página inicial para que vea los cambios.

  15. 2. EL OBJETO APPLICATION El objeto aplicación. El objeto Application es único para todo el sitio Web y todos los visitantes comparten el mismo objeto Application. Al igual que con Session, podemos utilizarlo para guardar variables y datos que podemos recuperar desde nuestras páginas ASP. El objeto Application, al igual que todos los objetos Session, se guardan en la memoria del servidor Web. Esto significa que si lo cargamos mucho, el servidor comenzará a ver su rendimiento degradado, tal y como ocurría con los objetos Session. Los fragmentos de información que guardamos en este objeto se llaman variables de aplicación y se leen y escriben de la misma forma que las variables de sesión: <% Application("var") = valor variable = Application("var") %>

  16. 2. EL OBJETO APPLICATION Variables de aplicación. PROBLEMA DE LA CONCURRENCIA Este problema existe debido a que este objeto es compartido por todos los visitantes de un sitio web. Por ejemplo, tenemos una página ASP que suma 1 a una variable de aplicación, y otra que resta 1 a la misma variable. Esta es la primera: Y esta la segunda: <% Application("Num") = Application("Num") + 1 %> <% Application("Num") = Application("Num") - 1 %> Supongamos que dos visitantes visitan a la vez la primera página. En teoría, debería aumentarse en 2 el número, pero si lo hacen exactamente a la vez, no podemos garantizar que no lean el mismo valor, sumen 1 y por tanto sólo se sume 1 al final. Peor aún, podría llegar otro visitante a la página que resta exactamente al mismo tiempo, restar 1 y que se quede como está. Para garantizar que los accesos para modificar una variable de aplicación son únicos. debemos utilizar dos métodos del objeto Application: Lock y Unlock

  17. 2. EL OBJETO APPLICATION Variables de aplicación. PROBLEMA DE LA CONCURRENCIA Estos dos métodos restringen el uso del objeto Application en ese momento. Así debería ser nuestra página anterior: Otros procesos quedan en espera y garantizamos el uso de la variabla con el valor correcto. Si no se utiliza Unlock cuando se haya terminado tenemos un objeto Application bloqueado permanentemente. Al igual que en el objeto Session, cualquier tipo de datos puede ser guardado en variables de aplicación: desde tipos simples hasta vectores u objetos. <% Application.Lock Application("Num") = Application("Num") + 1 Application.Unlock %>

  18. 2. EL OBJETO APPLICATION Variables de aplicación. COLECCIONES Tenemos las colecciones Contents y StaticObjects para ver el contenido del objeto Application al que ocurría con el objeto Session. Contents guarda todas las variables normales y StaticObjects todas las variables de objeto. <% Dim var, obj Response.Write("Variables de aplicación actuales: <br>") for each var in Application.Contents Response.Write("<li>" & var & " = " & Application(var) & "</li>") next Response.Write("Objetos en Application: <br>" ) for each obj in Application.StaticObjects Response.Write("<li>" & obj & "</li>") next %>

  19. 2. EL OBJETO APPLICATION Variables de aplicación: desventajas y mal uso. DESVENTAJAS Y MAL USO • Número Uno:evita guardar objetos en variables de aplicación. • Además de ocupar mucha memoria, casi nunca ofrecen el supuesto incremento del rendimiento que en principio puede parecer. • Número Dos:no sobreeutilizar el objeto Application. • Si bien hay ciertas cosas que solo se pueden hacer con el objeto Application, hay muchas más que se pueden conseguir sin él. Especialmente, para guardar HTML que es común a todas las páginas, como una cabecera y un pie de páginas, se deben utilizar #includes y no variables de aplicación. • El único escenario en que es más lógico utilizar una variable de aplicación es aquel en que lo que guardamos sea susceptible de cambiar muy a menudo, como el número de visitantes, o la fecha del último mensaje en un foro, etc.

  20. 3. LOS EVENTOS OnStart Y OnEnd Objeto Application y Session Para los objetos Session y Application se debe escribir un fichero especialn a la vez que opcional, GLOBAL.ASA que contiene cuatro procedimientos que responden a estos 4 eventos y que se debe colocar en el directorio raíz de publicación web: Session_OnStart Cuando un nuevo visitante llega al sitio Web, este evento se dispara y ejucuta su código. Session_OnEnd Cuando la sesión de cada visitante termina este evento se dispara y el código escrito en ese procedimiento se ejecuta. Application_OnStart Cuando el servidor sea iniciado, el evento se dispara y el código que escribamos en su procedimiento correspondiente se ejecuta. Application_OnEnd Por último, cuando el servidor Web es detenido o reiniciado, se ejecuta.

  21. BIBLIOGRAFIA http://www.aspfacil.com/articulos/210301.asp PREGUNTAS

More Related