IBindingRuntimePreferences Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit le contrat facultatif qu'une liaison peut implémenter pour spécifier si les demandes entrantes sont gérées de façon synchrone ou de façon asynchrone par le service.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Dérivé
Exemples
L’exemple suivant présente l’implémentation d’une liaison qui implémente l’interface IBindingRuntimePreferences. Ce code est extrait de l’exemple De canal de segmentation :
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
}
Remarques
Dans certains cas, il peut être plus efficace pour une liaison de traiter des messages avec les méthodes synchrones Receive ou Request. Une classe Binding peut implémenter de façon facultative IBindingRuntimePreferences pour indiquer aux appelants que cela est préférable.
Si une liaison n’implémente IBindingRuntimePreferencespas , la couche Windows Communication Foundation (WCF) Service Model Runtime utilise par défaut les versions asynchrones des Receive
méthodes et Request
. Si une liaison implémente IBindingRuntimePreferences, la couche Wcf Service Model Runtime vérifie la valeur de ReceiveSynchronously et l’utilise pour déterminer s’il faut appeler les versions synchrones de ces méthodes (Receive ou Request) ou les versions asynchrones (BeginReceive et EndReceive(IAsyncResult) ou BeginRequest et EndRequest(IAsyncResult)). Si IBindingRuntimePreferences est implémentée par la liaison et retourne true
de la propriété ReceiveSynchronously, il est recommandé d’utiliser les méthodes synchrones Receive et Request pour recevoir les messages du canal. Si la liaison n'implémente pas IBindingRuntimePreferences ou retourne false
de la propriété ReceiveSynchronously, il est recommandé d'utiliser les méthodes asynchrones BeginReceive et EndReceive(IAsyncResult) ou BeginRequest et EndRequest(IAsyncResult).
Quelle que soit la valeur retournée par la propriété ReceiveSynchronously, toutes les liaisons doivent toujours fournir des implémentations valides des versions synchrones et asynchrones des méthodes Receive
pour les types de canaux spécifiques implémentés. Pour plus d’informations sur l’implémentation de canaux personnalisés, consultez Développement de canaux.
Propriétés
ReceiveSynchronously |
Obtient une valeur qui indique si les demandes entrantes peuvent être gérées plus efficacement de manière synchrone ou asynchrone. |