/ / Comunicación bidireccional mediante WCF - c #, wcf

Comunicación bidireccional mediante WCF - c #, wcf

Estoy diseñando una arquitectura cliente-servidor que se implementa utilizando Windows Communication Foundation. En uno de los casos de uso, el servidor necesita solicitud el estado del cliente (s), lo que significa que debe llamar al SendStatus() método en el cliente y pregunta por su estado. Me preguntaba si este caso de uso puede implementarse utilizando WCF, sin crear un servicio independiente en el lado del cliente. Estoy tratando de evitar los sockets porque el cliente es un servicio en segundo plano y está esencialmente siempre conectado al servidor. Entiendo que WCF eventualmente usa sockets para la comunicación, pero específicamente estoy tratando de usar WCF ya que esto es más como una prueba de concepto.

Una solución que se me ocurrió fue que el cliente podía llamar al SendClientStatus() método en el servidor y enviar su estado cada 5 segundos más o menos. Pero, de nuevo, esto no parece ser un buen enfoque. Cualquier ayuda sería apreciada.

Respuestas

9 para la respuesta № 1

En el mundo de WCF, tienes más o menos dos opciones.

UN) Un servicio dúplex con doble enlace HTTP.

B) Un esquema de sondeo sin valor de retorno - esto esEsencialmente lo que describiste. La implementación ingenua, como nota correctamente, no es tan buena, pero hay optimizaciones. Como no necesita que se devuelva nada desde SendClientStatus (¿correcto?), Puede optimizar la comunicación enviando solo una actualización cuando haya una, por ejemplo. Mientras el estado del cliente permanezca igual, no se envía nada al servidor. Dependiendo de la frecuencia con la que cambie el estado del cliente, esto puede reducir considerablemente el tráfico. Los servicios dúplex presentan alguna configuración adicional que desea evitar a menos que realmente los necesite.