Может ли кто-то объяснить менее чем в двух предложениях разницу между обоими? Да, я знаю, что Google может предоставить сотни ответов, но не одно из двух четких предложений :)
Может ли кто-то объяснить менее чем в двух предложениях разницу между обоими? Да, я знаю, что Google может предоставить сотни ответов, но не одно из двух четких предложений :)
Ответы:
HttpHandler - то, куда направляется поезд запроса. HttpModule это станция по пути.
Два предложения:
HttpModule будет выполняться для каждого запроса к вашему приложению, независимо от расширения, и обычно используется для таких вещей, как безопасность, статистика, ведение журнала и т. Д.
HttpHandler обычно ассоциируется с определенным расширением и используется для таких вещей, как RSS-каналы, динамическая генерация или модификация изображений и тому подобное.
Еще немного объяснения, если это не совсем понятно:
Как я думаю о них - модули «подключаются» к конвейеру запросов, тогда как обработчики «обрабатывают» определенное расширение файла. Итак, если у вас есть сайт с LoggingModule и PdfHandler, оба будут выполняться для запроса http://example.com/sample.pdf , а один только модуль регистрации будет выполнять запрос http: // example.com/page.aspx .
Есть довольно четкая статья о разнице в MSDN: обработчики HTTP и обзор модулей HTTP
ProcessRequest
, Модуль, с другой стороны, будет работать в любой точке жизненного цикла, к которому вы подключены. Для вашего сценария желания запустить что-то до страницы aspx, вам нужен модуль. Однако вам нужно вручную отфильтровать запросы к страницам, которые не являются .aspx
Основная и общая цель HttpHandler и HttpModule - внедрить логику предварительной обработки до того, как запрос ASP.NET достигнет IIS Server.
ASP.NET предоставляет два способа внедрения логики в конвейер запросов;
Пример: RSS-каналы. Чтобы создать RSS-канал для веб-сайта, вы можете создать обработчик, который генерирует XML-формат в формате RSS. Поэтому, когда пользователи отправляют запрос на ваш сайт, который заканчивается на .rss, ASP.NET вызывает ваш обработчик для обработки запроса.
Создание обработчика состоит из трех этапов: 1. Реализация интерфейса IHttpHandler. 2. Зарегистрируйте обработчик в файле web.config или machine.config. 3. Сопоставьте расширение файла (* .arshad) с aspnet_isapi.dll в IIS.
Интерфейс IHttpHandler имеет метод ProcessRequest и свойство IsReusable, которое необходимо реализовать. ProcessRequest: в этом методе вы пишете код, который создает выходные данные для обработчика. IsResuable: это свойство указывает, может ли этот обработчик использоваться повторно или нет.
Вы можете зарегистрировать обработчик в файле web.config следующим образом
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Примечание: здесь мы обрабатываем любое имя файла с расширением arshad.
Движок ASP.NET генерирует множество событий, когда запрос проходит через конвейер запросов. Некоторые из этих событий: AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Используя HttpModule, вы можете написать логику в этих событиях. Эта логика выполняется при возникновении событий и до того, как запрос достигает IIS.
Создание модулей происходит в два этапа: 1. Реализация интерфейса IHttpModule. 2. Зарегистрируйте модуль в файле web.config или machine.config.
Пример: Безопасность: Используя модуль HTTP, вы можете выполнить пользовательскую аутентификацию или другие проверки безопасности, прежде чем запрос достигнет IIS.
HTTP-обработчик - это процесс, который запускается в ответ на запрос к веб-приложению ASP.NET. Модули HTTP позволяют изучать входящие и исходящие запросы и выполнять действия на основе запроса.
HttpHandler отвечает за обработку http-запроса по расширению, в то время как HttpModule отвечает на события жизненного цикла приложения.
Хорошая статья об этом HttpModule-and-HttpHandlers
Справка: ИНФОРМАЦИЯ: ASP.NET HTTP-модули и обзор HTTP-обработчиков
«Модули вызываются до и после выполнения обработчика. Модули позволяют разработчикам перехватывать, участвовать или изменять каждый отдельный запрос. Обработчики используются для обработки отдельных запросов конечных точек. Обработчики позволяют ASP.NET Framework обрабатывать отдельные URL-адреса HTTP или группы расширений URL-адресов в приложении. В отличие от модулей, для обработки запроса используется только один обработчик ».
HTTP-обработчик - это то, где фактически выполняется компиляция в зависимости от настроек. например, если расширение страницы равно .aspx, оно будет скомпилировано через system.web.Ui.Pagahandlefactory. как только компиляция будет выполнена по запросу дескриптора HTTP, пойдут через модуль HTTP и IIS.
HTTP-обработчик
HTTP-обработчик - это процесс, который запускается в ответ на HTTP-запрос. Поэтому, когда пользователь запрашивает файл, он обрабатывается обработчиком на основе расширения. Таким образом, пользовательские обработчики http создаются, когда вам требуется специальная обработка на основе расширения имени файла. Рассмотрим пример создания RSS для сайта. Итак, создайте обработчик, который генерирует XML-формат в формате RSS. Теперь свяжите расширение .rss с пользовательским обработчиком.
HTTP-модули
Модули HTTP подключаются к жизненному циклу запроса. Поэтому, когда запрос обрабатывается, он проходит через все модули в конвейере запроса. Так что обычно http-модули используются для:
Безопасность: для проверки подлинности запроса до его обработки.
Статистика и ведение журнала. Поскольку модули вызываются для каждого запроса, их можно использовать для сбора статистики и для регистрации информации.
Пользовательский заголовок: поскольку ответ может быть изменен, можно добавить пользовательскую информацию заголовка к ответу.