В зависимости от того, что вы делаете, я бы не ожидал увидеть много улучшений по сравнению с простым использованием HttpHandler. Я бы начал с написания HttpHandler и посмотрел, как он работает. Если вам нужно, чтобы это было быстрее, попробуйте внимательнее присмотреться к тому, что вы на самом деле делаете при обработке запроса, и посмотреть, что можно оптимизировать. Например, если вы ведете журнал в базе данных, попробуйте писать в локальную базу данных, а не по сети. Если это все еще недостаточно быстро, возможно, стоит подумать о написании чего-нибудь более низкого уровня. Однако до этого момента я бы придерживался того, что вам было легче всего написать.
Для справки, я написал рекламный сервер в ASP.NET (используя HttpHandlers), который может показывать рекламу (включая таргетинг и регистрацию показов в локальной базе данных) за 0-15 мс под нагрузкой. Я думал, что немного занимаюсь обработкой - но это довольно хорошее время отклика ИМХО.
Обновление через несколько месяцев:
Если вы очистите все HttpModules, которые включены по умолчанию, это удалит изрядное количество накладных расходов. По умолчанию следующие HttpModules включены в каждый сайт через файл web.config на уровне компьютера:
- OutputCache
- Сессия (для состояния сеанса)
- WindowsAuthentication
- ФормыАутентификация
- Паспорт
- RoleManager
- UrlAuthorization
- FileAuthorization
- Анонимная идентификация
- Профиль
- 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 < / а>
person
Daniel Schaffer
schedule
04.02.2009