Freigeben über


IBindingRuntimePreferences Schnittstelle

Definition

Definiert den optionalen Vertrag, der von einer Bindung implementiert werden kann, um anzugeben, ob eingehende Anforderungen vom Dienst synchron oder asynchron behandelt werden.

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

Beispiele

Im folgenden Beispiel wird die Implementierung einer Bindung veranschaulicht, die die IBindingRuntimePreferences-Schnittstelle implementiert. Dieser Code stammt aus dem Chunking Channel-Beispiel :

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 können Nachrichten durch eine Bindung effizienter mit der synchronen Receive-Methode oder mit der synchronen Request-Methode verarbeitet werden. Binding kann optional von einer IBindingRuntimePreferences-Klasse implementiert werden, um die bevorzugte Verarbeitung gegenüber dem Aufrufer anzugeben.

Wenn eine Bindung nicht implementiert IBindingRuntimePreferences, verwendet die Windows Communication Foundation (WCF) Service Model Runtime-Schicht standardmäßig die asynchronen Versionen der Receive Methoden und Request . Wenn eine Bindung implementiert IBindingRuntimePreferences, überprüft die WCF-Dienstmodelllaufzeitebene den Wert von ReceiveSynchronously und verwendet diesen, um zu bestimmen, ob die synchronen Versionen dieser Methoden (Receive oder Request) oder die asynchronen Versionen (BeginReceive und und EndReceive(IAsyncResult)BeginRequest ) aufgerufen werden EndRequest(IAsyncResult)sollen. Wenn IBindingRuntimePreferences von der Bindung implementiert wird und true von der ReceiveSynchronously-Eigenschaft zurückgibt, wird empfohlen, die synchrone Receive-Methode und die synchrone Request-Methode zum Empfangen von Nachrichten vom Kanal zu verwenden. Wenn IBindingRuntimePreferences von der Bindung nicht implementiert wird oder false von der ReceiveSynchronously-Eigenschaft zurückgibt, wird empfohlen, die asynchrone BeginReceive-Methode und die asynchrone EndReceive(IAsyncResult)-Methode oder die asynchrone BeginRequest-Methode und die asynchrone EndRequest(IAsyncResult)-Methode zu verwenden.

Unabhängig vom Wert, der von der ReceiveSynchronously-Eigenschaft zurückgegeben wird, müssen alle Bindungen weiterhin gültige Implementierungen der synchronen und der asynchronen Versionen der Receive-Methode für die implementierten Kanaltypen bereitstellen. Weitere Informationen zum Implementieren benutzerdefinierter Kanäle finden Sie unter Entwickeln von Kanälen.

Eigenschaften

ReceiveSynchronously

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

Gilt für: