OperationContractAttribute.AsyncPattern Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
Begin
< 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, false
jinak . 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.