OperationContractAttribute.IsOneWay Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se l'operazione restituisce un messaggio di risposta.
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
Valore della proprietà
true se questo metodo riceve un messaggio di richiesta e non restituisce alcun messaggio di risposta; in caso contrario, false. Il valore predefinito è false.
Esempio
L'esempio seguente è un servizio che implementa un contratto di servizio che specifica tre operazioni. Due dei metodi implementano operazioni bidirezionali, che restituiscono messaggi di risposta sottostanti al chiamante indipendentemente dal valore restituito. Il terzo metodo implementa un'operazione che riceve una chiamata (un messaggio in ingresso sottostante), ma non restituisce alcun messaggio di risposta sottostante.
[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;
}
}
Commenti
Utilizzare la IsOneWay proprietà per indicare che un'operazione non restituisce un messaggio di risposta. Questo tipo di operazione è utile per le notifiche o la comunicazione in stile evento, in particolare nella comunicazione bidirezionale. Senza attendere un messaggio di risposta sottostante, i chiamanti di operazioni unidirezionali non hanno un modo diretto per rilevare un errore durante l'elaborazione del messaggio di richiesta. Le applicazioni di servizio che usano canali affidabili e operazioni unidirezionali possono rilevare un errore di recapito dei messaggi a livello di canale. Per informazioni dettagliate, vedere Panoramica delle sessioni affidabili.
Nelle applicazioni orientate ai servizi duplex (o bidirezionali) in cui il client e il server comunicano tra loro in modo indipendente, un canale client può usare la IsOneWay proprietà sui relativi metodi per indicare che il servizio può effettuare chiamate unidirezionale al client che il client può trattare come eventi. Non viene generata alcuna chiamata o messaggio restituito perché il servizio non prevede alcun messaggio di risposta.
Se la IsOneWay proprietà è impostata su false (impostazione predefinita), anche i metodi che restituiscono void un messaggio di risposta. In questo caso, l'infrastruttura crea e invia un messaggio vuoto per indicare al chiamante che il metodo è stato restituito. L'uso di questo approccio consente all'infrastruttura di inviare di nuovo errori SOAP al client. L'impostazione su IsOneWaytrue è l'unico modo per annullare la creazione e l'invio di un messaggio di risposta.
I metodi unidirezionale non devono restituire un valore o avere ref parametri o out . In caso contrario, viene generata un'eccezione System.InvalidOperationException .
Se si specifica che un'operazione è un'operazione unidirezionale, significa solo che non è presente alcun messaggio di risposta. È possibile bloccare se non è possibile stabilire una connessione o se il messaggio in uscita è molto grande o se il servizio non è in grado di leggere le informazioni in ingresso abbastanza velocemente. Se un client richiede una chiamata non bloccante, generare AsyncPattern operazioni. Per altre informazioni, vedere One-Way Services e Accesso ai servizi usando un client WCF.