Sdílet prostřednictvím


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