Udostępnij za pośrednictwem


OperationContractAttribute.IsOneWay Właściwość

Definicja

Pobiera lub ustawia wartość wskazującą, czy operacja zwraca komunikat odpowiedzi.

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

Wartość właściwości

true jeśli ta metoda odbiera komunikat żądania i nie zwraca komunikatu odpowiedzi; w przeciwnym razie , false. Wartość domyślna to false.

Przykłady

Poniższy przykład to usługa, która implementuje kontrakt usługi, który określa trzy operacje. Dwie metody implementują operacje dwukierunkowe, które zwracają bazowe komunikaty odpowiedzi do obiektu wywołującego bez względu na wartość zwracaną. Trzecia metoda implementuje operację, która odbiera wywołanie (podstawowy komunikat przychodzący), ale nie zwraca bazowego komunikatu odpowiedzi.

[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;  
  }  
}  

Uwagi

IsOneWay Użyj właściwości , aby wskazać, że operacja nie zwraca komunikatu odpowiedzi. Ten typ operacji jest przydatny w przypadku powiadomień lub komunikacji w stylu zdarzenia, zwłaszcza w dwukierunkowej komunikacji. Bez oczekiwania na podstawowy komunikat odpowiedzi osoby wywołujące jednokierunkowe operacje nie mają bezpośredniego sposobu wykrywania awarii podczas przetwarzania komunikatu żądania. (Aplikacje usług korzystające z niezawodnych kanałów i jednokierunkowych operacji mogą wykrywać błąd dostarczania komunikatów na poziomie kanału. Aby uzyskać szczegółowe informacje, zobacz Reliable Sessions Overview (Omówienie niezawodnych sesji).

W dwukierunkowych (lub dwukierunkowych) aplikacjach zorientowanych na usługi, w których klient i serwer komunikują się ze sobą niezależnie, kanał klienta może używać IsOneWay właściwości w swoich metodach, aby wskazać, że usługa może wykonywać jednokierunkowe wywołania do klienta, który klient może traktować jako zdarzenia. Nie jest generowane żadne wywołanie zwrotne ani komunikat, ponieważ usługa nie oczekuje żadnego komunikatu odpowiedzi.

IsOneWay Jeśli właściwość jest ustawiona na false (wartość domyślna), nawet metody, które zwracają void wynik w komunikacie odpowiedzi. W takim przypadku infrastruktura tworzy i wysyła pusty komunikat wskazujący obiekt wywołujący zwrócony przez metodę. (Użycie tego podejścia umożliwia infrastrukturze wysyłanie błędów protokołu SOAP z powrotem do klienta). Ustawienie wartości to IsOneWaytrue jedyny sposób anulowania tworzenia i wysyłania komunikatu odpowiedzi.

Metody jednokierunkowe nie mogą zwracać wartości lub parametrów refout . W przeciwnym razie System.InvalidOperationException zgłaszany jest wyjątek.

Określenie, że operacja jest operacją jednokierunkową oznacza tylko, że nie ma komunikatu odpowiedzi. Istnieje możliwość zablokowania, jeśli nie można nawiązać połączenia lub komunikat wychodzący jest bardzo duży lub jeśli usługa nie może odczytywać informacji przychodzących wystarczająco szybko. Jeśli klient wymaga wywołania bez blokowania, wygeneruj AsyncPattern operacje. Aby uzyskać więcej informacji, zobacz One-Way Services and Accessing Services Using a WCF Client (Usługi jednokierunkowe i uzyskiwanie dostępu do usług przy użyciu klienta WCF).

Dotyczy