OperationContractAttribute.AsyncPattern Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 metodaNamemethod jest zgodna z metodą methodName>> i może być traktowana przez End< infrastrukturę jako operację implementowaną jako parę metod asynchronicznych w interfejsie usługi; w przeciwnym razie . falseBegin< 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 Add 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óry może lub nie może być synchroniczny. 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 utworzyć 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 zgodną End metodę zgodną z wzorcem projektowania metody asynchronicznej .NET Framework. Kompilowanie 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ługiej operacji, którą można wykonać asynchronicznie.
Klienci pozostają bez wpływu, ponieważ para metody asynchronicznej 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ę klientom jako pojedyncza operacja z komunikatami <input> i skorelowane <output> . Program WCF automatycznie kieruje komunikaty przychodzące do Begin<methodName> metody i kieruje wyniki End<methodName> wywołania 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 nie 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órej klient może wywołać operację asynchronicznie. Zazwyczaj aplikacje klienckie używają narzędzia ServiceModel Metadata Tool (Svcutil.exe) i /async opcji generowania pary metod iEnd<methodName>, za pomocą których klient może wywołać operację Begin<methodName> asynchronicznie.
Uwaga
Jeśli operacja usługi ma zarówno asynchroniczną, jak i synchroniczną wersję, domyślnym zachowaniem usługi jest wywołanie wersji synchronicznej.