Contrato de devolución de llamada de larga duración a través del canal dúplex WCF: ¿patrones de diseño alternativos?

StackOverflow https://stackoverflow.com/questions/600256

Pregunta

Tengo un servicio de Windows que registra las lecturas de velocidad de una pistola de radar en una base de datos. Además, hice del servicio un servidor WCF. Tengo un cliente de Formularios y CF que se suscribe al servicio y me devuelven la llamada cada vez que hay una lectura que satisface ciertos criterios.

Esto funciona en principio, pero después de un tiempo, el canal expira. Parece que hay algunos problemas fundamentales con las conexiones de larga duración (ver http://blogs.msdn.com /drnick/archive/2007/11/05/custom-transport-retry-logic.aspx ) y una devolución de llamada HTTP dúplex puede no ser la solución correcta. ¿Hay alguna otra manera de realizar un patrón de publicación / suscripción con WCF?

Editar: Incluso con un tiempo de espera de 2 horas, el canal finalmente se ve comprometido. Me sale este error:

La operación 'SignalSpeedData' no se pudo completar porque el canal de sesión se agotó el tiempo de espera para recibir un mensaje. Para aumentar el tiempo de espera, establezca la propiedad receiveTimeout en el enlace en su archivo de configuración, o configure la propiedad ReceiveTimeout en el enlace directamente.

Esto sucedió 15 minutos después de la última llamada exitosa. Me pregunto si, en lugar de mantener la sesión abierta, es posible restablecer una sesión nueva para cada llamada.

¿Fue útil?

Solución

La mensajería confiable se encargará de sus necesidades. El canal se restablece si hay un problema. WSDualHTTPBinding proporciona esto para el enlace http, y también hay un enlace tcp que lo permite. Si está en la misma computadora, el enlace de tubería con nombre lo proporcionará de forma predeterminada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top