OperationContractAttribute.AsyncPattern Vlastnost

Definice

Označuje, že operace je implementována asynchronně pomocí Begin< dvojice methodName> a End<methodName> v kontraktu služby.

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

Hodnota vlastnosti

trueBegin< Pokud metoda methodName>odpovídá End< metodě methodName> a infrastruktura ji může považovat za operaci implementovanou jako asynchronní dvojici metod v rozhraní služby, falsejinak . Výchozí formát je false.

Příklady

Následující příklad kódu ukazuje kanál klienta ke kontraktu služby, který obsahuje synchronní verzi Add i asynchronní verzi. Pokud se na klientovi používá rozhraní kontraktu BeginAdd , vyvolá operace i Add metodu na serveru, která může nebo nemusí být synchronní. Pokud se kontrakt používá k implementaci služby, ve výchozím nastavení se příchozí požadavky odesílají synchronní metodě.

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

Poznámky

AsyncPattern Pomocí vlastnosti sestavte operace služby, které lze volat asynchronně na serveru, v klientovi nebo v obou. Vlastnost AsyncPattern informuje modul runtime, že Begin metoda má odpovídající End metodu, která odpovídá vzoru asynchronního návrhu metody rozhraní .NET Framework. Vytváření asynchronních metod serveru, které implementují operaci služby, zvyšuje škálovatelnost a výkon serveru, aniž by to mělo vliv na klienty služby, a doporučuje se, když operace služby musí klientovi něco vrátit po provedení zdlouhavé operace, kterou lze provést asynchronně.

Klienti zůstanou nedotčeni, protože dvojice asynchronních metod na serveru je podrobností implementace, která nemá vliv na popis příslušné operace v jazyce WSDL (Web Services Description Language). Takové metody se klientům zjevují jako jedna operace se zprávami a korelují <output> se zprávami<input>. WCF automaticky směruje příchozí zprávy do Begin<metody methodName> a směruje výsledky End< volání methodName> odchozí zprávy. Klientské kanály proto můžou znázorňovat dvojici metod buď jako jednu synchronní operaci, nebo jako asynchronní pár operací. Reprezentace klienta v žádném případě nijak neovlivňuje asynchronní implementaci na serveru.

Klientské kontrakty AsyncPattern mohou použít vlastnost k označení dvojice asynchronních metod, které klient může použít k asynchronnímu vyvolání operace. Klientské aplikace obvykle používají nástroj ServiceModel Metadata Utility Tool (Svcutil.exe) a /async možnost vygenerovat Begin< dvojici metod methodName> a End<methodName>, které klient může použít k asynchronnímu vyvolání operace.

Poznámka

Pokud má operace služby asynchronní i synchronní verzi, výchozí chování služby je vyvolání synchronní verze.

Platí pro