Sdílet prostřednictvím


OperationContractAttribute.IsOneWay Vlastnost

Definice

Získá nebo nastaví hodnotu, která označuje, zda operace vrátí zprávu odpovědi.

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

Hodnota vlastnosti

Boolean

truepokud tato metoda obdrží zprávu požadavku a vrátí zprávu bez odpovědi; v opačném případě . false Výchozí formát je false.

Příklady

Následující příklad je služba, která implementuje kontrakt služby, který určuje tři operace. Dvě metody implementují obousměrné operace, které vracejí základní zprávy odpovědí volajícímu bez ohledu na to, co je vrácená hodnota. Třetí metoda implementuje operaci, která přijímá volání (podkladovou příchozí zprávu), ale nevrátí žádnou podkladovou zprávu odpovědi.

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

Poznámky

IsOneWay Vlastnost slouží k označení, že operace nevrací zprávu odpovědi. Tento typ operace je užitečný pro oznámení nebo komunikaci ve stylu událostí, zejména v obousměrné komunikaci. Bez čekání na podkladovou zprávu odpovědi nemají volající jednosměrných operací žádný přímý způsob, jak zjistit selhání při zpracování zprávy žádosti. (Aplikace služeb, které používají spolehlivé kanály a jednosměrné operace, můžou detekovat selhání doručování zpráv na úrovni kanálu. Podrobnosti najdete v tématu Přehled spolehlivých relací.)

V duplexní (nebo obousměrné) aplikace orientované na služby, ve kterých klient a server vzájemně komunikují nezávisle, může klientský kanál použít IsOneWay vlastnost na svých metodách, aby indikovala, že služba může jednosměrně volat klientovi, že klient může považovat za události. Negeneruje se žádný návratový hovor ani zpráva, protože služba neočekává žádnou odpověď.

IsOneWay Pokud je vlastnost nastavená na false (výchozí), dokonce i metody, které vrátí void výsledek ve zprávě odpovědi. V takovém případě infrastruktura vytvoří a odešle prázdnou zprávu, která volajícímu oznámí, že metoda vrátila. (Použití tohoto přístupu umožňuje infrastruktuře odesílat chyby SOAP zpět klientovi.) true Nastavení IsOneWay je jediný způsob, jak zrušit vytvoření a odeslání zprávy odpovědi.

Jednosměrné metody nesmí vracet hodnotu nebo mít ref nebo out parametry; jinak System.InvalidOperationException je vyvolán výjimka.

Určení, že operace je jednosměrná operace, znamená to, že neexistuje žádná zpráva odpovědi. Je možné blokovat, pokud se připojení nedá vytvořit nebo je odchozí zpráva velmi velká nebo pokud služba nemůže číst příchozí informace dostatečně rychle. Pokud klient vyžaduje neblokující volání, vygenerujte AsyncPattern operace. Další informace najdete v tématu Jednosměrné služby a přístup ke službám pomocí klienta WCF.

Platí pro