Ответ 1
В зависимости от того, что вы делаете, я бы не ожидал увидеть значительное улучшение по сравнению с использованием HttpHandler. Я бы начал с того, что просто написал HttpHandler и посмотрел, как он работает. Если вам нужно, чтобы это было быстрее, попробуйте более внимательно изучить то, что вы на самом деле делаете, обрабатывая запрос и видя, что можно оптимизировать. Например, если вы ведете журнал в базе данных, попробуйте записать в локальную базу данных, а не через сеть. Если он все еще не достаточно быстрый, то, возможно, задумайтесь о написании чего-то более низкого уровня. Однако до этого момента я бы придерживался того, что вам было легче писать.
Для справки я написал сервер объявлений в ASP.NET(используя HttpHandlers), который может показывать объявление (включая таргетинг и регистрировать показ в локальной базе данных) в режиме 0-15 мс при загрузке. Я думал, что занимаюсь довольно много обработки, но это довольно хорошее время отклика IMHO.
Обновление через несколько месяцев:
Если вы очистите все 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