¿Cómo hacer que un recurso (pantalla) sea accesible solo para un usuario a la vez en una aplicación .Net distribuida?

votos
1

Tengo una aplicación de formularios para Windows basada en el servidor cliente que necesita una pantalla solo de administrador. La funcionalidad del administrador debe implementarse de tal manera que en un momento determinado solo un administrador pueda acceder a esa pantalla. La aplicación de cliente de Windows forms habla con el servidor usando .NET Remoting. Y el lado del servidor se distribuye en varias máquinas.

Publicado el 09/12/2008 a las 21:26
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

Esto se puede hacer más fácilmente mediante el uso de una tabla DB. Típicamente, el DB ya es tolerante a fallas y es un recurso seguro para usar en un escenario de bloqueo compartido. Solo tiene una tabla de bloqueo que contiene información sobre el recurso bloqueado, quién lo tiene, cuándo, etc.

También puede usar uno de los varios "servidores de estado" en el mercado para almacenar el estado de bloqueo. Sin embargo, esto introduce un punto de falla, a menos que invierta en una de las tecnologías de estado distribuidas más nuevas.

Sin embargo, realmente te estás preparando para más problemas. Necesitarás una pantalla que te permita desbloquear, ver quién tiene el candado, etc. Lo mejor es que veas por qué este bloqueo es realmente necesario. ¿Es un requisito de tecnología o negocio? Puede implementar más fácil y limpiamente un escenario pesimista de actualización de datos que mejoraría la experiencia del usuario.

Respondida el 09/12/2008 a las 21:31
fuente por usuario

votos
0

Debe mantener un miembro estático en el servidor que indique si la ventana está actualmente en uso. Asegúrese de que es seguro para subprocesos mediante el uso de la función de bloqueo () al establecer el valor. Luego puede verificar ese valor antes de mostrar la pantalla de administración.

En lo que respecta al servidor, mencionas que existe en varias PC. ¿Se trata de una topología de carga equilibrada que funciona como un servidor virtual? Si es así, es posible que deba conservar el valor en una base de datos. Piénselo de la misma manera en que ASP.Net persiste en el estado de la sesión . Puedo existir en el servidor, pero si hay una granja de servidores, se puede mover a SQL Server para que lo usen todos los servidores.

Respondida el 09/12/2008 a las 21:33
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more