c# wcf silverlight

c# - ¿Cuándo cerrar cliente WCF?



silverlight (2)

Ciérralo explícitamente, preferiblemente en un {} de tu método Completado. Por cualquier motivo, si el cliente permanece conectado, comenzará a bloquear otras llamadas de clientes. Según el HTTP RFC:

Definido en 1999 (RFC 2616), los clientes que usan conexiones persistentes deben limitar el número de conexiones simultáneas que mantienen a un servidor determinado. Un cliente de un solo usuario NO DEBE mantener más de 2 conexiones con cualquier servidor o proxy. Un proxy DEBE usar hasta 2 * N conexiones a otro servidor o proxy, donde N es el número de usuarios activos simultáneamente. Estas directrices están destinadas a mejorar los tiempos de respuesta HTTP y evitar la congestión ". Dado que los desarrolladores están utilizando solicitudes similares a AJAX o AJAX para actualizar una página web, los límites de http se analizan cada vez más.

Con una carga, si no está cerrando sus conexiones, es muy posible que comience a bloquear. Por supuesto, estoy asumiendo que esto es HttpBinding.

Puse una instancia del proxy del cliente para el servicio WCF en una propiedad en la clase de la Aplicación para poder obtenerla desde cualquier parte de la aplicación.

No estoy cerrando el cliente, lo dejo abierto mientras dure la aplicación. La razón principal de esto es que si tuviera que seguir el // Comentario en la página de mex del servicio WCF (el que obtiene si apunta un navegador a la url del servicio WCF), dice // Siempre cerrar el cliente. cliente.close ();

lo cual está bien, excepto si llamo a client.Close () justo después de hacer una llamada al client.SomeAsync () luego se cierra antes de que los resultados regresen. ¿Debo poner el cierre en el método Completado ()? O simplemente debería olvidarme de cerrarlo, ya que una vez que esté cerrado, tengo que crear una nueva instancia del proxy del cliente (también podría no almacenarlo en la propiedad de la aplicación, si ese es el caso.

gracias Stephen


Debe cerrarlo como se aconseja. Y sí, si está utilizando los métodos asíncronos, debe cerrarlo solo después de que se complete la llamada.

Crear (abrir) y cerrar clientes es la norma para los clientes de WCF. No hay una penalización de rendimiento notable por crear y cerrar continuamente nuevos clientes.