IBindingRuntimePreferences Interface

Definitie

Definieert het optionele contract dat een binding kan implementeren om op te geven of binnenkomende aanvragen synchroon of asynchroon door de service worden verwerkt.

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

Voorbeelden

In het volgende voorbeeld ziet u de implementatie van een binding waarmee de IBindingRuntimePreferences interface wordt geïmplementeerd. Deze code wordt opgehaald uit het voorbeeld van het segmenteringskanaal :

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
}

Opmerkingen

In sommige gevallen kan het efficiënter zijn voor een binding om berichten te verwerken met de synchrone Receive of Request methoden. Een Binding klasse kan eventueel implementeren IBindingRuntimePreferences om aan te geven aan bellers dat dit de voorkeur heeft.

Als een binding geen IBindingRuntimePreferences implementeert, wordt de Windows Communication Foundation (WCF)-servicemodelruntimelaag standaard gebruikt met behulp van de asynchrone versies van de Receive en Request methoden. Als een binding wel wordt geïmplementeerd IBindingRuntimePreferences, controleert de wcF-servicemodelruntimelaag de waarde van ReceiveSynchronously en gebruikt die om te bepalen of de synchrone versies van deze methoden (Receive of Request) of de asynchrone versies (BeginReceive en of EndReceive(IAsyncResult)BeginRequest en) EndRequest(IAsyncResult)moeten worden aangeroepen. Als IBindingRuntimePreferences deze wordt geïmplementeerd door de binding en wordt geretourneerd true vanuit de ReceiveSynchronously eigenschap, wordt aanbevolen dat u de synchrone Receive en Request methoden gebruikt om berichten van het kanaal te ontvangen. Als de binding niet wordt geïmplementeerd IBindingRuntimePreferences of geretourneerd false vanuit de ReceiveSynchronously eigenschap, wordt u aangeraden de asynchrone BeginReceive en EndReceive(IAsyncResult) of of methoden BeginRequestEndRequest(IAsyncResult) te gebruiken.

Ongeacht de waarde die door de ReceiveSynchronously eigenschap wordt geretourneerd, moeten alle bindingen nog steeds geldige implementaties bieden van zowel de synchrone als asynchrone versies van de Receive methoden voor de specifieke kanaaltypen die zijn geïmplementeerd. Zie Kanalen ontwikkelen voor meer informatie over het implementeren van aangepaste kanalen.

Eigenschappen

Name Description
ReceiveSynchronously

Hiermee wordt een waarde opgehaald die aangeeft of binnenkomende aanvragen efficiënter synchroon of asynchroon kunnen worden verwerkt.

Van toepassing op