IBindingRuntimePreferences Rozhraní

Definice

Definuje volitelný kontrakt, který může vazba implementovat za účelem určení, zda služba zpracovává příchozí požadavky synchronně nebo asynchronně.

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
Odvozené

Příklady

Následující příklad ukazuje implementaci vazby, která implementuje IBindingRuntimePreferences rozhraní. Tento kód je převzatý z ukázky kanálu chunking :

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
}

Poznámky

V některých případech může být pro vazbu efektivnější zpracovávat zprávy synchronními Receive metodami nebo Request metodami. Třída Binding může volitelně implementovat IBindingRuntimePreferences , aby volajícím naznačovala, že je to upřednostňované.

Pokud vazba neimplementuje IBindingRuntimePreferences, vrstva Windows Communication Foundation (WCF) Service Model Runtime ve výchozím nastavení používá asynchronní verze Receive metod a Request . Pokud vazba implementuje IBindingRuntimePreferences, vrstva modulu runtime modelu služby WCF zkontroluje hodnotu ReceiveSynchronously a použije ji k určení, zda se mají volat synchronní verze těchto metod (Receive nebo Request) nebo asynchronní verze (BeginReceive a EndReceive(IAsyncResult) nebo BeginRequest a EndRequest(IAsyncResult)). Pokud IBindingRuntimePreferences je implementována vazbou a vrací true se z ReceiveSynchronously vlastnosti, doporučuje se použít synchronní Receive a Request metody pro příjem zpráv z kanálu. Pokud vazba neimplementuje IBindingRuntimePreferences nebo nevrací false z ReceiveSynchronously vlastnosti, doporučuje se použít asynchronní BeginReceive metody a nebo BeginRequestEndReceive(IAsyncResult) aEndRequest(IAsyncResult).

Bez ohledu na hodnotu vrácenou ReceiveSynchronously vlastností musí všechny vazby stále poskytovat platné implementace synchronní i asynchronní verze Receive metod pro konkrétní implementované typy kanálů. Další informace o implementaci vlastních kanálů najdete v tématu Vývoj kanálů.

Vlastnosti

ReceiveSynchronously

Získá hodnotu, která označuje, zda příchozí požadavky lze zpracovávat efektivněji synchronně nebo asynchronně.

Platí pro