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