IBindingRuntimePreferences Интерфейс

Определение

Определяет необязательный контракт, который может реализовать привязка, чтобы указать, обрабатываются ли входящие запросы синхронно или асинхронно службой.

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
Производный

Примеры

В следующем примере показана реализация привязки, реализующей IBindingRuntimePreferences интерфейс. Этот код взят из примера канала Chunking Channel :

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
}

Комментарии

В некоторых случаях привязка может быть более эффективной для обработки сообщений с синхронными Receive или Request методами. Класс Binding может при необходимости реализовать IBindingRuntimePreferences , чтобы указать вызывающим абонентам, что это предпочтительнее.

Если привязка не реализуетсяIBindingRuntimePreferences, уровень среды выполнения модели службы Windows Communication Foundation (WCF) по умолчанию использует асинхронные версии и Receive методыRequest. Если привязка реализуетсяIBindingRuntimePreferences, уровень среды выполнения модели WCF проверяет значение ReceiveSynchronously и использует его для определения того, следует ли вызывать синхронные версии этих методов (Receiveили) или Requestасинхронные версии (BeginReceiveи или EndReceive(IAsyncResult)BeginRequest).EndRequest(IAsyncResult) Если IBindingRuntimePreferences привязка реализуется и возвращается true из ReceiveSynchronously свойства, рекомендуется использовать синхронные Receive и Request методы для получения сообщений из канала. Если привязка не реализует IBindingRuntimePreferences или не возвращается false из ReceiveSynchronously свойства, рекомендуется использовать асинхронные BeginReceive и EndReceive(IAsyncResult) методы.BeginRequestEndRequest(IAsyncResult)

Независимо от значения, возвращаемого свойством ReceiveSynchronously , все привязки по-прежнему должны предоставлять допустимые реализации синхронных и асинхронных версий Receive методов для определенных типов каналов. Дополнительные сведения о реализации пользовательских каналов см. в разделе "Разработка каналов".

Свойства

Имя Описание
ReceiveSynchronously

Возвращает значение, указывающее, можно ли обрабатывать входящие запросы более эффективно синхронно или асинхронно.

Применяется к