Установка свойства HTTPHandler isreusable

Я использую обработчик HTTP для загрузки файла. В основном код в «ProcessRequest» извлекает данные из базы данных, создает временную копию существующей электронной таблицы шаблона с GUID в качестве имени и записывает данные, полученные из БД, в ячейку. по ячейке с использованием COM, вызывает загрузку файла и удаляет созданную временную электронную таблицу. Весь этот процесс обычно занимает около 4-5 минут. Но когда мы попытались одновременно протестировать этот процесс, это заняло около 15 минут.

Мне интересно, может ли установка логического значения IsReusable на true помочь улучшить производительность. Но я не уверен, безопасно ли это.

Может ли кто-нибудь помочь мне с этим?

** Обновление: ** Поскольку я использую другое имя файла для каждого из созданных временных файлов, я предполагаю, что проблем с безопасностью не будет. Но все же не уверен.


person kranthi    schedule 15.09.2010    source источник


Ответы (2)


Свойство IsReusable будет делать именно то, что вы думаете. Вместо создания нового обработчика, который будет использоваться каждый раз при выполнении запроса, он будет повторно использовать существующий. Если у вас есть переменные экземпляра, созданные в конструкторе, это может повысить производительность, но только в том случае, если их создание требует больших затрат.

Кроме того, если вы поддерживаете какое-либо состояние в обработчике, то любое состояние, в котором вы его оставите, будет там для следующего запроса. Это может иметь непреднамеренные побочные эффекты.

Если основная часть вашего процесса происходит в методе ProcessRequest, то ваше узкое место находится там, и вам следует использовать профилирование, чтобы увидеть, где вы можете повысить производительность.

person Josh    schedule 15.09.2010

Свойству IsReusable присваивается значение true только в том случае, если ожидается, что этот экземпляр HttpHandler будет обрабатывать несколько запросов. Может быть другой параметр Web.Config, который решает вашу проблему, возможно, атрибут executeTimeout свойства httpRuntime:

<httpRuntime appRequestQueueLimit="100" executionTimeout="600" />  

Больше информации:

http://articles.sitepoint.com/article/web-config-file-demystified

person IrishChieftain    schedule 15.09.2010