Compartir a través de


Cómo: Crear un contrato de Windows Communication Foundation con una clase

La forma preferible para crear un contrato de Windows Communication Foundation (WCF) es mediante una interfaz. Para obtener más información, consulte Procedimiento para definir un contrato de servicio. Una alternativa, descrita aquí, es crear una clase y después aplicar directamente el atributo ServiceContractAttribute a la clase directamente y el atributo OperationContractAttribute a cada uno de los métodos de la clase que forman parte del contrato.

Advertencia

[ServiceContract] y [ServiceContractAttribute] hacen lo mismo. Lo mismo se cumple para [OperationContract] y [OperationContractAttribute]. En cada caso, el anterior es una forma abreviada del último.

Para obtener más información sobre contratos de servicios, consulte Diseño de contratos de servicios.

Creación de un contrato de Windows Communication Foundation con una clase

  1. Cree una nueva clase mediante Visual Basic, C# o cualquier otro lenguaje de Common Language Runtime.

  2. Aplique la clase ServiceContractAttribute a la clase.

  3. Cree los métodos en la clase.

  4. Aplique la clase OperationContractAttribute a cada método que debe exponerse como parte del contrato WCF público.

Ejemplo

El ejemplo de código siguiente muestra una clase que define un contrato de servicio.

[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

Los métodos que tienen aplicada la clase OperationContractAttribute usan de forma predeterminada un patrón de mensaje solicitud-respuesta. Para obtener más información sobre este patrón de mensaje, consulte Procedimiento para crear un contrato de solicitud-respuesta. Puede crear y utilizar también otros patrones de mensaje estableciendo las propiedades del atributo. Para obtener más ejemplos, consulte Procedimiento para crear un contrato unidireccional y Procedimiento para crear un contrato de devolución de llamada.

Consulte también