Поделиться через


Как создать контракт типа «запрос-ответ»

Контракт «запрос-ответ» указывает метод, который возвращает ответ. Необходима отправка ответа и его корреляция запросу согласно условиям этого контракта. Даже если метод не возвращает ответ (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.

См. также

Задачи

Как создавать дуплексный контракт

Справочник

OperationContractAttribute

Основные понятия

Создание контрактов служб