Compartir a través de


Creación de un contrato de solicitud‑respuesta

En este tema se muestran los pasos básicos para crear métodos que utilicen un contrato de solicitud‑respuesta. Tales métodos invocan operaciones en un servicio de Windows Communication Foundation (WCF) y esperan una respuesta. La respuesta se debe enviar y correlacionar con la solicitud según las condiciones de este contrato. Incluso si el método devuelve void, la infraestructura crea y envía un mensaje vacío para indicar al autor de la llamada que se ha devuelto el método. La única manera de anular la creación y entrega de un mensaje de respuesta es utilizar un contrato unidireccional para la operación.

Para obtener más información acerca de cómo especificar los contratos de operación, vea la clase OperationContractAttribute y, en particular, la propiedad IsOneWay.

Para obtener más información acerca de creación de una aplicación cliente para un contrato dúplex, vea Cómo: Obtener acceso a los servicios WCF con contratos unidireccionales y de solicitud-respuesta.

Creación de un contrato de solicitud‑respuesta

  1. Cree el contrato de servicios aplicando la clase ServiceContractAttribute a la interfaz que define los métodos que el servicio va a implementar.

  2. Indique qué métodos de la interfaz puede invocar el cliente aplicándoles la clase OperationContractAttribute.

  3. El valor de la propiedad IsOneWay indica si una operación devuelve un mensaje de respuesta. Si una operación tiene un contrato de solicitud‑respuesta, esta propiedad se establece en false. Si la operación tiene un contrato unidireccional, la propiedad se establece en true. Todas las operaciones que llevan la clase OperationContractAttribute satisfacen de forma predeterminada un contrato de solicitud‑respuesta porque la propiedad IsOneWay es false de forma predeterminada. De modo que es opcional especificar explícitamente el valor de la propiedad de atributo en false.

Ejemplo

El siguiente ejemplo define un contrato para un servicio de calculadora que proporciona métodos Add y Subtract. Con este contrato, un cliente llama a los métodos Add y Subtract y espera, respectivamente, que se devuelvan la suma y la diferencia. 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)
}
  • Marcar una interfaz del contrato de servicio con la clase ServiceContractAttribute y sus métodos con la clase OperationContractAttribute permite la generación automática de definiciones del contrato de servicios en el lenguaje de descripción de servicios web (WSDL), contactos del cliente, y código una vez que se ha implementado el servicio.
  • Se puede obtener acceso a una definición visible externamente de un contrato de servicios de WCF una vez que se ha implementado el servicio como un documento WSDL estándar que especifica las operaciones y sus entradas y resultados respectivos. El WSDL se muestra anexando la solicitud ?wsdl a la dirección base HTTP y señalando al explorador en el identificador uniforme de recursos (URI) resultante.

Consulte también

Tareas

Creación de un contrato dúplex

Referencia

OperationContractAttribute

Conceptos

Diseño de contratos de servicios