IBindingRuntimePreferences インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
バインドが実装すると、受信した要求をサービスが同期または非同期のどちらで処理するかを指定できるようになるオプションのコントラクトを定義します。
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 |
受信した要求を処理するには同期と非同期のどちらの方が効率的かを示す値を取得します。 |
適用対象
.NET