Sdílet prostřednictvím


OperationContractAttribute.AsyncPattern Vlastnost

Definice

Označuje, že operace je implementována asynchronně pomocí Begin<methodName> a End<methodName> dvojice metod 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

true Begin < Pokud metoda methodName>odpovídá End< metodě methodName> a lze ji považovat za operaci implementovanou jako asynchronní metodu v rozhraní služby, jinak false. Výchozí hodnota je false.

Příklady

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

[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 můžete vytvářet operace služby, které lze volat asynchronně na serveru, klientovi nebo obojím. Vlastnost AsyncPattern informuje modul runtime, že Begin metoda má odpovídající End metodu, která odpovídá vzoru návrhu asynchronní 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 ovlivnilo klienty služby, a doporučuje se, když operace služby musí klientovi vrátit něco po provedení zdlouhavé operace, kterou je možné provést asynchronně.

Klienti zůstávají nedotčeni, protože dvojice asynchronních metod na serveru je podrobnosti implementace, která nemá vliv na popis základního jazyka WSDL (Web Services Description Language) operace. Takové metody se klientům zobrazují jako jedna operace a <input> korelují zprávy <output> . WCF automaticky směruje příchozí zprávy do Begin< metody methodName> a směruje výsledky End< volání methodName> do odchozí zprávy. Klientské kanály proto mohou představovat dvojici metod buď jako jednu synchronní operaci, nebo jako dvojici asynchronních operací. V žádném případě nemá reprezentace klienta vliv na asynchronní implementaci na serveru žádným způsobem.

Klientské kontrakty mohou pomocí AsyncPattern vlastnosti indikovat dvojici asynchronních metod, kterou 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<Begindvojici metodName> a End<methodName>, kterou může klient 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