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
}

注釈

状況によっては、バインドが同期方式の Receive メソッドまたは Request メソッドを使用してメッセージを処理する方が効率的な場合があります。 この方法が望ましいことを呼び出し側に示すために、Binding クラスでは、必要に応じて、IBindingRuntimePreferences を実装できます。

バインドで が実装IBindingRuntimePreferencesされていない場合、Windows Communication Foundation (WCF) サービス モデル ランタイム レイヤーは、既定で および Request メソッドの非同期バージョンをReceive使用します。 バインディングで が実装 IBindingRuntimePreferencesされている場合、WCF サービス モデル ランタイム レイヤーは の ReceiveSynchronously 値をチェックし、その値を使用して、これらのメソッドの同期バージョン (Receive または ) または Request非同期バージョン (BeginReceive および EndReceive(IAsyncResult) および BeginRequestEndRequest(IAsyncResult)) を呼び出すかどうかを判断します。 バインディングが IBindingRuntimePreferences を実装していて、ReceiveSynchronously プロパティが true を返す場合は、同期方式の Receive メソッドと Request メソッドを使用して、チャネルからメッセージを受信することをお勧めします。 バインディングが IBindingRuntimePreferences を実装していない場合、または false プロパティから ReceiveSynchronously が返される場合は、非同期方式の BeginReceive メソッドと EndReceive(IAsyncResult) メソッド、または BeginRequest メソッドと EndRequest(IAsyncResult) メソッドを使用することをお勧めします。

ReceiveSynchronously プロパティが返す値に関係なく、すべてのバインディングは、実装されている特定のチャネルの種類に対し、Receive メソッドの同期および非同期の両バージョンの有効な実装を提供する必要があります。 カスタム チャネルの実装の詳細については、「 チャネルの開発」を参照してください。

プロパティ

ReceiveSynchronously

受信した要求を処理するには同期と非同期のどちらの方が効率的かを示す値を取得します。

適用対象