C# ASP.NET HttpModules: HttpApplication События

У меня есть HttpApplication (Global.asax) в моем веб-приложении, я использую его для отлова и регистрации необработанных исключений и для настройки WebFormURLRouting. Это все работает, однако я хочу переместить этот код в мою платформу приложений (т.е. не в Global.asax.cs)

Я только что попытался создать класс HttpApplication в рамках, но кажется, я не могу переопределить события? В любом случае, я полагаю, что вместо использования этих событий я могу использовать HttpModule:

1) Полностью устранить необходимость в Global.asax?

2) Как это влияет на масштабирование, то есть, в конечном итоге, запуск приложения в веб-ферме

3) У меня есть HttpHandlers для обработки других вещей, таких как выгрузка файлов и загрузка файлов. Существует ли ограничение на количество используемых HttpModule/HttpHandlers или их нужно каким-то образом комбинировать, чтобы уменьшить накладные расходы?

Любые комментарии приветствуются

2 ответа

Решение

Прослушивание событий, которые вы знаете из Global.asax в модуле HTTP, так же просто, как подключение к событиям экземпляра HttpApplication в методе Init модуля. Вы не можете переопределить методы HttpApplication, вы должны слушать его события.

Что касается других ваших вопросов: 1) Да, во многих моих веб-проектах мы не используем Global.asax

2) Это на самом деле не влияет на масштабирование. Для каждого веб-сервера в ферме вам необходимо правильно подключить HTTPModule. Но так как это делается в web.config, оно должно быть уже там.

3) Краткий ответ: Нет. Для httphandlers они выбираются и запускаются на основе расширения входящего http-запроса и / или пути и метода HTTP. Вам действительно понадобится много таких, прежде чем выбор конкретного обработчика станет проблемой производительности. Для HttpModules у вас есть возможность запускать некоторый код при каждом запросе, и, очевидно, если запуск этого кода занимает время, это повлияет на производительность. Но это будет ваш код, который займет время, а не факт, что он запускается через модуль http.

Вы можете создать свой класс Application в вашей среде Framework и наследовать его в каждом приложении. Таким образом, вы будете иметь все свои ручки в рамках.
Ответы:

  1. Вы можете избежать использования класса Application, но добавление Handlers для этого не очень хорошая идея.
  2. Количество обработчиков НЕ влияет на масштабируемость в целом. НО ЭТО ВЛИЯЕТ НА ОБСЛУЖИВАНИЕ.
  3. Держите количество обработчиков небольшим из-за #2.
Другие вопросы по тегам