BasicHttpBinding.MaxBufferSize プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
チャネルからメッセージを受信するバッファーの最大サイズ (バイト単位) を取得または設定します。
public:
property int MaxBufferSize { int get(); void set(int value); };
public int MaxBufferSize { get; set; }
member this.MaxBufferSize : int with get, set
Public Property MaxBufferSize As Integer
プロパティ値
このバインドで構成されるエンドポイントのメッセージが処理されるときに、メッセージを格納するバッファーの最大サイズ (バイト単位)。 既定値は 65,536 バイトです。
例
次の例では、 MaxBufferSize を 1,000,000 バイトに設定します。
BasicHttpBinding binding = new BasicHttpBinding();
// set to one million
binding.MaxBufferSize = 1000000;
このプロパティの値は、構成ファイルでも設定できます。
注釈
メッセージの処理中に、メッセージを保存する十分なメモリがバッファーにない場合は、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから大量の割り当てが行われることは、メッセージ バッファーのサイズが小さすぎること、および割り当てを増やすことでパフォーマンスが向上する可能性があることを示します。
MaxBufferSize プロパティの値とその重要性は、メッセージが受信されるチャネルでメッセージがバッファーに格納されているかストリーミングされているかによって異なります。
バッファーに格納されたトランスポート (TransferMode に TransferMode.Buffered設定) の場合、この値はプロパティで指定された値と常に MaxReceivedMessageSize 等しくなります。
ストリーミング トランスポート (TransferMode を TransferMode.Streamed に設定) では、SOAP ヘッダーだけをバッファーして、メッセージを生成する必要があります。 本文は、必要に応じてストリームに含めることができます。 この場合、MaxBufferSize は、メッセージ全体 (ヘッダーと本文) のサイズを境界とし、MaxBufferSize は SOAP ヘッダーのサイズのみを境界とする値以下MaxReceivedMessageSizeMaxReceivedMessageSizeです。
ここで設定されるバッファー サイズに対する制限は、メッセージ交換のパフォーマンスを最適化するためのものです。 メッセージがバッファーに設定された最大値を超える場合に、メッセージが失われることはありません。 この場合は、CLR ヒープからのメモリがより多く要求され、これによりバッファーの使用時よりも多くのガベージ コレクションのオーバーヘッドが生じます。
注意
MaxBufferSize と MaxReceivedMessageSize の設定は、ローカルの動作設定です。 これは、それらがメタデータの他のエンドポイントに転送されないことを意味します。 メタデータから、最大メッセージ サイズ 2 GB でサービスへのプロキシを生成する場合、プロキシは既定値の 64K のままです。 これによって、メッセージおよびメッセージ バッファー サイズの適切な制限を、引き続きローカル管理者が制御できます。