OperationContractAttribute.AsyncPattern Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Indica que uma operação é implementada de forma assíncrona usando um Begin<par de métodos Nome> e End<método Nome> num contrato de serviço.
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
Valor de Propriedade
truese o Begin< método Nome>do Método for correspondido por um End< método Nome-Método> e puder ser tratado pela infraestrutura como uma operação implementada como um par de métodos assíncronos na interface de serviço; caso contrário, false. A predefinição é false.
Exemplos
O seguinte exemplo de código mostra um canal cliente para um contrato de serviço que inclui tanto uma versão síncrona como Add uma versão assíncrona. Se a interface contratual for usada no cliente, tanto o BeginAdd como a Add operação invocam um método no servidor que pode ou não ser síncrono. Se o contrato for usado para implementar o serviço, o padrão é que os pedidos recebidos sejam despachados para o método síncrono.
[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);
}
Observações
Use a AsyncPattern propriedade para construir operações de serviço que possam ser chamadas assíncronas no servidor, no cliente ou em ambos. A propriedade AsyncPattern informa o tempo de execução que um método Begin tem um método End correspondido que segue o padrão de design de métodos assíncronos do .NET Framework. Construir métodos assíncronos de servidor que implementem uma operação de serviço aumenta a escalabilidade e o desempenho do servidor sem afetar os clientes do serviço, e é recomendado quando uma operação de serviço tem de devolver algo ao cliente após realizar uma operação longa que pode ser realizada de forma assíncrona.
Os clientes permanecem inalterados porque o par de métodos assíncronos no servidor é um detalhe de implementação que não afeta a descrição subjacente da Web Services Description Language (WSDL) da operação. Tais métodos aparecem aos clientes como uma única operação com <input> e mensagens correlacionadas <output> . O WCF encaminha automaticamente as mensagens de entrada para o Begin< método methodName> e encaminha os resultados da End< chamada methodName> para a mensagem de saída. Os canais cliente, portanto, podem representar o par de métodos como uma única operação síncrona ou como um par de operações assíncronas. Em nenhum caso a representação do cliente afeta a implementação assíncrona no servidor de forma alguma.
Os contratos do cliente podem usar a AsyncPattern propriedade para indicar um par de métodos assíncronos que o cliente pode usar para invocar a operação de forma assíncrona. Normalmente, as aplicações cliente utilizam a ferramenta ServiceModel Metadata Utility Tool (Svcutil.exe) e a /async opção de gerar um Begin< par de métodos Nome> e End<método> que o cliente pode usar para invocar a operação de forma assíncrona.
Note
Se uma operação de serviço tiver tanto uma versão assíncrona como uma síncrona, o comportamento padrão do serviço é invocar a versão síncrona.