Como: Criar um contrato do Windows Communication Foundation com uma classe

A maneira preferida de criar um contrato do Windows Communication Foundation (WCF) é usando uma interface. Para obter mais informações, consulte Como definir um contrato de serviço. Uma alternativa, descrita aqui, é criar uma classe e, em seguida, aplicar o ServiceContractAttribute atributo à classe diretamente e o OperationContractAttribute atributo a cada um dos métodos na classe que fazem parte do contrato.

Aviso

[ServiceContract] e [ServiceContractAttribute] fazer a mesma coisa. A mesma coisa é verdade para [OperationContract] e [OperationContractAttribute]. Em cada caso, a primeira é uma abreviatura para a segunda.

Para obter mais informações sobre contratos de serviço, consulte Projetando contratos de serviço.

Criando um contrato do Windows Communication Foundation com uma classe

  1. Crie uma nova classe usando Visual Basic, C# ou qualquer outra linguagem de tempo de execução de linguagem comum.

  2. Aplique a ServiceContractAttribute classe à classe.

  3. Crie métodos na classe.

  4. Aplique a OperationContractAttribute classe a cada método que deve ser exposto como parte do contrato WCF público.

Exemplo

O exemplo de código a seguir mostra uma classe que define um contrato de serviço.

[ServiceContract]
public class CalculatorService
{
  [OperationContract]
  public double Add(double n1, double n2)
  {
     return n1 + n2;
  }

  [OperationContract]
  public double Subtract(double n1, double n2)
  {
     return n1 - n2;
  }

  [OperationContract]
  public double Multiply(double n1, double n2)
  {
     return n1 * n2;
  }

  [OperationContract]
  public double Divide(double n1, double n2)
  {
     return n1 / n2;
  }
}

<ServiceContract()> _
Public Class CalculatorService
    <OperationContract()> _
    Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 + n2
    End Function

    <OperationContract()> _
    Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 - n2
    End Function

    <OperationContract()> _
    Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 * n2
    End Function

    <OperationContract()> _
    Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 / n2
    End Function
End Class

Os métodos que têm a OperationContractAttribute classe aplicada usam um padrão de mensagem de solicitação-resposta por padrão. Para obter mais informações sobre esse padrão de mensagem, consulte Como criar um contrato de solicitação-resposta. Você também pode criar e usar outros padrões de mensagem definindo propriedades do atributo. Para obter mais exemplos, consulte Como criar um contrato unidirecional e Como criar um contrato duplex.

Consulte também