OperationContractAttribute.AsyncPattern Eigenschaft

Definition

Gib an, dass ein Vorgang mit dem Methodenpaar Begin<Methodenname> und End<Methodenname> in einem Dienstvertrag asynchron implementiert wird.

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

Eigenschaftswert

true , wenn die Begin<methodName-Methode>mit einer End<methodName-Methode> übereinstimmt und von der Infrastruktur als Vorgang behandelt werden kann, der als asynchrones Methodenpaar auf der Dienstschnittstelle implementiert wird, falseandernfalls . Der Standardwert ist false.

Beispiele

Im nachstehenden Codebeispiel ist ein Clientkanal zu einem Dienstvertrag dargestellt, der sowohl eine synchrone als auch eine asynchrone Version von Add beinhaltet. Wird die Vertragsschnittstelle auf dem Client verwendet, rufen sowohl der BeginAdd-Vorgang als auch der Add-Vorgang eine Methode auf dem Server auf, die synchron oder asynchron sein kann. Wir der Dienst mit dem Vertrag implementiert, werden laut Standardeinstellung eingehende Anforderungen an die synchrone Methode gesendet.

[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);  
   }  

Hinweise

Verwenden Sie die AsyncPattern-Eigenschaft zur Erstellung von Dienstvorgängen, die asynchron auf dem Server, dem Client oder beiden aufgerufen werden können. Die AsyncPattern-Eigenschaft informiert die Laufzeit, dass eine Begin-Methode über eine passende End-Methode verfügt, die mit den Entwurfsmustern von .NET Framework für asynchrone Methoden übereinstimmt. Mit der Erstellung von asynchronen Servermethoden, die einen Dienstvorgang implementieren, wird die Skalierbarkeit und die Leistung des Servers erhöht, ohne dass die Clients des Servers dadurch beeinträchtigt werden. Dieser Schritt wird empfohlen, wenn ein Dienstvorgang nach der Durchführung eines langwierigen Vorgangs etwas zurückgeben muss, das asynchron durchgeführt werden kann.

Auf Clients hat dies keine Auswirkung, da das asynchrone Methodenpaar auf dem Server ein Implementierungsdetail ist, das sich nicht auf die zugrunde liegende WSDL (Web Services Description Language)-Beschreibung des Vorgangs auswirkt. Solche Methoden erscheinen Clients als einzelner Vorgang mit <input> und korrelierten <output> Nachrichten. WCF leitet eingehende Nachrichten automatisch an die Begin<methodName-Methode> weiter und leitet die Ergebnisse des End<methodName-Aufrufs> an die ausgehende Nachricht weiter. Clientkanäle können daher das Methodenpaar als einzelnen synchronen Vorgang oder als asynchrones Vorgangspaar darstellen. In keinem Fall wirkt sich die Clientdarstellung in irgendeiner Weise auf die asynchrone Implementierung auf dem Server aus.

In Clientverträgen kann die AsyncPattern-Eigenschaft zur Angabe eines asynchronen Methodenpaars verwendet werden, mit dem der Client den Vorgang asynchron aufrufen kann. In der Regel verwenden Clientanwendungen das ServiceModel Metadata Utility Tool (Svcutil.exe) und die /async Option zum Generieren eines Begin<Methodenpaars methodName> und End<methodName> , das der Client zum asynchronen Aufrufen des Vorgangs verwenden kann.

Hinweis

Ist für einen Dienstvorgang sowohl eine asynchrone als auch eine synchrone Version vorhanden, ist das Standardverhalten für den Dienst der Aufruf der synchronen Version.

Gilt für: