2008-10-29 23 views
5

Tengo una aplicación de cliente que utiliza el servicio WCF para insertar algunos datos en la base de datos back-end. La aplicación del cliente llamará al servicio por evento (puede ser cada hora o cada segundo).Mejor enfoque para el cliente WCF

Me pregunto cuál es la mejor manera de llamar a ese servicio.

¿Debo crear un canal de comunicación y mantenerlo abierto todo el tiempo, o debo cerrar el canal después de cada llamada y crearlo de nuevo?

+0

Una sugerencia sobre la creación de interfaces e implementaciones de host y cliente WCF: llame a los objetos de su cliente "hosts" y su host objetos "clientes". Cuando estás en el lado del cliente, estás buscando contactar al anfitrión, no a "IClientSideComms". – Will

Respuesta

5

La primera pregunta es si su servidor necesita mantener cualquier estado sobre el cliente directamente (es decir, ¿está haciendo transacciones similares a una sesión?) Si es así, deberá ser capaz de administrar cómo el servidor guarda la información entre comunicaciones.

Mi sensación inicial de su pregunta es que si no hay necesidad de dejar una conexión abierta, ciérrela cada vez y recree una nueva conexión a pedido. Esto evitará problemas donde una conexión se puede colocar en un estado de falla entre llamadas. La sobrecarga de crear y destruir conexiones es mínima, y ​​probablemente (probablemente) le ahorrará mucho tiempo en la depuración cuando algo sale mal.

1

Creo que probablemente desee implementar un Keep Alive pattern, con una duración configurable para informar a su mecanismo subyacente que cierre la conexión si sobrepasa la duración Keep-alive con cero actividad de comunicación.

Cuestiones relacionadas