IBindingRuntimePreferences 介面

定義

定義選擇性合約,繫結可以實作此合約來指定服務要以同步還是非同步方式處理傳入要求。

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
衍生

範例

下列範例會示範實作 IBindingRuntimePreferences 介面之繫結的實作方式。 此程式代碼取自 區塊通道 範例:

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
}

備註

在某些情況下,讓繫結使用同步 ReceiveRequest 方法來處理訊息可能會比較有效率。 Binding 類別可以選擇性地實作 IBindingRuntimePreferences,以便向呼叫端指示這是偏好的方式。

如果系結未實IBindingRuntimePreferences作 ,Windows Communication Foundation (WCF) 服務模型運行時間層預設為使用 和 Request 方法的Receive異步版本。 如果系結確實實 IBindingRuntimePreferences作 ,WCF 服務模型執行時間層會檢查 的值 ReceiveSynchronously ,並使用該值來判斷呼叫這些方法的同步版本 (Receive 或) 或 Request 異步版本 (BeginReceiveEndReceive(IAsyncResult)BeginRequest 和 和) EndRequest(IAsyncResult) 。 如果 IBindingRuntimePreferences 是由繫結所實作,並從 true 屬性傳回 ReceiveSynchronously,則建議您使用同步 ReceiveRequest 方法來從通道接收訊息。 如果繫結並未實作 IBindingRuntimePreferences,或是從 false 屬性傳回 ReceiveSynchronously,則建議您使用非同步 BeginReceiveEndReceive(IAsyncResult) 或是 BeginRequestEndRequest(IAsyncResult) 方法。

不論 ReceiveSynchronously 屬性傳回的值為何,所有的繫結都仍然必須針對實作的特定通道型別來提供同步和非同步 Receive 方法版本的有效實作。 如需實作自定義通道的詳細資訊,請參閱 開發通道

屬性

ReceiveSynchronously

取得值,這個值指出以同步還是非同步方式處理傳入要求可以比較有效率。

適用於