Какой смысл WCF MaxReceivedMessageSize

Единственное время, когда мы замечаем, что это значение появляется, когда происходит сбой службы, потому что значение слишком низкое. Быстрый способ исправить это - установить очень большое число. Тогда нет проблем.

Что мне было интересно, есть ли какие-либо негативные последствия для установки этого значения высоко?

Я вижу, что он потенциально может дать некоторую защиту от атаки типа "отказ в обслуживании", но имеет ли он какую-либо другую функцию?

1 ответ

Решение

Это помогает ограничить нагрузку на ваш сервер WCF. Если вы разрешаете 1 000 подключений, и каждое подключение может отправлять вам 1 МБ данных - вам может потребоваться 1 ГБ ОЗУ на вашем сервере - или может произойти много подкачки.

Ограничение на размер сообщения (и ограничение на одновременные соединения / вызовы) помогает поддерживать использование ОЗУ (а также ЦП) на управляемом уровне.

Это также позволяет вам масштабировать, в зависимости от вашего сервера. Если у вас одноядерный ЦП и 4 ГБ или ОЗУ, вы, вероятно, не сможете обрабатывать такой объем трафика, как если бы у вас был 16-процессорный ЦП и 32 ГБ ОЗУ или более. С помощью различных настроек, в том числе MaxReceivedMessageSize, вы можете настроить свою среду WCF с учетом возможностей базового оборудования.

И, конечно, как вы уже упоминали: многие настройки в WCF отключены или имеют низкое значение специально для того, чтобы помешать злонамеренным пользователям затопить ваш сервер DoS-атаками и отключить его.

Другие вопросы по тегам