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

Значение свойства

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 является единственным способом отмены создания и отправки ответного сообщения.

Односторонние методы не должны возвращать значение и иметь параметры ref или out; в противном случае вызывается исключение System.InvalidOperationException.

Если указывается, что операция является односторонней, это означает только то, что ответное сообщение отсутствует. Если соединение установить невозможно, а также если исходящее сообщение слишком велико или служба не может достаточно быстро прочитать входящую информацию, возможна блокировка. Если клиенту требуется вызов без блокировки, создайте операции AsyncPattern. Дополнительные сведения см. в статье "Односторонние службы " и "Доступ к службам" с помощью клиента WCF.

Применяется к