Udostępnij za pośrednictwem


OperationContractAttribute.AsyncPattern Właściwość

Definicja

Wskazuje, że operacja jest implementowana asynchronicznie przy użyciu Begin< pary 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 zgodna z metodą methodName> i może być traktowana przez End< infrastrukturę jako operację zaimplementowaną jako para metod asynchronicznych 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 synchroniczną wersję, jak i wersję Add asynchroniczną. Jeśli interfejs kontraktu jest używany na kliencie, zarówno operacja, jak BeginAdd 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 programu .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 zaleca się, 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, których klient może użyć do wywołania operacji asynchronicznie. Zazwyczaj aplikacje klienckie używają narzędzia ServiceModel Metadata Tool (Svcutil.exe) i /async opcji generowania<Begin pary metod methodName> i End<methodName>, których klient może użyć do wywołania operacji asynchronicznie.

Uwaga / Notatka

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

Dotyczy