IBindingRuntimePreferences Interface

Définition

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.Defines the optional contract that a binding can implement to specify whether incoming requests are handled synchronously or asynchronously by the 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.The following example shows the implementation of a binding that implements the IBindingRuntimePreferences interface. Ce code est extrait de l’exemple de canal de segmentation:This code is taken from the Chunking Channel sample:

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.In some cases it may be more efficient for a binding to process messages with the synchronous Receive or Request methods. Une classe Binding peut implémenter de façon facultative IBindingRuntimePreferences pour indiquer aux appelants que cela est préférable.A Binding class can optionally implement IBindingRuntimePreferences to indicate to callers that this is preferred.

Si une liaison n’implémente IBindingRuntimePreferencespas, la couche d’exécution du modèle de service Windows Communication Foundation (WCF) utilise par défaut les versions Receive asynchrones des méthodes et Request .If a binding does not implement IBindingRuntimePreferences, the Windows Communication Foundation (WCF) Service Model Runtime layer defaults to using the asynchronous versions of the Receive and Request methods. Si une liaison implémente IBindingRuntimePreferences, la couche d’exécution du modèle de service WCF vérifie ReceiveSynchronously la valeur de et l’utilise pour déterminer s’il faut appeler les versions synchronesReceive de Requestces méthodes (ou) ou le versions (BeginReceive et EndReceive(IAsyncResult) ou BeginRequest et .EndRequest(IAsyncResult)If a binding does implement IBindingRuntimePreferences, the WCF Service Model Runtime layer checks the value of ReceiveSynchronously and uses that to determine whether to call the synchronous versions of the these methods (Receive or Request) or the asynchronous versions (BeginReceive and EndReceive(IAsyncResult) or BeginRequest and 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.If IBindingRuntimePreferences is implemented by the binding and returns true from the ReceiveSynchronously property, it is recommended that you use the synchronous Receive and Request methods to receive messages from the channel. 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).If the binding does not implement IBindingRuntimePreferences or returns false from the ReceiveSynchronously property, it is recommended that you use the asynchronous BeginReceive and EndReceive(IAsyncResult) or BeginRequest and EndRequest(IAsyncResult) methods.

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.Regardless of the value returned by the ReceiveSynchronously property, all bindings must still provide valid implementations of both the synchronous and asynchronous versions of the Receive methods for the specific channel types implemented. Pour plus d’informations sur l’implémentation de canaux personnalisés, consultez développement de canaux.For more information about implementing custom channels, see Developing Channels.

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.Gets a value that indicates whether incoming requests can be handled more efficiently synchronously or asynchronously.

S’applique à