Tengo un servicio WCF dúplex en funcionamiento con WSDualHttpBinding
. Mi problema es encontrar una forma de almacenar el canal de devolución de llamada con una identificación única. El servicio está destinado a ser de larga duración. ¿Puedo simplemente tomar el valor de retorno OperationContext.Current.GetCallbackChannel()
cuando se llama a un método "Suscribirme" y almacenarlo en una lista o diccionario? ¿Se garantiza que será válido hasta que la conexión esté activa?Identificación de clientes en un servicio WCF
Respuesta
La manera más fácil sería que el cliente envíe un valor de clave en el método de suscripción de su servicio. A continuación, puede guardar el canal de Devolución de llamada en un diccionario. Este diccionario probablemente necesite ser una variable estática o una clase única cuya vida útil sea mayor que la vida útil de la Clase de servicio, ya que la mayoría de las clases de servicio tienen una vida útil PerCall y se eliminan después de que se complete la llamada de servicio. ¡Cuidado con los problemas de enhebrado!
El canal de devolución de llamada se puede generar una falla en cualquier momento, ya sea en el cliente o en el lado del servicio. El servicio debe manejar la posibilidad de un canal con falla y eliminar el canal con fallas del diccionario. WSDuallHttpBinding es un enlace "sin estado" por lo que las fallas en el cliente no se detectarán en el lado del servicio hasta que el lado del servicio intente llamarlas. NetTcpBinding generará el evento ChannelFaulted si el cliente entra en estado de error. Por esa razón, recomendaría NetTcpBinding si se ajusta a sus requisitos.
public bool Subscribe(string id) {
ICallback callback = OperationContext.Current.GetCallbackChannel();
if (!_activeCallbackChannels.Contains(id)) {
_activeCallbackChannels.Add(id, callback);
return true;
}
else {
return false;
}
}
- 1. Cómo configurar clientes para un servicio wcf?
- 2. Reutilización de clientes del servicio WCF
- 3. WCF: ¿se necesita un certificado de servicio para autenticar clientes?
- 4. Identificación de WCF Client ID
- 5. Crear servicio WCF para clientes C++ no administrados
- 6. WCF: solicitud de manejo de varios clientes
- 7. Pasar credenciales de un servicio wcf a otro servicio wcf
- 8. ¿Es un servicio WCF un servicio web?
- 9. La obtención de una lista de clientes conectados a un servicio WCF
- 10. Especifique un servicio Singleton en un servicio alojado de WCF
- 11. WCF Seguridad en un servicio de Windows
- 12. ¿Cómo evitar que se generen propiedades 'especificadas' en clientes WCF?
- 13. Autenticación a un servicio de WCF
- 14. ¿Existe una herramienta de generación de clientes WCF Rest C#?
- 15. ¿Agregar campo al contrato de datos de WCF rompe clientes?
- 16. WCF - fábrica de canales frente a base de clientes
- 17. ¿Puede un Servicio WCF reemplazar la funcionalidad de TCPListener?
- 18. Weblogic clientes de servicio web. (Referencias limpios)
- 19. comunicación WCF con varios clientes sin IIS
- 20. Documentación de servicio WCF
- 21. ¿Puedo llamar localmente un método en un servicio WCF autohospedado?
- 22. Prueba de un servicio web de WCF
- 23. Múltiples interfaces de un solo servicio WCF?
- 24. una imagen de un servicio WCF REST
- 25. ¿Cómo asegurar un servicio tranquilo de WCF?
- 26. Implementación de un servicio WCF asíncrono
- 27. ¿Cómo autentico un servicio de datos WCF?
- 28. Servicio de dominio vs Servicio WCF?
- 29. Inyectando datos a un servicio de WCF
- 30. Hosting servicio WCF en azul