2010-10-26 11 views

Respuesta

2

Esto depende en cierta medida de cuáles son sus requisitos. Abrir un canal es costoso, hablando en términos relativos. La mejor práctica es hacer que la clase que está haciendo las llamadas remotas implemente IDisposable, debe hacer una llamada a ClientFactory.CreateChannel una vez, usar los canales en todas las llamadas a métodos y cerrar el canal cuando se llama al método Dispose. Dicho esto, si el tiempo entre las llamadas a métodos que llaman a un servicio remoto es largo (más largo que el tiempo de espera inactivo predeterminado en el canal, que es de 10 minutos), entonces hacer un ClientFactory.CreateChannel no es particularmente dañino, pero yo diría aún sería mejor ir a la ruta IDisposable y encapsular el uso de la clase con la palabra clave 'using'

+0

realidad: la creación del canal es bastante ligero - creando el ChannelFactory es lo que es bastante "pesado" en el rendimiento ... –

+0

@marc_s: Creo que eso depende, si el canal, por ejemplo, tiene la seguridad de que, la seguridad La negociación se lleva a cabo cada vez que se abre un socket en el servicio, esto puede hacer que su llamada a un método tarde más tiempo, ¿verdad? –

+0

@marc_s ¿no mejoraron la creación de ChannelFactory? O al menos estoy seguro de que leí que mejoraron la creación después de la primera vez. Actualización: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx – MattC

0

creando un nuevo canal para cada llamada de método viene en malas prácticas "en general".

para Dúplex WCF Servicio

la creación de un solo canal y usarlo hasta que no haya necesidad de comunicarse con el servidor más/o que el canal se cierra.

Después de crear el canal, antes de realizar cualquier llamada al servidor, se recomienda verificar el estado del canal (Error, apertura, cerrado).

Se recomienda registrar el canal cerrado/Eventos de error para conocer de inmediato cuando ocurre. para que pueda tomar las acciones necesarias o/y crear el canal nuevamente con la misma referencia de objeto de canal de objetos.

Para el servicio normal WCF

crear el patrón proxy, para crear canales/reutilizar/re crean, manejo de errores y eliminación. establezca el tiempo de espera de inactividad adecuado junto con la configuración adecuada del proxy del cliente WCF que mejor se adapte a su solución.

Siempre prueba de carga !!!!

Cuestiones relacionadas