2009-11-03 10 views
5

Como puedo enumerar algún tipo de identificador de ubicación para todos los clientes conectados por un ServiceHost? Estoy usando una conexión dúplex para cálculos de larga ejecución. El host del servicio es un singleton.La obtención de una lista de clientes conectados a un servicio WCF

me puedo imaginar (en .NET 3.5) la dirección IP del cliente que llama, pero no estoy seguro de cómo obtener el IP de todos los clientes conectados.

Respuesta

1

No creo que haya nada incorporado para eso, pero sería bastante fácil construir un IServiceBehavior tracking + IDispatchMessageInspector que inspeccionaría RemoteClientEnpointMessageProperty antes de enviar la llamada al servicio impl y pegar el IP del cliente en una lista compartida, y eliminarlo cuando finaliza la llamada/sesión.

2

Por defecto, WCF promueve el uso de los servicios "por llamada", por ejemplo, sus llamadas de clientes, la solicitud se maneja y luego el cliente se desconecta nuevamente de inmediato.

WCF no se presta demasiado bien ni está destinado a conexiones de larga ejecución, por lo que no se puede "enumerar realmente a los usuarios actualmente conectados" ya que no hay ninguno (o solo una fracción de un segundo).

WCF no es como un servidor de dominio de Windows en el que entrar y permanecer conectado durante un período prolongado de tiempo.

+0

Lo siento, no estaba claro en mi publicación, pero no estoy utilizando el comportamiento predeterminado del servicio. [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] Con InstanceContexMode.Single hay una instancia con una vida útil más larga que el modo predeterminado "por llamada". El servicio implementado actualmente utiliza un contrato de devolución de llamada para enviar los resultados cuando estén listos. El cliente almacena en caché su conexión con el servidor para que se puedan usar para múltiples solicitudes. Las conexiones son de larga duración. – Sindhudweep

+0

OK - No creo que sea una muy buena idea, pero no conozco los detalles de su configuración; desafortunadamente, en WCF 3.5, no hay mucho apoyo para la gestión y la vigilancia; esto formará parte del proyecto "Dublin", un complemento de gestión para IIS7/WAS programado para enviarse un tiempo después de .NET 4 (marzo de 2010).) –

Cuestiones relacionadas