BasicHttpBinding.MaxBufferSize Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el tamaño máximo, en bytes, de un búfer que recibe mensajes del canal.
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
Valor de propiedad
Tamaño máximo, en bytes, de un búfer que almacena los mensajes mientras se procesan para un punto de conexión configurado con este enlace. El valor predeterminado es 65.536 bytes.
Ejemplos
En el ejemplo siguiente se establece MaxBufferSize en 1000 000 bytes.
BasicHttpBinding binding = new BasicHttpBinding();
// set to one million
binding.MaxBufferSize = 1000000;
El valor de esta propiedad también se puede establecer en el archivo de configuración.
Comentarios
Si no hay memoria suficiente en el búfer para almacenar el mensaje mientras se procesa, se debe asignar más memoria desde el montón CLR, lo que aumenta la sobrecarga de recolección de elementos no utilizados. La asignación extensa del montón de elementos no utilizados clR es una indicación de que el tamaño del búfer de mensajes es demasiado pequeño y que el rendimiento se puede mejorar con una asignación mayor.
El valor de la propiedad MaxBufferSize y su significado es diferente en función de si los mensajes se almacenan en búfer o se transmiten en el canal a través del cual se reciben:
Para los transportes almacenados en búfer (TransferMode establecido TransferMode.Buffereden ), este valor siempre es igual al especificado por la MaxReceivedMessageSize propiedad .
Para los transportes transmitidos (TransferMode establecido TransferMode.Streameden ), solo se deben almacenar en búfer los encabezados SOAP para generar el mensaje. El cuerpo se puede transmitir a petición. En este caso, MaxBufferSize es menor o igual que MaxReceivedMessageSize, donde MaxReceivedMessageSize enlaza el tamaño del mensaje general (encabezados y cuerpo) y MaxBufferSize enlaza solo el tamaño de los encabezados SOAP.
Las limitaciones del tamaño del búfer que se establecen aquí son para optimizar el rendimiento de los intercambios de mensajes. Si un mensaje supera el valor máximo establecido para el búfer, no se quita. En su lugar, se solicita más memoria desde el montón CLR y esto incurre en más sobrecarga de recolección de elementos no utilizados que el uso de los búferes.
Note
La configuración de MaxBufferSize y MaxReceivedMessageSize son configuraciones de comportamiento locales. Esto significa que no se transmiten a otros puntos de conexión en los metadatos. Si genera un proxy a un servicio con un tamaño máximo de mensaje de 2 GB a partir de metadatos, el proxy sigue teniendo un valor predeterminado de 64 000. Esto deja el control de los límites adecuados para el tamaño del búfer de mensajes y mensajes en el ámbito de los administradores locales.