web-dev-qa-db-fra.com

Délais d'attente WCF Services

Comment fonctionnent les délais d'attente dans WCF? Je sais par exemple que vous pouvez configurer sendTimeout et receiveTimeout pour une liaison client. Mais comment fonctionnent-ils?

MSDN décrit sendTimeout comme:

Une valeur TimeSpan qui spécifie l'intervalle de temps prévu pour qu'une opération d'envoi se termine. Cette valeur doit être supérieure ou égale à zéro. La valeur par défaut est 00:01:00.

Que sont les opérations d'envoi/réception?

61
TruckerG

Côté client:

  • SendTimeout est utilisé pour initialiser OperationTimeout, qui régit l'ensemble de l'interaction pour l'envoi d'un message (y compris la réception d'un message de réponse dans un cas de demande-réponse). Ce délai s'applique également lors de l'envoi de messages de réponse à partir d'une méthode CallbackContract.
  • OpenTimeout et CloseTimeout sont utilisés lors de l'ouverture et de la fermeture de canaux (lorsqu'aucune valeur de timeout explicite n'est transmise).
  • ReceiveTimeout n'est pas utilisé.

Du côté serveur:

  • Délai d'expiration d'envoi, d'ouverture et de fermeture identique à celui du client (pour les rappels).
  • ReceiveTimeout est utilisé par la couche ServiceFramework pour initialiser le délai d'expiration de session.

La source est Brian McNamara sur les forums MSDN .

61
Brian

Voir "Délais d'expiration dans WCF et leurs valeurs par défaut" http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values. aspx

Délais d'expiration sur liaison-SendTimeout, ReceiveTimeout, OpenTimeout et CloseTimeout. Ils peuvent être définis facilement soit par le biais de la configuration ou du code sur la liaison. La valeur par défaut pour ceux-ci est de 1 minute.

ServiceHost a OpenTimeout et CloseTimeout. La valeur par défaut pour OpenTimeout est de 1 minute et la valeur par défaut pour CloseTimeout est de 10 secondes.

Délais d'attente sur le canal côté client. Il existe un OperationTimeout, que vous pouvez définir en convertissant le canal en IContextChannel. La valeur par défaut est également de 1 minute. Ttimeout sur le transport TCP, appelé ChannelInitializationTimeout, et sa valeur par défaut est de 5 secondes.

ASPNET. Il existe un délai d'arrêt, tout comme le délai de fermeture de l'hôte du service, la valeur par défaut est de 90 secondes. ExecutionTimeout, tout comme notre délai d'opération, la valeur par défaut est de 110 secondes.

9
Michael Freidgeim

En plus de ce qui était sur ce post, il y a aussi le délai d'expiration de l'opération défini du côté client. Regarde ça:

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

4
sq33G