OperationContractAttribute.IsOneWay Vlastnost
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
pokud 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
.
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;
}
}
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.