Freigeben über


IBindingRuntimePreferences Schnittstelle

Definition

Definiert den optionalen Vertrag, den eine Bindung implementieren kann, um anzugeben, ob eingehende Anforderungen synchron oder asynchron vom Dienst behandelt werden.

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
Abgeleitet

Beispiele

Das folgende Beispiel zeigt die Implementierung einer Bindung, die die IBindingRuntimePreferences Schnittstelle implementiert. Dieser Code stammt aus dem Beispiel "Chunking Channel ":

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
}

Hinweise

In einigen Fällen kann es effizienter sein, eine Bindung zum Verarbeiten von Nachrichten mit den synchronen Receive oder Request Methoden zu verarbeiten. Eine Binding Klasse kann optional implementieren IBindingRuntimePreferences , um anrufern anzugeben, dass dies bevorzugt wird.

Wenn eine Bindung nicht implementiert wird IBindingRuntimePreferences, verwendet die Windows Communication Foundation (WCF)-Dienstmodell-Runtime-Ebene standardmäßig die asynchronen Versionen der Receive Und Request Methoden. Wenn eine Bindung implementiert IBindingRuntimePreferenceswird, überprüft die WCF-Dienstmodell-Runtime-Ebene den Wert und ReceiveSynchronously verwendet diese, um zu bestimmen, ob die synchronen Versionen dieser Methoden ( oder Request) oder die asynchronen Versionen (BeginReceiveReceive und oder BeginRequest und EndReceive(IAsyncResult) ) EndRequest(IAsyncResult)aufgerufen werden sollen. Wenn IBindingRuntimePreferences die Bindung implementiert und von der ReceiveSynchronously Eigenschaft zurückgegeben true wird, wird empfohlen, dass Sie die synchronen Receive Und Request Methoden verwenden, um Nachrichten vom Kanal zu empfangen. Wenn die Bindung die Eigenschaft nicht implementiert IBindingRuntimePreferences oder zurückgibt ReceiveSynchronouslyfalse, empfiehlt es sich, die asynchronen BeginReceive und oder BeginRequestEndReceive(IAsyncResult) methoden EndRequest(IAsyncResult) zu verwenden.

Unabhängig vom von der ReceiveSynchronously Eigenschaft zurückgegebenen Wert müssen alle Bindungen weiterhin gültige Implementierungen der synchronen und asynchronen Versionen der Receive Methoden für die jeweiligen Kanaltypen bereitstellen. Weitere Informationen zum Implementieren von benutzerdefinierten Kanälen finden Sie unter Developing Channels.

Eigenschaften

Name Beschreibung
ReceiveSynchronously

Ruft einen Wert ab, der angibt, ob eingehende Anforderungen synchron oder asynchron verarbeitet werden können.

Gilt für: