Я всегда думал, что вариант WCF BasicHttpBinding MaxBufferSize
предназначен, чтобы защитить меня от атак DoS, однако, следующее примечание в documentation странно:Недвижимость MaxBufferSize?
Если сообщение превышает максимальное значение, установленное для буфера, он не отбрасывается. Вместо этого из кучи CLR запрашивается больше памяти, и это наносит больше лишних затрат на сбор мусора, чем использование буферов.
Так это выглядит как свойство MaxBufferSize
больше значения по умолчанию и не MaxBufferSize. Я что-то пропустил?
Ну, он делает то, что он подразумевает. Это самый большой кусок, который ваше приложение будет принимать, пакеты могут быть меньше, что-то большее в размерах <размер вставки здесь> куски – BugFinder
Что такое «пакет»? В итоге в моей службе вызывается метод и он получает сразу все параметры. Никакой концепции «пакетов» больше ... так что вся память должна быть выделена одновременно. Или MaxBufferSize подходит только для потоковых контрактов? –
подумайте об этом как о способе настройки вашего приложения. Как говорится, запросы по размеру maxbuffer не отбрасываются, например, если вы установили его в 5k, а кто-то отправит вам 1gb, вы получите 200 (иш) кусков, которые имеют большие накладные расходы, чем если вы установите свой максимальный буфер на 1gb (хорошо, некоторые преувеличения продолжаются) «пакет» будет запросом наверняка? – BugFinder