Partilhar via


OperationContractAttribute.IsOneWay Propriedade

Definição

Obtém ou define um valor que indica se uma operação retorna uma mensagem de resposta.

public:
 property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean

Valor da propriedade

Boolean

true se esse método receber uma mensagem de solicitação e não retornar nenhuma mensagem de resposta; caso contrário, false. O padrão é false.

Exemplos

O exemplo a seguir é um serviço que implementa um contrato de serviço que especifica três operações. Dois dos métodos implementam operações bidirecionais, que retornam mensagens de resposta subjacentes ao chamador, independentemente do valor retornado. O terceiro método implementa uma operação que recebe uma chamada (uma mensagem de entrada subjacente), mas não retorna nenhuma mensagem de resposta subjacente.

[ServiceContract]  
public class OneAndTwoWay  
{  
  // The client waits until a response message appears.  
  [OperationContract]  
  public int MethodOne (int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  

  // The client waits until an empty response message appears.  
  [OperationContract]  
  public void MethodTwo (int x)  
  {  
    return;  
  }  

  // The client returns as soon as an outbound message  
  // is queued for dispatch to the service; no response  
  // message is generated or sent.  
  [OperationContract(IsOneWay=true)]  
  public void MethodThree (int x)  
  {  
    return;  
  }  
}  

Comentários

Use a IsOneWay propriedade para indicar que uma operação não retorna uma mensagem de resposta. Esse tipo de operação é útil para notificações ou comunicação no estilo de evento, especialmente na comunicação bidirecional. Sem aguardar uma mensagem de resposta subjacente, os chamadores de operações unidirecionais não têm uma maneira direta de detectar uma falha no processamento da mensagem de solicitação. (Aplicativos de serviço que usam canais confiáveis e operações unidirecionais podem detectar uma falha na entrega de mensagens no nível do canal. Para obter detalhes, consulte Visão geral das Sessões Confiáveis.)

Em aplicativos duplex (ou bidirecionais) orientados ao serviço em que o cliente e o servidor se comunicam entre si de forma independente, um canal cliente pode usar a IsOneWay propriedade em seus métodos para indicar que o serviço pode fazer chamadas unidirecionais para o cliente que o cliente pode tratar como eventos. Nenhuma chamada ou mensagem de retorno é gerada porque o serviço não espera nenhuma mensagem de resposta.

Se a IsOneWay propriedade estiver definida como false (o padrão), mesmo os métodos que retornam void resultarão em uma mensagem de resposta. Nesse caso, a infraestrutura cria e envia uma mensagem vazia para indicar ao chamador que o método retornou. (Usar essa abordagem permite que a infraestrutura envie falhas SOAP de volta ao cliente.) true A configuração IsOneWay é a única maneira de cancelar a criação e a expedição de uma mensagem de resposta.

Os métodos unidirecionais não devem retornar um valor ou ter ref ou out parâmetros; caso contrário, uma System.InvalidOperationException exceção é gerada.

Especificar que uma operação é uma operação unidirecional significa apenas que não há nenhuma mensagem de resposta. É possível bloquear se uma conexão não puder ser feita ou a mensagem de saída for muito grande ou se o serviço não puder ler informações de entrada com rapidez suficiente. Se um cliente exigir uma chamada sem bloqueio, gere AsyncPattern operações. Para obter mais informações, consulte Serviços unidirecionais e serviços de acesso usando um cliente WCF.

Aplica-se a