Как создать контракт Запрос-Ответ

Контракт запроса на ответ указывает метод, возвращающий ответ. Ответ должен быть отправлен и коррелирован с запросом в соответствии с условиями этого контракта. Даже если метод не возвращает ответ (void в C#или в Sub Visual Basic), инфраструктура создает и отправляет пустое сообщение вызывающему объекту. Чтобы предотвратить отправку пустого сообщения ответа, используйте односторонний контракт для операции.

Создать контракт запроса-ответа

  1. Создайте интерфейс на выбранном языке программирования.

  2. ServiceContractAttribute Примените атрибут к интерфейсу.

  3. Примените атрибут к каждому методу OperationContractAttribute , который клиенты могут вызывать.

  4. Необязательно. Установите значение свойства IsOneWay на true, чтобы предотвратить отправку пустого сообщения ответа. По умолчанию все операции являются контрактами запроса и ответа.

Пример

В следующем примере определяется контракт для службы калькулятора, которая предоставляет Add и Subtract методы. Метод Multiply не является частью контракта, так как он не помечен классом OperationContractAttribute , поэтому он недоступен для клиентов.

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)
}
  • Дополнительные сведения о том, как указать контракты операций, см. в OperationContractAttribute классе и свойстве IsOneWay .

  • Применение атрибутов ServiceContractAttribute и OperationContractAttribute приводит к автоматическому созданию определений контракта службы в документе WSDL (языка описания веб-служб) после развертывания службы. Документ скачан путем добавления ?wsdl к базовому адресу HTTP для службы. Например: http://microsoft/CalculatorService?wsdl

См. также