Udostępnij za pośrednictwem


OperationContractAttribute.AsyncPattern Właściwość

Definicja

Wskazuje, że operacja jest implementowana asynchronicznie przy użyciu Begin< pary metody methodName> i End<methodName> w kontrakcie usługi.

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

Wartość właściwości

truejeśli metoda methodName>jest dopasowywana przez metodę End<methodName> i może być traktowana przez infrastrukturę jako operację zaimplementowaną jako para metody asynchronicznej w interfejsie usługi; w przeciwnym razie false.Begin< Wartość domyślna to false.

Przykłady

Poniższy przykład kodu przedstawia kanał klienta kontraktu usługi, który zawiera zarówno wersję synchroniczną, Add jak i wersję asynchroniczną. Jeśli interfejs kontraktu jest używany na kliencie, zarówno BeginAdd operacja , jak i Add wywołać metodę na serwerze, która może lub nie może być synchroniczna. Jeśli kontrakt jest używany do implementowania usługi, domyślnie żądania przychodzące są wysyłane do metody synchronicznej.

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

Uwagi

AsyncPattern Użyj właściwości , aby skompilować operacje usługi, które mogą być wywoływane asynchronicznie na serwerze, kliencie lub obu tych operacjach. Właściwość AsyncPattern informuje środowisko uruchomieniowe, że Begin metoda ma dopasowaną End metodę zgodną ze wzorcem projektowania metody asynchronicznej .NET Framework. Tworzenie metod asynchronicznych serwera, które implementują operację usługi, zwiększa skalowalność i wydajność serwera bez wpływu na klientów usługi i jest zalecane, gdy operacja usługi musi zwrócić coś do klienta po wykonaniu długotrwałej operacji, którą można wykonać asynchronicznie.

Klienci pozostają bez wpływu, ponieważ para metod asynchronicznych na serwerze jest szczegółem implementacji, który nie ma wpływu na podstawowy opis usługi sieci Web (WSDL) operacji. Takie metody wydają się być klientami jako pojedyncza operacja z komunikatami <input> skorelowanych i skorelowanych <output> . Program WCF automatycznie kieruje komunikaty przychodzące do Begin< metody methodName> i kieruje wyniki End< wywołania methodName> do komunikatu wychodzącego. W związku z tym kanały klienta mogą reprezentować parę metod jako pojedynczą operację synchroniczną lub jako parę operacji asynchronicznych. W żadnym przypadku reprezentacja klienta wpływa na implementację asynchroniczną na serwerze w jakikolwiek sposób.

Kontrakty klienta mogą używać AsyncPattern właściwości , aby wskazać parę metod asynchronicznych, za pomocą których klient może wywołać operację asynchronicznie. Zazwyczaj aplikacje klienckie używają narzędzia ServiceModel Metadata Tool (Svcutil.exe) i /async opcji generowania<Begin pary metod methodName> i End<methodName>, za pomocą których klient może wywołać operację asynchronicznie.

Uwaga

Jeśli operacja usługi ma zarówno wersję asynchroniczną, jak i synchroniczną, domyślnym zachowaniem usługi jest wywołanie wersji synchronicznej.

Dotyczy