В зависимости от того, что вы делаете, я бы не ожидал увидеть много улучшений по сравнению с использованием HttpHandler. Я бы начал с написания HttpHandler и наблюдения за его работой. Если вам нужно, чтобы это было быстрее, попробуйте более внимательно посмотреть на то, что вы на самом деле делаете во время обработки запроса, и посмотрите, что можно оптимизировать. Например, если вы ведете какую-либо запись в базу данных, попробуйте выполнить запись в локальную базу данных, а не по сети. Если это все еще не достаточно быстро, то, возможно, посмотрите на написание чего-то более низкого уровня. Впрочем, до этого момента я буду придерживаться того, что вам легче всего написать.
Для справки, я написал рекламный сервер в ASP.NET (с использованием HttpHandlers), который может показывать рекламу (включая таргетинг и запись показа в локальную базу данных) за 0-15 мс под нагрузкой. Мне показалось, что я немного потрудился, но, по моему мнению, это довольно хорошее время отклика.
Обновление через несколько месяцев :
Если вы очистите все модули HttpModules, включенные по умолчанию, это приведет к значительному снижению издержек. По умолчанию следующие HttpModules включены в каждый сайт через файл web.config уровня машины:
- OutputCache
- Сеанс (для состояния сеанса)
- WindowsAuthentication
- FormsAuthentication
- PassportAuthentication
- RoleManager
- UrlAuthorization
- FileAuthorization
- AnonymousIdentification
- Профиль
- ErrorHandler
- ServiceModel
Как я уже говорил выше, мой рекламный сервер не использует ничего из этого, поэтому я только что сделал это в web.config этого приложения:
<httpModules>
<clear />
</httpModules>
Если вам нужны некоторые из них, но не все, вы можете удалить те, которые вам не нужны:
<httpModules>
<remove name="PassportAuthentication" />
<remove name="Session" />
</httpModules>
ASP.NET MVC Примечание: ASP.NET MVC требует наличия модуля состояния сеанса, если вы не предпримете что-то особенное для его обхода. См. Этот вопрос для получения дополнительной информации: Как отключить состояние сеанса в ASP.NET MVC?
Обновление для IIS7: К сожалению, в IIS7 все не так просто. Вот как очистить HTTP-модули в IIS7