OperationContractAttribute.AsyncPattern OperationContractAttribute.AsyncPattern OperationContractAttribute.AsyncPattern OperationContractAttribute.AsyncPattern Property

Определение

Указывает, что операция реализуется асинхронно с помощью пары методов Begin<methodName> и End<methodName> контракта службы.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

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

Значение свойства

true, если Begin @ no__t-2имя_метода>method совпадает с методом End @ no__t-6имя_метода> и может рассматриваться инфраструктурой как операция, реализованная в виде пары асинхронных методов в интерфейс службы; в противном случае false.true if the Begin<methodName>method is matched by an End<methodName> method and can be treated by the infrastructure as an operation that is implemented as an asynchronous method pair on the service interface; otherwise, false. Значение по умолчанию — false.The default is false.

Примеры

В приведенном ниже примере кода показан клиентский канал к контракту службы, который включает синхронную и асинхронную версии операции Add.The following code example shows a client channel to a service contract that includes both a synchronous version of Add and an asynchronous version. Если интерфейс контракта используется на клиенте, то операция BeginAdd и операция Add вызывают метод на сервере, который может быть или не быть синхронным.If the contract interface is used on the client, both the BeginAdd and the Add operation invoke a method on the server that may or may not be synchronous. Если контракт используется для реализации службы, по умолчанию входящие запросы отправляются в синхронный метод.If the contract is used to implement the service, the default is that incoming requests are dispatched to the synchronous method.

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

Комментарии

Используйте свойство AsyncPattern для создания операций службы, которые могут вызываться асинхронно на сервере, клиенте или на сервере и клиенте.Use the AsyncPattern property to build service operations that can be called asynchronously on the server, the client, or both. Свойство AsyncPattern информирует среду выполнения о том, что метод Begin имеет сопоставленный метод End, соответствующий шаблону проектирования асинхронных методов платформы .NET Framework.The AsyncPattern property informs the runtime that a Begin method has a matched End method that conforms to the .NET Framework asynchronous method design pattern. Создание асинхронных методов сервера, которые реализуют операцию службы, увеличивает масштабируемость и производительность сервера, не влияя на клиентов службы, и рекомендуется, когда операция службы должна возвращать что-нибудь клиенту после выполнения очень длинной операции, которая может быть выполнена асинхронно.Building server asynchronous methods that implement a service operation increases server scalability and performance without affecting the clients of the service, and is recommended when a service operation must return something to the client after performing a lengthy operation that can be performed asynchronously.

Клиенты остаются незатронутыми, поскольку пара асинхронных методов на сервере представляет собой отдельную часть реализации, которая не затрагивает базовое описание операции на языке WSDL.Clients remain unaffected because the asynchronous method pair on the server is an implementation detail that does not affect the underlying Web Services Description Language (WSDL) description of the operation. Такие методы отображаются для клиентов в виде одной операции с <input> и коррелированными сообщениями <output>.Such methods appear to clients as a single operation with <input> and correlated <output> messages. WCF автоматически направляет входящие сообщения в метод Begin @ no__t-1имя_метода> и направляет результаты вызова End @ no__t-4имя_метода> в исходящее сообщение.WCF automatically routes inbound messages to the Begin<methodName> method and routes the results of the End<methodName> call to the outbound message. Клиентские каналы, следовательно, могут представлять пару методов либо как единственную синхронную операцию, либо как пару асинхронных операций.Client channels, therefore, can represent the method pair as either a single synchronous operation or as an asynchronous operation pair. Ни в одном случае представление клиента никаким образом не влияет на асинхронную реализацию на сервере.In no case does the client representation affect the asynchronous implementation on the server in any way.

Клиентские контракты могут использовать свойство AsyncPattern, чтобы указать пару асинхронных методов, которые клиент может применять для асинхронного вызова операции.Client contracts can use the AsyncPattern property to indicate an asynchronous method pair that the client can use to invoke the operation asynchronously. Как правило, клиентские приложения используют средство служебной программы метаданных ServiceModel (Svcutil. exe) и параметр /async для создания пары методов Begin @ no__t-3имя_метода> и End @ no__t-6имя_метода>, которые Клиент может использовать для асинхронного вызова операции.Typically, client applications use the ServiceModel Metadata Utility Tool (Svcutil.exe) tool and the /async option to generate a Begin<methodName> and End<methodName> method pair that the client can use to invoke the operation asynchronously.

Примечание

Если операция службы имеет асинхронную и синхронную версии, поведение по умолчанию в службе должно вызвать синхронную версию.If a service operation has both an asynchronous and a synchronous version, the default behavior on the service is to invoke the synchronous version.

Применяется к