OperationContractAttribute.IsOneWay Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, возвращает ли операция ответное сообщение.
public:
property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean
Значение свойства
true Значение , если этот метод получает сообщение запроса и не возвращает ответное сообщение; falseв противном случае . Значение по умолчанию — false.
Примеры
В следующем примере показана служба, реализующая контракт службы, указывающий три операции. Два метода реализуют двусторонние операции, которые возвращают базовые сообщения ответа вызывающей стороне независимо от значения возвращаемого значения. Третий метод реализует операцию, которая получает вызов (базовое входящее сообщение), но не возвращает базовое сообщение ответа.
[ServiceContract]
public class OneAndTwoWay
{
// The client waits until a response message appears.
[OperationContract]
public int MethodOne (int x, out int y)
{
y = 34;
return 0;
}
// The client waits until an empty response message appears.
[OperationContract]
public void MethodTwo (int x)
{
return;
}
// The client returns as soon as an outbound message
// is queued for dispatch to the service; no response
// message is generated or sent.
[OperationContract(IsOneWay=true)]
public void MethodThree (int x)
{
return;
}
}
Комментарии
IsOneWay Используйте свойство, чтобы указать, что операция не возвращает ответное сообщение. Этот тип операции полезен для уведомлений или взаимодействия в стиле событий, особенно в двустороннем взаимодействии. Не ожидая базового сообщения ответа, вызывающие односторонние операции не имеют прямого способа обнаружить сбой при обработке сообщения запроса. (Приложения службы, использующие надежные каналы и односторонние операции, могут обнаруживать сбой доставки сообщений на уровне канала. Дополнительные сведения см. в разделе "Общие сведения о надежных сеансах".)
В дуплексных (или двухстороннем) ориентированных на службу приложениях, в которых клиент и сервер взаимодействуют друг с другом независимо, клиентский канал может использовать IsOneWay свойство для своих методов, чтобы указать, что служба может выполнять одностороннюю вызовы клиенту, что клиент может рассматривать как события. Не создается обратный вызов или сообщение, так как служба не ожидает никакого ответа.
IsOneWay Если для свойства задано значение false (по умолчанию), даже методы, возвращающие void ответное сообщение. В этом случае инфраструктура создает и отправляет пустое сообщение, указывающее вызывающему объекту, что метод вернул. (Этот подход позволяет инфраструктуре отправлять ошибки SOAP обратно клиенту.) true Параметром IsOneWay является единственный способ отменить создание и отправку сообщения ответа.
Односторонняя обработка методов не должна возвращать значение или параметры refout ; в противном случае System.InvalidOperationException создается исключение.
Указание того, что операция является односторонним операцией, означает только то, что нет сообщения ответа. Можно заблокировать, если подключение невозможно сделать, или исходящее сообщение очень большое или если служба не может считывать входящий трафик достаточно быстро. Если клиенту требуется неблокирующий вызов, создайте AsyncPattern операции. Дополнительные сведения см. в разделе One-Way Службы и доступ к службам с помощью клиента WCF.