Procedimiento para crear un contrato de solicitud-respuesta

Un contrato de solicitud-respuesta especifica un método que devuelve una respuesta. La respuesta se debe enviar y correlacionar con la solicitud según las condiciones de este contrato. Incluso si el método no devuelve ninguna respuesta (void en C#, o Sub en Visual Basic), la infraestructura crea y envía un mensaje vacío al autor de la llamada. Para evitar que se envíe un mensaje de respuesta vacío, use un contrato unidireccional para la operación.

Creación de un contrato de solicitud-respuesta

  1. Cree una interfaz en el lenguaje de programación elegido.

  2. Aplique el atributo ServiceContractAttribute a dicha interfaz.

  3. Aplique el atributo OperationContractAttribute a cada uno de los métodos que pueden invocar los clientes.

  4. Opcional. Establezca el valor de la propiedad IsOneWay en true para evitar que se envíe un mensaje de respuesta vacío. De forma predeterminada, todas las operaciones son contratos de solicitud-respuesta.

Ejemplo

El siguiente ejemplo define un contrato para un servicio de calculadora que proporciona métodos Add y Subtract. El método Multiply no es parte del contrato, porque no está marcado por la clase OperationContractAttribute y, por tanto, los clientes no pueden acceder a él.

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 obtener más información sobre cómo especificar los contratos de operación, consulte la clase OperationContractAttribute y la propiedad IsOneWay.

  • La aplicación de los atributos ServiceContractAttribute y OperationContractAttribute permite la generación automática de definiciones de contrato de servicio en un Lenguaje de descripción de servicios Web (WSDL). El documento se descarga agregando ?wsdl a la dirección base HTTP del servicio. Por ejemplo: http://microsoft/CalculatorService?wsdl

Consulte también