Udostępnij za pośrednictwem


BasicHttpBinding.MaxBufferSize Właściwość

Definicja

Pobiera lub ustawia maksymalny rozmiar w bajtach dla buforu, który odbiera komunikaty z kanału.

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

Wartość właściwości

Int32

Maksymalny rozmiar w bajtach buforu, który przechowuje komunikaty podczas ich przetwarzania dla punktu końcowego skonfigurowanego za pomocą tego powiązania. Wartość domyślna to 65 536 bajtów.

Przykłady

Poniższy przykład ustawia wartość MaxBufferSize na 1000 000 bajtów.

BasicHttpBinding binding = new BasicHttpBinding();

// set to one million
binding.MaxBufferSize = 1000000;

Wartość tej właściwości można również ustawić w pliku konfiguracji.

Uwagi

Jeśli w buforze nie ma wystarczającej ilości pamięci do przechowywania komunikatu podczas przetwarzania, należy przydzielić większą ilość pamięci ze stertu CLR, co zwiększa obciążenie odzyskiwania pamięci. Obszerna alokacja sterty pamięci CLR jest wskazaniem, że rozmiar buforu komunikatów jest zbyt mały i że wydajność można poprawić przy użyciu większej alokacji.

Wartość właściwości MaxBufferSize i jej istotność różni się w zależności od tego, czy komunikaty są buforowane, czy przesyłane strumieniowo w kanale, za pośrednictwem którego są odbierane:

  • W przypadku buforowanych transportów (TransferMode ustawionych na TransferMode.Buffered), ta wartość jest zawsze równa wartości określonej przez MaxReceivedMessageSize właściwość.

  • W przypadku przesyłanych strumieniowo transportów (TransferMode ustawionych na TransferMode.Streamedwartość ), w celu wygenerowania komunikatu muszą być buforowane tylko nagłówki protokołu SOAP. Treść można przesyłać strumieniowo na żądanie. W takim przypadku właściwość MaxBufferSize jest mniejsza niż lub równa MaxReceivedMessageSize, gdzie MaxReceivedMessageSize graniczy rozmiar ogólnego komunikatu (nagłówki i treść) i MaxBufferSize granice tylko rozmiar nagłówków PROTOKOŁU SOAP.

Ograniczenia dotyczące rozmiaru buforu ustawione w tym miejscu służą do optymalizacji wydajności wymiany komunikatów. Jeśli komunikat przekracza maksymalną wartość ustawioną dla buforu, nie zostanie porzucony. Zamiast tego żądana jest większa ilość pamięci ze stertu CLR i powoduje to większe obciążenie związane z odzyskiwaniem pamięci niż użycie buforów.

Uwaga

Ustawienia maxBufferSize i MaxReceivedMessageSize są ustawieniami zachowania lokalnego. Oznacza to, że nie są one przesyłane do innych punktów końcowych w metadanych. Jeśli wygenerujesz serwer proxy do usługi o maksymalnym rozmiarze komunikatu wynoszącym 2 GB z metadanych, serwer proxy nadal ma wartość domyślną 64K. Pozostawia to kontrolę nad odpowiednimi granicami dla rozmiaru buforu komunikatów i komunikatów w zakresie administratorów lokalnych.

Dotyczy