BasicHttpBinding.MaxBufferSize Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta le dimensioni massime, in byte, per un buffer che riceve messaggi dal canale.
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
Valore della proprietà
Dimensione massima, in byte, di un buffer che archivia i messaggi mentre vengono elaborati per un endpoint configurato con questa associazione. L'impostazione predefinita è 65.536 byte.
Esempio
Nell'esempio seguente MaxBufferSize viene impostato su 1.000.000 byte.
BasicHttpBinding binding = new BasicHttpBinding();
// set to one million
binding.MaxBufferSize = 1000000;
Il valore di questa proprietà può essere impostato anche nel file di configurazione.
Commenti
Se non è disponibile memoria sufficiente nel buffer per archiviare il messaggio durante l'elaborazione, è necessario allocare più memoria dall'heap CLR, aumentando così il sovraccarico di Garbage Collection. Un'allocazione estesa dall'heap di garbage CLR indica che le dimensioni del buffer dei messaggi sono troppo piccole e che le prestazioni possono essere migliorate con un'allocazione maggiore.
Il valore della proprietà MaxBufferSize e il relativo significato è diverso a seconda che i messaggi vengano memorizzati nel buffer o trasmessi nel canale tramite cui vengono ricevuti:
Per i trasporti memorizzati nel buffer (TransferMode impostato su TransferMode.Buffered), questo valore è sempre uguale a quello specificato dalla MaxReceivedMessageSize proprietà .
Per i trasporti trasmessi (TransferMode impostato su TransferMode.Streamed), è necessario memorizzare nel buffer solo le intestazioni SOAP per generare il messaggio. Il corpo può essere trasmesso su richiesta. In questo caso, MaxBufferSize è minore o uguale a MaxReceivedMessageSize, dove MaxReceivedMessageSize limita le dimensioni del messaggio complessivo (intestazioni e corpo) e MaxBufferSize limita solo le dimensioni delle intestazioni SOAP.
Di seguito sono riportate le limitazioni relative alle dimensioni del buffer impostate per ottimizzare le prestazioni degli scambi di messaggi. Se un messaggio supera il valore massimo impostato per il buffer, non viene eliminato. Al contrario, viene richiesta più memoria dall'heap CLR e questo comporta un sovraccarico di Garbage Collection maggiore rispetto all'uso dei buffer.
Note
Le impostazioni per MaxBufferSize e MaxReceivedMessageSize sono impostazioni comportamentali locali. Ciò significa che non vengono trasmessi ad altri endpoint nei metadati. Se si genera un proxy a un servizio con dimensioni massime del messaggio di 2 GB dai metadati, il proxy ha comunque un valore predefinito di 64K. Ciò lascia il controllo dei limiti appropriati per le dimensioni del buffer dei messaggi e dei messaggi nell'ambito degli amministratori locali.