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 la dimensione massima 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 memorizza i messaggi mentre vengono elaborati per un endpoint configurato con questa associazione. L'impostazione predefinita è 65.536 byte.
Esempio
L'esempio seguente imposta MaxBufferSize 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 la memoria nel pool di buffer non è sufficiente per memorizzare il messaggio durante l'elaborazione, è necessario allocare altra memoria dall'heap CLR, aumentando l'overhead del processo di Garbage Collection. Se la quantità di memoria aggiuntiva allocata in questo modo è elevata, le dimensioni del buffer del messaggio sono troppo ridotte e per migliorare le prestazioni è possibile allocare più risorse.
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 con buffer (TransferMode impostato su TransferMode.Buffered), questo valore è sempre uguale a quello specificato dalla MaxReceivedMessageSize proprietà.
Per i trasporti inviati nel flusso (proprietà TransferMode impostata su TransferMode.Streamed), per generare i messaggi devono essere memorizzate nel buffer solo le intestazioni SOAP. 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.
Le limitazioni sulla dimensione del buffer impostate in questa proprietà consentono di ottimizzare le prestazioni degli scambi di messaggi. Se un messaggio supera il valore massimo definito per il buffer, non viene eliminato. Viene invece richiesta memoria aggiuntiva dall'heap CLR e questo genera un overhead del processo di Garbage Collection maggiore di quando si utilizzano i buffer.
Nota
Le impostazioni per MaxBufferSize e MaxReceivedMessageSize sono impostazioni comportamentali locali. Significa che non vengono trasmesse agli altri endpoint nei metadati. Se dai metadati viene generato un proxy in un servizio con una dimensione del messaggio massima di 2 GB, il proxy dispone ancora di un valore predefinito di 64 K. In tal modo, il controllo dei limiti appropriati per i messaggi e per la dimensione del buffer dei messaggi viene lasciato agli amministratori locali.