OperationContractAttribute.AsyncPattern Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique qu’une opération est implémentée de manière asynchrone à l’aide d’une Begin
< paire méthodeName> et End
<methodName> dans un contrat de service.
public:
property bool AsyncPattern { bool get(); void set(bool value); };
public bool AsyncPattern { get; set; }
member this.AsyncPattern : bool with get, set
Public Property AsyncPattern As Boolean
Valeur de propriété
true
si methodNamemethod>Begin
< est mis en correspondance par une<End
méthode methodName> et peut être traité par l’infrastructure comme une opération implémentée comme une paire de méthodes asynchrone sur l’interface de service ; sinon, false
. La valeur par défaut est false
.
Exemples
L'exemple de code suivant présente un canal client à un contrat de service qui inclut à la fois une version synchrone de Add
et une version asynchrone. Si l'interface de contrat est utilisée sur le client, l'opération BeginAdd
et l'opération Add
appellent une méthode sur le serveur qui peut ou peut ne pas être synchrone. Si le contrat est utilisé pour implémenter le service, la valeur par défaut est que les requêtes entrantes sont distribuées à la méthode synchrone.
[ServiceContract]
public interface IAddTwoNumbers
{
// If the asynchronous method pair
// appears on the client channel, the client can call
// them asynchronously to prevent blocking.
[OperationContract (AsyncPattern=true)]
IAsyncResult BeginAdd(int a, int b, AsyncCallback cb, AsyncState s);
[OperationContract]
int EndAdd(IAsyncResult r);
// This is a synchronous version of the BeginAdd/EndAdd pair.
// It appears in the client channel code by default.
[OperationContract]
int Add(int a, int b);
}
Remarques
Utilisez la propriété AsyncPattern pour générer des opérations de service qui peuvent être appelées de façon asynchrone sur le serveur, le client ou les deux. La propriété AsyncPattern informe l'exécution qu'une méthode Begin
a une méthode End
correspondante qui se conforme au modèle de design de méthode asynchrone du .NET Framework. La génération de méthodes asynchrones de serveur qui implémentent une opération de service augmente l'évolutivité et les performances du serveur sans affecter les clients du service, et est recommandée lorsqu'une opération de service doit retourner quelque chose au client après avoir l'exécution d'une longue opération qui peut être exécutée de façon asynchrone.
Les clients restent non affectés car la paire de méthodes asynchrones sur le serveur est un détail d'implémentation qui n'affecte pas la description WSDL (Web Services Description Language) sous-jacente de l'opération. Ces méthodes apparaissent pour les clients comme une seule opération avec <input>
et des messages corrélés <output>
. WCF achemine automatiquement les messages entrants vers la Begin
<methodName> méthode et achemine les résultats de l’appel End
<methodName> vers le message sortant. Par conséquent, les canaux clients peuvent représenter la paire de méthodes en tant qu'opération synchrone unique ou comme une paire d'opérations asynchrones. Dans tous les cas, la représentation du client n'affecte en aucune façon l'implémentation asynchrone sur le serveur.
Les contrats de client peuvent utiliser la propriété AsyncPattern pour indiquer une paire de méthodes asynchrones que le client peut utiliser pour appeler l'opération de façon asynchrone. En règle générale, les applications clientes utilisent l’outil Utilitaire de métadonnées ServiceModel (Svcutil.exe) et l’option /async
permettant de générer une End``Begin
<methodName><methodName> paire de méthodes que le client peut utiliser pour appeler l’opération de manière asynchrone.
Notes
Si une opération de service a à la fois une version asynchrone et une version synchrone, le comportement par défaut sur le service est d’appeler la version synchrone.