Я подключаюсь к основной службе Tridion с помощью System.ServiceModel.WsHttpBinding. Служба будет использоваться только аутентифицированными пользователями и, вероятно, только кодом, который я контролирую. Мне нужно выбрать значения для следующих
- MaxBufferPoolSize (по умолчанию 524,288 байт)
- MaxReceivedMessageSize (по умолчанию 65 536 байт)
- ReaderQuotas. MaxArrayLength (по умолчанию 16384 байт)
- ReaderQuotas. MaxBytesPerRead (по умолчанию 4096 байт)
- ReaderQuotas. MaxNameTableCharCount (по умолчанию 16384 байт)
- ReaderQuotas. MaxStringContentLength (по умолчанию 8192 байта)
Примеры кода, которые я видел для использования основной службы, неизменно устанавливают по крайней мере некоторые из них в значения, превышающие значения по умолчанию, например 4 Мб. Это из-за известных проблем, когда используются другие значения, такие как значения по умолчанию?
MaxBufferPoolSize позволяет предотвратить чрезмерную сборку мусора. Это просто вопрос мониторинга GC и настройки на основе этого?
MaxReceivedMessageSize, MaxArrayLength и MaxBytesPerRead предназначены для защиты от атак Dos, поэтому, по моему сценарию, я могу улучшить пропускную способность, увеличив их. Помогло бы действительно большое число?
MaxNameTableCharCount, похоже, существует, чтобы предотвратить неконтролируемый рост того, что вы, возможно, не захотите расти бесконтрольно, так что, возможно, оставив по умолчанию было бы хорошо.
В документации по MaxStringContentLength не указано, что произойдет, если вы превысите квоту. Предположительно, ReadContentAsString каким-то образом сработает, поэтому, возможно, это значение должно быть большим.
Итак - следует ли оставить эти значения по умолчанию? Это вызовет у меня проблемы? Должен ли я увеличить их до больших значений? Будет ли это помогать с пропускной способностью и т.д., Или это может вызвать другие проблемы?