Как создать контракт типа «запрос-ответ»
Контракт «запрос-ответ» указывает метод, который возвращает ответ. Необходима отправка ответа и его корреляция запросу согласно условиям этого контракта. Даже если метод не возвращает ответ (void в C# или Sub в Visual Basic), инфраструктура создает и отправляет вызывающему объекту пустое сообщение. Чтобы запретить отправку пустого ответного сообщения, используйте для операции односторонний контракт.
Создание контракта типа запрос-ответ
Создайте интерфейс на любом языке программирования.
Примените атрибут ServiceContractAttribute к интерфейсу.
Примените атрибут OperationContractAttribute к каждому методу, который могут вызывать клиенты.
Необязательно. Установите свойство 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
.
См. также
Задачи
Как создавать дуплексный контракт