Httpmodules httphandlers, каково их идеальное использование? когда использовать и когда не использовать?

У меня есть некоторые вопросы о httpmodules и httphandlers, я немного смущен реальной потребностью в них, я создал много веб-сайтов, но редко использовал их, уверен, что я потерял выгоду от их неиспользования, каковы эти преимущества?

Когда использовать и когда не использовать?

6 ответов

вы можете использовать httpmodules для аутентификации, аудита или перезаписи URL. Поскольку каждый запрос сначала проходит через все модули, прежде чем он обрабатывается httphandler, это место для применения кода, который вы хотите запустить до вашего конкретного кода приложения.

Вы бы использовали httphandler, если не хотите полагаться на движок asp.net. например, вы можете написать свой собственный механизм рендеринга на основе AJAX, XML и XSLT, который не полагается на традиционные страницы asp.net.


Вы обнаружили, что пишете код в событии ASP_ Page_Load, чтобы что-то передать в ответ, а затем вызвав Response.End? Вероятно, это было лучше всего написано как HttpHandler (ashx).


Я процитирую использование, люди уже дали хорошие определения. Обработчики HTTP  Imaging вы хотите отобразить карту сайта сайта поисковому роботу, а не появляться в диалоговом окне сохранения файла. (Диалог сохранения файла появляется, когда ASP.NET/IIS не имеет обработчика по умолчанию для запрашиваемого типа файла, например txt).  Я написал обработчик HTTP для создания файлов sitemap на лету (вытаскивание информации о карте сайта из базы данных).


HttpModules и HttpHandlers полезны, если вы хотите изменить обработку документов по умолчанию IIS, либо полностью изменив поведение, либо добавив перед документом предварительную или пост-обработку.

Одно практическое приложение, которое я использовал для HttpModule, - это создание динамического создания миниатюр. Я написал HttpModule, который обрабатывал все запросы изображения. Если запрос содержал строку запроса "большой палец", я бы динамически генерировал эскиз, а не показывал исходное изображение.

Я также видел, что HttpModules используется для удаления комментариев и пробелов из вывода страницы aspx и перезаписи URL.


Оба обработчика и модули могут быть понятны только в контексте модели конвейера ASP.NET и того, как созданный пользовательский обработчик/модуль будет вписываться в эту модель.

Пара хороших ресурсов здесь и здесь.

Как уже упоминалось, модули могут использоваться для создания поведения в определенных точках события (другим распространенным использованием является обработка глобальных исключений), обработчики создают обработку запроса конечных точек (это не просто умное имя), где экземпляр страницы asp.net(который, в конечном счете, является просто обработанным в большой степени обработчиком), будет либо излишне тяжелым, либо совершенно неправильным. Лично я использую любое время, когда я создаю что-то, что не выводит HTML, который становится все более распространенным, тем больше вы разрабатываете веб-приложения, а не веб-сайты.


HttpHandlers отлично подходят для повторной маршрутизации запросов для определенных типов файлов и других ресурсов. Например, когда вам нужно что-то сделать с входящим запросом на тип файла, который ASP.NET не защищает с помощью FormsAuthentication, вы можете определить, является ли это конкретным типом файла, который находится в определенном каталоге и перенаправляет пользователя на другая страница, если не разрешена.

HttpModules может выполнять определенную обработку для вашего приложения независимо от ресурсов. Более техническое объяснение можно найти здесь: http://www.15seconds.com/issue/020417.htm

Кроме того, они добавляют накладные расходы для каждого запроса, а это означает, что вы не должны использовать их для задач с интенсивной обработкой.

licensed under cc by-sa 3.0 with attribution.