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 プロパティの値とその重要性は、メッセージが受信されるチャネルでバッファーに格納されているかストリーミングされているかによって異なります。
バッファー処理されたトランスポート (TransferModeTransferMode.Buffered に設定) の場合、この値は常に MaxReceivedMessageSize プロパティで指定された値と等しくなります。
ストリーミング トランスポート (TransferModeTransferMode.Streamed に設定) の場合、メッセージを生成するために SOAP ヘッダーのみをバッファーに格納する必要があります。 本文はオンデマンドでストリーミングできます。 この場合、MaxBufferSize は MaxReceivedMessageSize以下です。 MaxReceivedMessageSize はメッセージ全体のサイズ (ヘッダーと本文) を境界とし、MaxBufferSize は SOAP ヘッダーのサイズのみをバインドします。
ここで設定するバッファー サイズの制限は、メッセージ交換のパフォーマンスを最適化するためのものです。 メッセージがバッファーに設定されている最大値を超えた場合、メッセージは削除されません。 代わりに、CLR ヒープから要求されるメモリの数が多く、バッファーを使用するよりもガベージ コレクションのオーバーヘッドが大きくなります。
Note
MaxBufferSize と MaxReceivedMessageSize の設定は、ローカルの動作設定です。 これは、メタデータ内の他のエンドポイントに送信されないことを意味します。 メタデータから最大メッセージ サイズが 2 GB のサービスに対してプロキシを生成する場合、プロキシの既定値は 64K のままです。 これにより、ローカル管理者のスコープ内のメッセージおよびメッセージ バッファー サイズの適切な境界を制御できます。