OperationContractAttribute.IsOneWay OperationContractAttribute.IsOneWay OperationContractAttribute.IsOneWay OperationContractAttribute.IsOneWay Property

Определение

Возвращает или задает значение, указывающее, возвращает ли операция ответное сообщение.Gets or sets a value that indicates whether an operation returns a reply message.

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.true if this method receives a request message and returns no reply message; otherwise, false. Значение по умолчанию — false.The default is false.

Примеры

В следующем примере представлена служба, которая реализует контракт службы, определяющий три операции.The following example is a service that implements a service contract that specifies three operations. Два из трех этих методов реализуют двусторонние операции, которые возвращают базовые ответные сообщения вызывающему объекту независимо от возвращаемого значения.Two of the methods implement two-way operations, which return underlying response messages to the caller no matter what the return value is. Третий метод реализует операцию, которая принимает вызов (базовое входящее сообщение), но не возвращает базового ответного сообщения.The third method implements an operation that receives a call (an underlying inbound message) but returns no underlying response message.

[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, чтобы указать, что операция не возвращает ответное сообщение.Use the IsOneWay property to indicate that an operation does not return a reply message. Этот тип операции полезен для уведомлений или связи в стиле событий, особенно в двусторонней связи.This type of operation is useful for notifications or event-style communication, especially in two-way communication. Не ожидая базового ответного сообщения, вызывающие объекты односторонних операций не могут непосредственно обнаружить сбой в обработке ответного сообщения.Without waiting for an underlying response message, callers of one-way operations have no direct way to detect a failure in processing the request message. (Приложения службы, использующие надежные каналы и односторонние операции, могут обнаружить сбой доставки сообщения на уровне канала.(Service applications that use reliable channels and one-way operations can detect a message delivery failure at the channel level. Дополнительные сведения см. в разделе Общие сведения о надежных сеансах.For details, see Reliable Sessions Overview.)

В дуплексных (или двусторонних), ориентированных на службы приложениях, в которых клиент и сервер взаимодействуют друг с другом независимо, клиентский канал может использовать свойство IsOneWay в своих методах, чтобы указать, что служба может направлять односторонние вызовы клиенту, которые клиент может трактовать как события.In duplex (or two-way) service-oriented applications in which the client and server communicate with each other independently, a client channel can use the IsOneWay property on its methods to indicate that the service can make one-way calls to the client that the client can treat as events. Возвращаемых вызовов и сообщений не создается, поскольку служба не ожидает никаких ответных сообщений.No return call or message is generated because the service does not expect any response message.

Если для свойства IsOneWay задано значение false (по умолчанию), даже методы, возвращающие void, приводят к ответному сообщению.If the IsOneWay property is set to false (the default), even methods that return void result in a reply message. В этом случае инфраструктура создает и отправляет пустое сообщение, чтобы указать вызывающему объекту о возврате метода.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. (Использование такого подхода позволяет инфраструктуре отправлять сообщения об ошибках SOAP назад клиенту.) Единственный способ отменить создание и отправку ответного сообщения — задание для свойства IsOneWay значения true.(Using this approach enables the infrastructure to send SOAP faults back to the client.) Setting IsOneWay to true is the only way to cancel the creation and dispatch of a response message.

Односторонние методы не должны возвращать значение и иметь параметры ref или out; в противном случае вызывается исключение System.InvalidOperationException.One-way methods must not return a value or have ref or out parameters; otherwise a System.InvalidOperationException exception is thrown.

Если указывается, что операция является односторонней, это означает только то, что ответное сообщение отсутствует.Specifying that an operation is a one-way operation means only that there is no response message. Если соединение установить невозможно, а также если исходящее сообщение слишком велико или служба не может достаточно быстро прочитать входящую информацию, возможна блокировка.It is possible to block if a connection cannot be made, or the outbound message is very large, or if the service cannot read inbound information fast enough. Если клиенту требуется вызов без блокировки, создайте операции AsyncPattern.If a client requires a non-blocking call, generate AsyncPattern operations. Дополнительные сведения см. в статьях односторонние службы и доступ к службам с помощью клиента WCF.For more information, see One-Way Services and Accessing Services Using a WCF Client.

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