BasicHttpBinding.MaxBufferSize プロパティ

定義

チャネルからメッセージを受信するバッファーの最大サイズ (バイト単位) を取得または設定します。

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 のままです。 これにより、ローカル管理者のスコープ内のメッセージおよびメッセージ バッファー サイズの適切な境界を制御できます。

適用対象