Como criar um contrato do Windows Communication Foundation com uma classe
A maneira preferencial de criar um contrato do WCF (Windows Communication Foundation) é usando uma interface. Para obter mais informações, confira Como definir um contrato de serviço. Uma alternativa, descrita aqui, é criar uma classe e aplicar o atributo ServiceContractAttribute à classe diretamente e o atributo OperationContractAttribute a cada um dos métodos na classe que fazem parte do contrato.
Aviso
[ServiceContract]
e [ServiceContractAttribute]
fazem a mesma coisa. O mesmo é verdadeiro para [OperationContract]
e [OperationContractAttribute]
. Em cada caso, o primeiro é a abreviação do último.
Para obter mais informações sobre contratos de serviço, confira Como criar contratos de serviço.
Como criar um contrato do Windows Communication Foundation com uma classe
Crie uma classe usando o Visual Basic, o C# ou qualquer outra linguagem de Common Language Runtime.
Aplique a classe ServiceContractAttribute à classe.
Crie métodos na classe.
Aplique a classe OperationContractAttribute a cada método que deve ser exposto como parte do contrato público do WCF.
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 classe OperationContractAttribute 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, confira 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 ver mais exemplos, confira Como criar um contrato unidirecional e Como criar um contrato duplex.