OperationContractAttribute.IsOneWay Propriété

Définition

Obtient ou définit une valeur qui indique si une opération retourne un message de réponse.Gets or sets a value that indicates whether an operation returns a reply message.

public:
 property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean

Valeur de propriété

true si cette méthode reçoit un message de demande et ne retourne aucun message de réponse ; sinon, false.true if this method receives a request message and returns no reply message; otherwise, false. La valeur par défaut est false,The default is false.

Exemples

L'exemple suivant est un service qui implémente un contrat de service qui spécifie trois opérations.The following example is a service that implements a service contract that specifies three operations. Deux des méthodes implémentent des opérations bidirectionnelles, qui retournent des messages de réponse sous-jacents à l'appelant, quelle que soit la valeur de retour.Two of the methods implement two-way operations, which return underlying response messages to the caller no matter what the return value is. La troisième méthode implémente une opération qui reçoit un appel (un message entrant sous-jacent) mais ne retourne aucun message de réponse sous-jacent.The third method implements an operation that receives a call (an underlying inbound message) but returns no underlying response message.

[ServiceContract]  
public class OneAndTwoWay  
{  
  // The client waits until a response message appears.  
  [OperationContract]  
  public int MethodOne (int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  
  
  // The client waits until an empty response message appears.  
  [OperationContract]  
  public void MethodTwo (int x)  
  {  
    return;  
  }  
  
  // The client returns as soon as an outbound message  
  // is queued for dispatch to the service; no response  
  // message is generated or sent.  
  [OperationContract(IsOneWay=true)]  
  public void MethodThree (int x)  
  {  
    return;  
  }  
}  

Remarques

Utilisez la propriété IsOneWay pour indiquer qu'une opération ne retourne aucun message de réponse.Use the IsOneWay property to indicate that an operation does not return a reply message. Ce type d'opération est utile pour les notifications ou la communication de style d'événement, notamment dans la communication bidirectionnelle.This type of operation is useful for notifications or event-style communication, especially in two-way communication. Sans attendre de message de réponse sous-jacent, les appelants d'opérations unidirectionnelles n'ont aucun moyen direct de détecter une défaillance au cours du traitement du message de demande.Without waiting for an underlying response message, callers of one-way operations have no direct way to detect a failure in processing the request message. (Les applications de service qui utilisent des canaux fiables et des opérations unidirectionnelles peuvent détecter un échec de remise de message au niveau du canal.(Service applications that use reliable channels and one-way operations can detect a message delivery failure at the channel level. Pour plus d’informations, consultez vue d’ensemble des sessions fiables.)For details, see Reliable Sessions Overview.)

Dans les applications de services en duplex (ou bidirectionnels) dans lesquelles le client et le serveur communiquent indépendamment l'un avec l'autre, un canal client peut utiliser la propriété IsOneWay sur ses méthodes pour indiquer que le service peut effectuer des appels unidirectionnels au client que le client peut traiter en tant qu'événements.In duplex (or two-way) service-oriented applications in which the client and server communicate with each other independently, a client channel can use the IsOneWay property on its methods to indicate that the service can make one-way calls to the client that the client can treat as events. Aucun appel de retour ou message n'est généré étant donné que le service n'attend pas de message de réponse.No return call or message is generated because the service does not expect any response message.

Si la propriété IsOneWay a la valeur false (valeur par défaut), même les méthodes qui retournent void génèrent un message de réponse.If the IsOneWay property is set to false (the default), even methods that return void result in a reply message. Dans ce cas, l'infrastructure crée et envoie un message vide pour indiquer à l'appelant que la méthode est renvoyée.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. (L’utilisation de cette approche permet à l’infrastructure de renvoyer des erreurs SOAP au client.) La définition de IsOneWay sur true est la seule façon d’annuler la création et la distribution d’un message de réponse.(Using this approach enables the infrastructure to send SOAP faults back to the client.) Setting IsOneWay to true is the only way to cancel the creation and dispatch of a response message.

Les méthodes unidirectionnelles ne doivent pas retourner de valeur ou avoir de paramètres ref ou out ; sinon, une exception System.InvalidOperationException est levée.One-way methods must not return a value or have ref or out parameters; otherwise a System.InvalidOperationException exception is thrown.

Spécifier qu'une opération est une opération unidirectionnelle signifie uniquement qu'il n'y a pas de message de réponse.Specifying that an operation is a one-way operation means only that there is no response message. Il est possible de bloquer si une connexion ne peut pas être établie, ou si le message sortant est très grand, ou si le service ne peut pas lire les informations entrantes assez rapidement.It is possible to block if a connection cannot be made, or the outbound message is very large, or if the service cannot read inbound information fast enough. Si un client a besoin d'un appel non bloquant, générez des opérations AsyncPattern.If a client requires a non-blocking call, generate AsyncPattern operations. Pour plus d’informations, consultez services unidirectionnels et accès aux services à l’aide d’un client WCF.For more information, see One-Way Services and Accessing Services Using a WCF Client.

S’applique à