Должен ли я установить IsReusable в True в моих HttpHandlers?
-
20-09-2019 - |
Вопрос
Я никогда до конца не понимал это свойство IHttpHandler.Это свойство, которое вы должны установить при реализации интерфейса.Я предположил, что установка значения true улучшила бы производительность, но я не уверен, какими могут быть негативные побочные эффекты.Должен ли я возвращать true или false?
Решение
Он используется, чтобы указать, будет ли один экземпляр IHttpHandler использоваться для обработки нескольких одновременных запросов.Так что, если вы установите его на true
это повысит производительность, но вы должны убедиться, что ваш код потокобезопасен, потому что ProcessRequest
метод может быть вызван из нескольких потоков одновременно.
Другие советы
Если ваш IHttpHandler
реализация содержит состояние (возможно, настроенное в конструкторе и позже используемое в ProcessRequest
) тогда иногда может быть полезно установить IsReusable
к ложному.
IsReusable сохраняет обработчик в памяти и способен обрабатывать несколько запросов.Если установлено значение false, он должен создавать новый экземпляр обработчика для каждого входящего запроса.
У меня самого были некоторые проблемы с этой собственностью:
Потоковая передача изображений На основе базы данных С использованием HttpHandler