21
José Antonio Rastoll Pérez Presentación PI

José Antonio Rastoll Pérez

  • Upload
    viola

  • View
    42

  • Download
    2

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: José Antonio  Rastoll Pérez

José Antonio Rastoll Pérez

Presentación PI

Page 2: 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 APPLICATIONIntroducción.Problemas de concurrencia, Lock y Unlock.Colecciones.Variables de aplicación, desventajas y mal uso.

3. LOS EVENTOS OnStart Y OnEnd

Page 3: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Introducción

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.

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.

ESTADO DE UN USUARIO EN LA WEB

<%@ EnableSessionState=False%>

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.

Page 4: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: 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.

PROPIEDADES

Page 5: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Propiedades

PROPIEDADES

Existen cuatro propiedades:

•Session.TimeoutEspecifica el número de minutos que tienen que pasar, mientras la

sesión está inactiva para darla por terminada, siendo el valor por defecto de 20 minutos.

•Session.SesionID

•Session.CodePage

•Session.LCID

<% Session.Timeout = 35 %>

Page 6: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Propiedades

PROPIEDADES

Existen cuatro propiedades:

•Session.Timeout

•Session.SesionIDProporciona 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 %>

Page 7: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Propiedades

PROPIEDADESExisten 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 defecto el 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 %>

Page 8: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Propiedades

PROPIEDADESExisten cuatro propiedades:

•Session.Timeout

•Session.SesionID

•Session.CodePage

•Session.LCIDEsta 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%>

Page 9: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Funcionamiento

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 funciona el objeto Session?

¿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.

Page 10: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEl Objeto Sessión: Funcionamiento

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í:

BORRAR SESIONES DEL SERVIDOR

<% Session.Abandon %>

<% Session.TimeOut = 5 %>

Page 11: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONVariables 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") %>

Page 12: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONVariables de sesión: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.

DESVENTAJAS Y MAL USO

Page 13: José Antonio  Rastoll Pérez

2. EL OBJETO SESSIONVariables de aplicación.

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.

COLECCIONES

<%

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>")

%>

Page 14: José Antonio  Rastoll Pérez

1. EL OBJETO SESSIONEJEMPLO:Variables de sesión.

Pagina que muestra la fecha y la hora. Damos la opción al usuario de que elija si quiere mostrar o no la hora .

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>")%>

nohora.asp

<%

'Invierto el valor de Session("noHora")

if Session("noHora") = True then Session("noHora") = False

else Session("noHora") = True

end ifResponse.Redirect("fechahora.asp")

%>

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.

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ó.

Page 15: José Antonio  Rastoll Pérez

2. EL OBJETO APPLICATIONEl 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")

%>

Page 16: José Antonio  Rastoll Pérez

2. EL OBJETO APPLICATIONVariables de aplicación.

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:

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

<% Application("Num") = Application("Num") - 1 %>

<% Application("Num") = Application("Num") + 1 %>

PROBLEMA DE LA CONCURRENCIA

Page 17: José Antonio  Rastoll Pérez

2. EL OBJETO APPLICATIONVariables 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

%>

Page 18: José Antonio  Rastoll Pérez

2. EL OBJETO APPLICATIONVariables de aplicación.

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.

COLECCIONES

<%

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

%>

Page 19: José Antonio  Rastoll Pérez

2. EL OBJETO APPLICATIONVariables de aplicación: 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.

DESVENTAJAS Y MAL USO

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.

Page 20: José Antonio  Rastoll Pérez

3. LOS EVENTOS OnStart Y OnEndObjeto 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_OnStartCuando un nuevo visitante llega al sitio Web, este evento se

dispara y ejucuta su código.

Session_OnEndCuando 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_OnEndPor último, cuando el servidor Web es detenido o reiniciado,

se ejecuta.

Page 21: José Antonio  Rastoll Pérez

http://www.aspfacil.com/articulos/210301.asp

BIBLIOGRAFIA

PREGUNTAS