Si, funciona bastante bien.

El único riesgo está en el "bloqueante" y no en el "bloqueado". Es decir, es
posible que por algún problema de red el que bloqueó pierda la secuencia de
pings por más de 10 segundos y quede a destiempo del bloqueo. En este caso,
si el ping se reactiva, el usuario vuelve a revivir en el Singleton.

Si nadie en ese período solicitó el objeto bloqueado, lo mantiene (si
corresponde).
Si alguien lo solicitó, entonces habrá logrado "robárselo" y el "bloqueante"
recibirá algún mensaje amigable diciéndole que ha perdido la exclusividad
sobre el recurso y otro usuario lo tomó.
Ese es el único riesgo.

Lo más peligroso sería al revés, que el "bloqueado" acceda al recurso
mientras el "bloqueante" lo mantiene.

Con este esquema eso nunca pasó.

Saludos
Leonardo

-----Mensaje original-----
De: MYMTEC S.A. - Javier Wamba [mailto:[EMAIL PROTECTED] 
Enviado el: Viernes, 24 de Agosto de 2007 10:16 a.m.
Para: puntonet@mug.org.ar
Asunto: [puntonet] ASP.NET cierre de explorador

* Replies will be sent through Spamex to puntonet@mug.org.ar
* For additional info click -> http://www.spamex.com/i/?v=13137989

Muchas gracias leonardo, eso es exactamente lo que nesecito. Ahora, te hago 
una pregunta,
¿Es seguro implementar un ping o tuviste algun tipo de problema?
Justamente mi caso es que voy a utilizar un mutex y nesecito esta seguro de 
que se desbloquee, no lo puedo inutilizar por 20 minutos y tampoco por 5 
segundos sino el tiempo que el usuario necesita, si este se desconecta debo 
desbloquear.

Saludos
Javier Wamba



----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <puntonet@mug.org.ar>
Sent: Friday, August 24, 2007 2:35 AM
Subject: [puntonet] ASP.NET cierre de explorador


Lo que busca Javier es algo más inmediato, supongo.

Esto me pasó en una solución.

La Session tiene otro fin. Por un lado no podés hacer que la session expire
a los 5 segundos, y por otro, probablemente no pueda esperarse unos... 20
minutos, por ejemplo, a que expire una session normal.

Imaginate que tu negocio requiere que un usuario que va a modificar una
entidad la bloquee en el servidor. Si esto lo manejás por session, si al
usuario se le cuelga el Explorer, esa entidad queda inutilizada por 20
minutos.

La solución que adopté es la que dice Omar. Implementé un Ping que iba al
Server (por AJAX) cada X segundos y mantenía "vivo" al usuario en un
singleton con el listado de usuarios activos. Estos usuarios podían bloquear
entidades.
Si otro usuario quería acceder a esa entidad y se encontraba bloqueada, se
verificaba si el usuario que lo bloqueó seguía vivo, es decir, si su último
ping había sido antes del tiempo del PING x 2 (esto por si uno de los pings
fallaba y el usuario seguía conectado, se usaba el tiempo x 2)

De paso, ya que estaba, usaba ese ping para retornar alguna notificación de
cambio al usuario, pero esa es otra historia.

Con esto tendrás otra problemática. Ya no vas a tener más expiraciones de
session, porque los usuarios, aunque se vayan del escritorio, van a dejar
una aplicación viva.

Si tu solución utiliza mucho la session y confía que expirará, probablemente
tengas un problema de recursos a la larga.
En ese caso tendrías que recurrir a un mix session/cache (como hice yo)
donde los objetos que guardes en sesión no solo dependan de la session del
usuario, sino que además mantengan un tiempo de vida sin uso individual.

Saludos
Leonardo

-----Mensaje original-----
De: Pata del Santo [mailto:[EMAIL PROTECTED]
Enviado el: Miércoles, 22 de Agosto de 2007 05:07 p.m.
Para: puntonet@mug.org.ar
Asunto: [puntonet] ASP.NET cierre de explorador

* Replies will be sent through Spamex to puntonet@mug.org.ar
* For additional info click -> http://www.spamex.com/i/?v=3D13137989

En vez de un timer, no sería mejor utilizar Session.End ?

-----Mensaje original-----
De: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Omar del
valle Rodríguez
Enviado el: miércoles, 22 de agosto de 2007 21:35
Para: puntonet@mug.org.ar
Asunto: [puntonet] ASP.NET cierre de explorador

Hola..

Por más vueltas que le des.. es imposible controlar el comportamiento del
cliente.. o al menos enterandote en el servidor..

Mi consejo.. puedes tener un timer que te envia un request cada X segundos
al servidor.. declaras un posible tiempo de espera en el servidor.. y si
durante ese tiempo no te llega dicho request.. el cliente voló tu
aplicación.

Salu2
Omar.

----- Original Message ----- 
From: "MYMTEC S.A. - Javier Wamba" <[EMAIL PROTECTED]>
To: <puntonet@mug.org.ar>
Sent: Wednesday, August 22, 2007 2:27 PM
Subject: [puntonet] ASP.NET cierre de explorador


> gracias pedro,
> estoy buscando algo mas efectivo, porque como dijiste, si mato el proceso
> no se dispara.
> Saludos
>
> Javier Wamba
>
> ----- Original Message ----- 
> From: "Pedro Wood" <[EMAIL PROTECTED]>
> To: <puntonet@mug.org.ar>
> Sent: Wednesday, August 22, 2007 2:57 PM
> Subject: [puntonet] ASP.NET cierre de explorador
>
>
>> Hola,
>> no se si es lo que estás buscando... pero con javascript podés usar el
>> evento onbeforeunload para disparar una llamada al servidor con AJAX.
>> El evento se dispara cuando se cierra el navegador, pero no creo que se
>> dispare si matás el proceso.
>> Saludos,
>>
>> Pedro
>>
>> MYMTEC S.A. - Javier Wamba escribió:
>>> Buenas, una preguntita, ¿hay forma de enterarse en el servicor que un
>>> usuario cerro el explorador con la X o que lo cerro desde el
>>> administrador de procesos?
>>>  Saludos
>>>  Javier Wamba
>>
>
>

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.yahoo.com.mx/







Reply via email to