Como criar um contrato de Request-Reply

Um contrato de solicitação-resposta especifica um método que retorna uma resposta. A resposta deve ser enviada e correlacionada à solicitação nos termos deste contrato. Mesmo que o método não retorne nenhuma resposta (void em C#ou no Sub Visual Basic), a infraestrutura criará e enviará uma mensagem vazia para o chamador. Para impedir o envio de uma mensagem de resposta vazia, use um contrato unidirecional para a operação.

Para criar um contrato de solicitação-resposta

  1. Crie uma interface na linguagem de programação de sua escolha.

  2. Aplique o atributo ServiceContractAttribute à interface.

  3. Aplique o OperationContractAttribute atributo a cada método que os clientes podem invocar.

  4. Opcional. Defina o valor da propriedade IsOneWay em true de modo a impedir o envio de uma mensagem de resposta vazia. Por padrão, todas as operações são contratos de solicitação e resposta.

Exemplo

O exemplo a seguir define um contrato para um serviço de calculadora que fornece Add e Subtract métodos. O Multiply método não faz parte do contrato porque não é marcado pela OperationContractAttribute classe e, portanto, não é acessível aos clientes.

using System.ServiceModel;

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    // It would be equivalent to write explicitly:
    // [OperationContract(IsOneWay=false)]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);

    int Multiply(int a, int b)
}
  • Para obter mais informações sobre como especificar contratos de operação, consulte a OperationContractAttribute classe e a IsOneWay propriedade.

  • A aplicação dos atributos ServiceContractAttribute e OperationContractAttribute causa a geração automática de definições de contrato de serviço em um documento WSDL (Linguagem de Descrição dos Serviços Web) depois que o serviço é implantado. O documento é baixado acrescentando ?wsdl ao endereço base HTTP do serviço. Por exemplo, http://microsoft/CalculatorService?wsdl

Consulte também