aplicación web sin Sesiones (session-less)

13/10/2005 - 21:20 por bajopalabra | Informe spam
hola
si deshabilito las sesiones
cómo identifico la sesión de un usuario ?

suponiendo, que genero mi propio "id de sesión" para cada login
(el que arrastro por cada página del sitio para no perderlo)
cómo puedo, luego, saber que una sesión ha terminado ?
recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..

atte, Hernán

atte, Hernán

Preguntas similare

Leer las respuestas

#1 bajopalabra
13/10/2005 - 22:10 | Informe spam
bien, pero cómo hacemos para saber
cuándo acabó la sesión ?

atte, Hernán

"Matías Iacono" escribió en el mensaje
news:
Si trabajas con ASP 3.0, el manejo de session sin sessions debes hacerlo


por
tu lado.

Podrias tener una base de datos, para almacenar la informacion de cada
usuario. En la misma tabla, un campo de tipo hora para saber cuando fue la
ultima vez que ese usuario hizo un requerimiento. De esta manera, podrias
saber cuanto tiempo de inactividad ha pasado para ese usuario.

Ademas, claro esta, que deberias tener un cookie o (en el caso de que


esten
desabilitados) mantener el ID en la barra de navegaciones y arrastrarlo
pagina a pagina, algo asi como hace .Net.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
> hola
> si deshabilito las sesiones
> cómo identifico la sesión de un usuario ?
>
> suponiendo, que genero mi propio "id de sesión" para cada login
> (el que arrastro por cada página del sitio para no perderlo)
> cómo puedo, luego, saber que una sesión ha terminado ?
> recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..
>
> atte, Hernán
>
> atte, Hernán
>
>


Respuesta Responder a este mensaje
#2 bajopalabra
13/10/2005 - 22:29 | Informe spam
además,
me parece que antes de entregar cada página
tendría que consultar si el "id de sesión" de la página
(vía cookie, get o post) coinicide con el guardado
en la tabla de "sesiones"

teniendo que establecer una conexión nueva
creando y liberando objetos ADO ...

pero todo eso también es overhead

por lo tanto me parece más costoso
session-less que utilizar sesiones
ya que con estado de sesion utiliza memoria y algo de cpu

mientras que sin sesión (manteniendo el id con cookie/get/post)
utilizará más cpu por validar sesión en cada página,
más memoria ya que necesita establecer 2 conexiones más
y utilizar objetos ADO con mucha frecuencia
y además operaciones red y de Entrada/Salida contra la base de datos

no te parece ?
estoy errado ?

atte, Hernán

"Matías Iacono" escribió en el mensaje
news:
Si trabajas con ASP 3.0, el manejo de session sin sessions debes hacerlo


por
tu lado.

Podrias tener una base de datos, para almacenar la informacion de cada
usuario. En la misma tabla, un campo de tipo hora para saber cuando fue la
ultima vez que ese usuario hizo un requerimiento. De esta manera, podrias
saber cuanto tiempo de inactividad ha pasado para ese usuario.

Ademas, claro esta, que deberias tener un cookie o (en el caso de que


esten
desabilitados) mantener el ID en la barra de navegaciones y arrastrarlo
pagina a pagina, algo asi como hace .Net.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
> hola
> si deshabilito las sesiones
> cómo identifico la sesión de un usuario ?
>
> suponiendo, que genero mi propio "id de sesión" para cada login
> (el que arrastro por cada página del sitio para no perderlo)
> cómo puedo, luego, saber que una sesión ha terminado ?
> recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..
>
> atte, Hernán
>
> atte, Hernán
>
>


Respuesta Responder a este mensaje
#3 Matías Iacono
14/10/2005 - 00:37 | Informe spam
Si trabajas con ASP 3.0, el manejo de session sin sessions debes hacerlo por
tu lado.

Podrias tener una base de datos, para almacenar la informacion de cada
usuario. En la misma tabla, un campo de tipo hora para saber cuando fue la
ultima vez que ese usuario hizo un requerimiento. De esta manera, podrias
saber cuanto tiempo de inactividad ha pasado para ese usuario.

Ademas, claro esta, que deberias tener un cookie o (en el caso de que esten
desabilitados) mantener el ID en la barra de navegaciones y arrastrarlo
pagina a pagina, algo asi como hace .Net.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
hola
si deshabilito las sesiones
cómo identifico la sesión de un usuario ?

suponiendo, que genero mi propio "id de sesión" para cada login
(el que arrastro por cada página del sitio para no perderlo)
cómo puedo, luego, saber que una sesión ha terminado ?
recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..

atte, Hernán

atte, Hernán


Respuesta Responder a este mensaje
#4 Matías Iacono
14/10/2005 - 01:34 | Informe spam
Tendrias que tener algun controlador externo que inspeccione la base de
datos.

O, cuando otro usuario adquiere una session, revisar la DB para saber cuales
estan caducadas y hacer alguna accion con ellas.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
bien, pero cómo hacemos para saber
cuándo acabó la sesión ?

atte, Hernán

"Matías Iacono" escribió en el mensaje
news:
Si trabajas con ASP 3.0, el manejo de session sin sessions debes hacerlo


por
tu lado.

Podrias tener una base de datos, para almacenar la informacion de cada
usuario. En la misma tabla, un campo de tipo hora para saber cuando fue
la
ultima vez que ese usuario hizo un requerimiento. De esta manera, podrias
saber cuanto tiempo de inactividad ha pasado para ese usuario.

Ademas, claro esta, que deberias tener un cookie o (en el caso de que


esten
desabilitados) mantener el ID en la barra de navegaciones y arrastrarlo
pagina a pagina, algo asi como hace .Net.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
> hola
> si deshabilito las sesiones
> cómo identifico la sesión de un usuario ?
>
> suponiendo, que genero mi propio "id de sesión" para cada login
> (el que arrastro por cada página del sitio para no perderlo)
> cómo puedo, luego, saber que una sesión ha terminado ?
> recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..
>
> atte, Hernán
>
> atte, Hernán
>
>






Respuesta Responder a este mensaje
#5 bajopalabra
14/10/2005 - 16:53 | Informe spam
gracias por la respuesta matías

cada usuario
puede estar habilitado para desempeñarse
como varios perfiles distintos a la vez (entre 1 y 7)

10.000 usuarios tienen 1 solo perfil
100 usuarios tienen 2 perfiles
menos de 10 tienen más de 2 perfiles

yo guardaría en distintas variables de sesión
si el usuario tiene el perfil habilitado , por ej:

session("perfil_1")= true
session("perfil_4")= true

luego, las páginas enviadas se verían así, con dos links:

| perfil 1 |
| perfil 4 |
- (esto sería un menú :-)

ahora, dentro de "Perfil 1"
debo crear dinámicamente un sub-menú "A, B, C"
y eso ya depende de las cosas asociadas a cada usuario , no al perfil
por lo que tendría que guardar arrays
dentro de cada variable de sesión

session("perfil_1") <-- rst_1.getrows( )
session("perfil_4") <-- rst_4.getrows( )

esto no sería problema para los últimos 110 usuarios (100 + 10)
no involucra muchos recursos, y además
son usuarios muy esporádicos

EL PROBLEMA :
es que estoy tratando de beneficiar a esos primeros 10.000
armándoles también un sub-menú personalizado

los 10.000 usuarios tendrían entre 1 y 4 opciones ;
en promedio : 2,5 -- a 100 bytes c/u

claro que no voy a tener 10.000 "usuarios concurrentes"
la máxima cantidad de conexiones concurrentes reales
históricamente fue de #10

siendo muy pesimista, con 100 conexiones concurrentes tendría :
100 x 2,5 = 250 opciones de sub-menú x 100 bytes = 25.000 bytes

aprox 25 KB

(*) CUÁNTA memoria requiere iniciar cada una de las 100 sesiones ?
me parece haber leido 10 KB c/u, es cierto ?
eso haría un total de 25 KB + 1000KB = más o menos 1 MB

espero haberme explicado bien

antes de hacer las cuentas pensaba modificar
la aplicación para ser session-less

pero, si las cuentas salieron bien, le podría dar facilidades
de acceso e interfaces más amigables a 11.000 usuarios
con un costo de 1 MB + costo de cpu
que es algo muy pero muy aceptable

(*) qué opinión te merece el tener variables de sesión de 250 bytes ?

por suerte, los sub-menúes no son un mero costo visual
ya que contienen códigos
para invocar directamente otras stored proc
evitando hacer otras consultas para llegar a ellos

atte, Hernán

"Matías Iacono" escribió en el mensaje
news:
Estas en lo correcto.

Pero porque anular las sesiones por completo. El unico motivo valido seria
el no tener la posibilidad de colocar cookies en el cliente, por lo que


las
sessions no funcionarian.

En el caso de que elimines las sessions por completo, no podrias mantener
informacion del usuario entre paginas, como podrias identificarlo? Si usas
un cookie para almacenar informacion critica, este puede ser facilmente
modificable, y el usuario podria acceder a datos no permitidos.

Posiblemente si vemos porque quieres no usar sessions, cual es la


finalidad
de tu aplicacion web, podriamos encarar mejor el problema.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"bajopalabra" escribió en el mensaje
news:
> además,
> me parece que antes de entregar cada página
> tendría que consultar si el "id de sesión" de la página
> (vía cookie, get o post) coinicide con el guardado
> en la tabla de "sesiones"
>
> teniendo que establecer una conexión nueva
> creando y liberando objetos ADO ...
>
> pero todo eso también es overhead
>
> por lo tanto me parece más costoso
> session-less que utilizar sesiones
> ya que con estado de sesion utiliza memoria y algo de cpu
>
> mientras que sin sesión (manteniendo el id con cookie/get/post)
> utilizará más cpu por validar sesión en cada página,
> más memoria ya que necesita establecer 2 conexiones más
> y utilizar objetos ADO con mucha frecuencia
> y además operaciones red y de Entrada/Salida contra la base de datos
>
> no te parece ?
> estoy errado ?
>
> atte, Hernán
>
> "Matías Iacono" escribió en el mensaje
> news:
>> Si trabajas con ASP 3.0, el manejo de session sin sessions debes


hacerlo
> por
>> tu lado.
>>
>> Podrias tener una base de datos, para almacenar la informacion de cada
>> usuario. En la misma tabla, un campo de tipo hora para saber cuando fue
>> la
>> ultima vez que ese usuario hizo un requerimiento. De esta manera,


podrias
>> saber cuanto tiempo de inactividad ha pasado para ese usuario.
>>
>> Ademas, claro esta, que deberias tener un cookie o (en el caso de que
> esten
>> desabilitados) mantener el ID en la barra de navegaciones y arrastrarlo
>> pagina a pagina, algo asi como hace .Net.
>>
>> Saludos.
>>
>> Matías Iacono
>> Microsoft MVP ASP/ASP.net - DCE3
>> "bajopalabra" escribió en el mensaje
>> news:
>> > hola
>> > si deshabilito las sesiones
>> > cómo identifico la sesión de un usuario ?
>> >
>> > suponiendo, que genero mi propio "id de sesión" para cada login
>> > (el que arrastro por cada página del sitio para no perderlo)
>> > cómo puedo, luego, saber que una sesión ha terminado ?
>> > recuerdo que el evento Session_OnEnd( ) no siempre funciona bien..
>> >
>> > atte, Hernán
>> >
>> > atte, Hernán
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida