Tiempo de espera de los servicios de WCF

¿Cómo funcionan los tiempos de espera en WCF? Sé por ejemplo que puede configurar sendTimeout y receiveTimeout para un enlace de clientes. Pero, como trabajan?

MSDN describe sendTimeout como:

Un valor de TimeSpan que especifica el intervalo de tiempo proporcionado para que se complete una operación de envío. Este valor debe ser mayor o igual a cero. El valor predeterminado es 00:01:00.

¿Qué son operaciones de envío / operaciones de recepción?

Lado del cliente:

  • SendTimeout se usa para inicializar OperationTimeout, que rige toda la interacción para enviar un mensaje (incluso recibir un mensaje de respuesta en un caso de solicitud y respuesta). Este tiempo de espera también se aplica al enviar mensajes de respuesta desde un método CallbackContract.
  • OpenTimeout y CloseTimeout se utilizan al abrir y cerrar canales (cuando no se pasa un valor de tiempo de espera explícito).
  • ReceiveTimeout no se usa.

Lado del servidor:

  • Enviar, abrir y cerrar tiempo de espera igual que en el cliente (para devoluciones de llamada).
  • ReceiveTimeout es utilizado por la capa ServiceFramework para inicializar el tiempo de inactividad de la sesión inactiva.

La fuente es Brian McNamara en los foros de MSDN .

Consulte “Tiempos de espera en WCF y sus valores predeterminados” http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

Tiempos de espera en el enlace: SendTimeout, ReceiveTimeout, OpenTimeout y CloseTimeout. Se pueden configurar fácilmente a través de la configuración o el código en el enlace. El valor predeterminado para esos son 1 minuto.

ServiceHost tiene OpenTimeout y CloseTimeout. El valor predeterminado para OpenTimeout es de 1 minuto, y el predeterminado para CloseTimeout es de 10 segundos.

Tiempos de espera en el canal del lado del cliente. Hay un OperationTimeout, que puede configurar lanzando el canal a IContextChannel. El valor predeterminado para esto también es de 1 minuto. Ttimeout en el transporte tcp, llamado ChannelInitializationTimeout, y su valor predeterminado es 5 segundos.

ASPNET. Hay un tiempo de espera de apagado, al igual que el tiempo de espera de cierre del host del servicio, el valor predeterminado es 90 segundos. ExecutionTimeout, al igual que nuestro tiempo de espera de operación, el valor predeterminado es 110 segundos.

Además de lo que estaba en esa publicación, también está definido el Tiempo de espera de la operación en el cliente final. Mira esto:

http://final-proj.blogspot.com/2009/09/wcf-timeouts.html