В зависимости от того, что вы делаете, я бы не ожидал увидеть много улучшений только при использовании HttpHandler. Я бы начал с того, что просто написал HttpHandler и посмотрел, как он работает. Если вам нужно, чтобы это было быстрее, попробуйте более внимательно изучить то, что вы на самом деле делаете, обрабатывая запрос и видя, что можно оптимизировать. Например, если вы ведете журнал в базе данных, попробуйте записать в локальную базу данных, а не через сеть. Если это еще не достаточно быстро, то, возможно, задумайтесь о написании чего-то более низкого уровня. Однако до этого момента я бы придерживался того, что вам было легче всего писать.
Для справки я написал сервер объявлений в ASP.NET (используя HttpHandlers), который может показывать объявление (включая таргетинг и регистрировать показ в локальной базе данных) в режиме 0-15 мс при загрузке. Я думал, что занимаюсь довольно много обработки, но это очень хорошее время отклика IMHO.
Update после нескольких месяцев:
Если вы очистить все HttpModules, которые включены по умолчанию, это будет удалить достаточное количество накладных расходов. По умолчанию следующие HttpModules включены в каждый сайт через файл машины уровня web.config:
- OutputCache
- сессии (состояния сеанса)
- WindowsAuthentication
- FormsAuthentication
- PassportAuthentication
- РольManager
- UrlAuthorization
- FileAuthorization
- AnonymousIdentification
- Профиль
- ErrorHandler
- ServiceModel
Как я уже говорил выше, мой сервер объявлений не использует какой-либо из них, так что я только что сделал это в том, что приложения веб.конфигурации:
<httpModules>
<clear />
</httpModules>
Если вам нужны некоторые из них, но не все, вы можете удалить те, которые вам не нужны:
<httpModules>
<remove name="PassportAuthentication" />
<remove name="Session" />
</httpModules>
ASP.NET MVC Примечание: ASP.NET MVC требуется модуль состояния сеанса, если вы не делаете что-то конкретное для его обхода. См. Этот вопрос для получения дополнительной информации: How can I disable session state in ASP.NET MVC?
Обновление для IIS7: К сожалению, в IIS7 все не так просто. Вот how to clear HTTP Modules in IIS7
Вы мертвы: я буду выполнять некоторые записи в базу данных. И я планировал создавать крошечные текстовые файлы, а не идти в db. Файлы будут обработаны позже. Но, основываясь на вашем опыте и впечатляющем успехе, который вы достигли, я просто продолжу простой доступ HttpHandler и db. –
Что мы сделали, это положить экземпляр SQL Express на веб-серверы, на который записывается, а затем есть задание, которое вытаскивает все данные из экземпляров веб-сервера в наш основной SQL-сервер. –
Awesome, спасибо за обновление. Очень полезно. –