Sdílet prostřednictvím


IBindingRuntimePreferences Rozhraní

Definice

Definuje volitelný kontrakt, který může vazba implementovat, aby určila, jestli se příchozí požadavky zpracovávají synchronně nebo asynchronně službou.

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 pochází z ukázky kanálu bloků dat:

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 ke zpracování zpráv pomocí synchronních Receive nebo Request metod efektivnější. Binding Třída může volitelně implementovatIBindingRuntimePreferences, aby indikovala volajícím, že je to upřednostňované.

Pokud se vazba neimplementuje IBindingRuntimePreferences, vrstva modulu runtime modelu služby Windows Communication Foundation (WCF) ve výchozím nastavení používá asynchronní verze Receive a Request metody. Pokud se implementuje IBindingRuntimePreferencesvazba, 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 z ReceiveSynchronously vlastnosti, doporučujeme použít synchronní Receive a Request metody přijímat zprávy z kanálu. Pokud vazba neimplementuje IBindingRuntimePreferences nebo vrací false z ReceiveSynchronously vlastnosti, doporučuje se použít asynchronní BeginReceive a EndReceive(IAsyncResult) nebo BeginRequest a EndRequest(IAsyncResult) metody.

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í typy kanálů implementované. Další informace o implementaci vlastních kanálů naleznete v tématu Vývoj kanálů.

Vlastnosti

Name Description
ReceiveSynchronously

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

Platí pro