IBindingRuntimePreferences Interfaccia
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.
Definisce il contratto facoltativo che un'associazione può implementare per specificare se le richieste in entrata sono gestite in modo sincrono o asincrono dal servizio.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Derivato
Esempio
Nell'esempio seguente viene illustrata l'implementazione di un'associazione che implementa l'interfaccia IBindingRuntimePreferences. Questo codice è tratto dall'esempio del canale di suddivisione in blocchi :
public class TcpChunkingBinding : Binding, IBindingRuntimePreferences
{
TcpTransportBindingElement tcpbe;
ChunkingBindingElement be;
public TcpChunkingBinding()
: base()
{
Initialize();
}
public TcpChunkingBinding(string name, string ns)
: base(name, ns)
{
Initialize();
}
public override BindingElementCollection CreateBindingElements()
{
BindingElementCollection col = new BindingElementCollection();
col.Add(be);
col.Add(tcpbe);
return col;
}
public override string Scheme
{
get { return tcpbe.Scheme; }
}
public int MaxBufferedChunks
{
get { return this.be.MaxBufferedChunks; }
set { this.be.MaxBufferedChunks = value; }
}
void Initialize()
{
be = new ChunkingBindingElement();
tcpbe = new TcpTransportBindingElement();
tcpbe.TransferMode=TransferMode.Buffered; //no transport streaming
tcpbe.MaxReceivedMessageSize = ChunkingUtils.ChunkSize + 100 * 1024; //add 100KB for headers
this.SendTimeout = new TimeSpan(0, 5, 0);
this.ReceiveTimeout = this.SendTimeout;
}
#region IBindingRuntimePreferences Members
public bool ReceiveSynchronously
{
get { return true; }
}
#endregion
}
Commenti
In alcuni casi può essere più efficiente per un'associazione elaborare i messaggi con i metodi sincroni Receive o Request. Una classe Binding può implementare facoltativamente IBindingRuntimePreferences per indicare ai chiamanti che questo è il metodo preferito.
Se un'associazione non implementa IBindingRuntimePreferences, per impostazione predefinita il livello Runtime del modello di servizio Windows Communication Foundation (WCF) usa le versioni asincrone dei Receive
metodi e Request
. Se un'associazione implementa IBindingRuntimePreferences, il livello runtime del modello di servizio WCF controlla il valore di ReceiveSynchronously e lo usa per determinare se chiamare le versioni sincrone di questi metodi (Receive o Request) o le versioni asincrone (BeginReceive e EndReceive(IAsyncResult) o BeginRequest e EndRequest(IAsyncResult)). Se IBindingRuntimePreferences viene implementato dall'associazione e restituisce true
dalla proprietà ReceiveSynchronously, è consigliabile utilizzare i metodi sincroni Receive e Request per ricevere messaggi dal canale. Se l'associazione non implementa IBindingRuntimePreferences o restituisce false
dalla proprietà ReceiveSynchronously, è consigliabile utilizzare i metodi asincroni BeginReceive e EndReceive(IAsyncResult) o BeginRequest e EndRequest(IAsyncResult).
Indipendentemente dal valore restituito dalla proprietà ReceiveSynchronously, tutte le associazioni devono fornire comunque implementazioni valide di entrambe le versioni sincrone e asincrone dei metodi Receive
, per i tipi di canale specifici implementati. Per altre informazioni sull'implementazione di canali personalizzati, vedere Sviluppo di canali.
Proprietà
ReceiveSynchronously |
Ottiene un valore che indica se le richieste in entrata possono essere gestite più efficientemente in modo sincrono o in modo asincrono. |