OperationContractAttribute.AsyncPattern Свойство

Определение

Указывает, что операция реализуется асинхронно с помощью Begin< пары методов methodName> и End<methodName> в контракте службы.

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

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

Значение />, если метод methodNameсоответствует методу methodName и может рассматриваться инфраструктурой как операция, реализуемая как пара асинхронных методов в интерфейсе службы; в противном случае . Значение по умолчанию — false.

Примеры

В следующем примере кода показан клиентский канал к контракту службы, который включает синхронную версию Add и асинхронную версию. Если в клиенте используется интерфейс контракта, BeginAddAdd операция вызывает метод на сервере, который может или не может быть синхронным. Если контракт используется для реализации службы, значение по умолчанию заключается в том, что входящие запросы отправляются в синхронный метод.

[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 Используйте свойство для создания операций службы, которые могут вызываться асинхронно на сервере, клиенте или обоих. Свойство AsyncPattern сообщает среде выполнения, что Begin метод имеет соответствующий End метод, соответствующий шаблону проектирования асинхронных методов .NET Framework. Создание асинхронных методов сервера, реализующих операцию службы, повышает масштабируемость и производительность сервера, не затрагивая клиентов службы, и рекомендуется, когда операция службы должна возвращать клиенту что-то после выполнения длительной операции, которая может выполняться асинхронно.

Клиенты остаются не затронутыми, так как пара асинхронных методов на сервере — это сведения о реализации, которые не влияют на описание операции языка описания веб-служб (WSDL). Такие методы представляются клиентами как единая операция с <input> сообщениями и коррелируются <output> . WCF автоматически направляет входящие сообщения Begin< в метод methodName> и направляет результаты End< вызова methodName> в исходящее сообщение. Таким образом, клиентские каналы могут представлять пару методов как одну синхронную операцию или как асинхронную пару операций. В любом случае представление клиента не влияет на асинхронную реализацию на сервере каким-либо образом.

Контракты клиентов могут использовать AsyncPattern свойство, чтобы указать пару асинхронных методов, которую клиент может использовать для асинхронного вызова операции. Как правило, клиентские приложения используют средство служебной программы метаданных ServiceModel (Svcutil.exe) и /async параметр для создания Begin< пары методов methodName> и End<methodName>, которую клиент может использовать для асинхронного вызова операции.

Note

Если операция службы имеет асинхронную и синхронную версию, поведение по умолчанию в службе — вызвать синхронную версию.

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