Partilhar via


OperationContractAttribute.AsyncPattern Propriedade

Definição

Indica que uma operação é implementada de forma assíncrona usando um Begin<par de métodos methodName> e End<methodName> em um 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 da propriedade

Boolean

truese o Begin<methodNamemethod> for correspondido por um End< método methodName> e puder ser tratado pela infraestrutura como uma operação implementada como um par de métodos assíncrono na interface do serviço; caso contrário, false. O padrão é false.

Exemplos

O exemplo de Add código a seguir mostra um canal cliente para um contrato de serviço que inclui uma versão síncrona e uma versão assíncrona. Se a interface do contrato for usada no cliente, a operação e Add a BeginAdd operação invocarão 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 as solicitações de entrada sejam enviadas 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);  
   }  

Comentários

Use a AsyncPattern propriedade para criar operações de serviço que podem ser chamadas de forma assíncrona no servidor, no cliente ou em ambos. A AsyncPattern propriedade informa ao runtime que um Begin método tem um método correspondente End que está em conformidade com o padrão de design de método assíncrono .NET Framework. Criar métodos assíncronos do servidor que implementam 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 deve retornar algo ao cliente depois de executar uma operação longa que pode ser executada de forma assíncrona.

Os clientes permanecem não afetados porque o par de métodos assíncronos no servidor é um detalhe de implementação que não afeta a descrição subjacente da WSDL (Linguagem de Descrição dos Serviços Web) da operação. Esses métodos aparecem para clientes como uma única operação com <input> mensagens correlacionadas e com mensagens correlacionadas <output> . O WCF roteia automaticamente as mensagens de entrada para o Begin<methodName> método e roteia os resultados da End<methodName> chamada para a mensagem de saída. Os canais do 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 qualquer forma.

Os contratos de 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, os aplicativos cliente usam a ferramenta ServiceModel Metadata Utility Tool (Svcutil.exe) e a opção /async de gerar um par e End<methodName> método Begin<methodName> que o cliente pode usar para invocar a operação de forma assíncrona.

Observação

Se uma operação de serviço tiver uma versão assíncrona e síncrona, o comportamento padrão no serviço será invocar a versão síncrona.

Aplica-se a