OperationContractAttribute.IsOneWay 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.
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 de Propriedade
true se este método receber uma mensagem de pedido e não responder nada; caso contrário, false. A predefinição é false.
Exemplos
O exemplo seguinte é 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 devolvem mensagens de resposta subjacentes ao chamador, independentemente do valor de retorno. 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;
}
}
Observações
Use a IsOneWay propriedade para indicar que uma operação não retorna uma mensagem de resposta. Este tipo de operação é útil para notificações ou comunicação ao estilo de eventos, especialmente em comunicação bidirecional. Sem esperar por uma mensagem de resposta subjacente, os chamadores de operações unidirecionais não têm uma forma direta de detetar uma falha no processamento da mensagem de pedido. (Aplicações de serviço que utilizam canais fiáveis e operações unidirecionais podem detetar uma falha na entrega de mensagens ao nível do canal. Para mais detalhes, veja Visão Geral das Sessões Fiáveis.)
Em aplicações orientadas a serviços duplex (ou bidirecionais), nas quais o cliente e o servidor comunicam independentemente entre si, um canal cliente pode usar a IsOneWay propriedade dos seus métodos para indicar que o serviço pode fazer chamadas unidirecionais ao cliente que o cliente pode tratar como eventos. Não é gerada nenhuma chamada de retorno ou mensagem porque o serviço não espera qualquer mensagem de resposta.
Se a IsOneWay propriedade estiver definida para false (o padrão), mesmo os métodos que retornam void resultam numa mensagem de resposta. Neste caso, a infraestrutura cria e envia uma mensagem vazia para indicar ao chamador que o método retornou. (Esta abordagem permite que a infraestrutura envie falhas SOAP de volta ao cliente.) Definir IsOneWay para true é a única forma de cancelar a criação e o envio de uma mensagem de resposta.
Os métodos unidirecionais não devem devolver um valor ou parâmetros ter ref ou out ou; caso contrário, é lançada uma System.InvalidOperationException exceção.
Especificar que uma operação é unidirecional significa apenas que não há mensagem de resposta. É possível bloquear se não for possível estabelecer uma ligação, ou se a mensagem de saída for muito grande, ou se o serviço não conseguir ler a informação de entrada suficientemente rapidamente. Se um cliente necessitar de uma chamada não bloqueante, gere AsyncPattern operações. Para obter mais informações, consulte ServiçosOne-Way e Acessando serviços usando um cliente WCF.