Чи може хтось пояснити менш ніж за два речення різницю між обома? Так, я знаю, що Google може дати сотні відповідей, але не один із 2 чітких пропозицій :)
Чи може хтось пояснити менш ніж за два речення різницю між обома? Так, я знаю, що Google може дати сотні відповідей, але не один із 2 чітких пропозицій :)
Відповіді:
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-канал для веб-сайту, ви можете створити обробник, що випромінює формат RSS у форматі RSS. Отже, коли користувачі надсилають запит на ваш сайт, який закінчується .rss, ASP.NET викликає вашого обробника для обробки запиту.
У створенні інтерфейсу Handler 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>
Примітка: тут ми обробляємо будь-яке ім'я файлу з розширенням аршад.
Двигун 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
Довідка: INFO: Огляд модулів HTTP ASP.NET та обробників HTTP
«Модулі викликаються до та після виконання обробника. Модулі дозволяють розробникам перехоплювати, брати участь або змінювати кожен окремий запит. Обробники використовуються для обробки індивідуальних запитів кінцевих точок. Обробники дозволяють ASP.NET Framework обробляти окремі URL-адреси HTTP або групи розширень URL-адрес у програмі. На відміну від модулів, для обробки запиту використовується лише один обробник ».
HTTP обробник - це те, де насправді компіляція проводиться на основі налаштувань. наприклад, якщо розширення сторінки є .aspx, то воно буде компілюватися через system.web.Ui.Pagahandlefactory. як тільки компіляція буде виконана за запитом обробки HTTP, перейдемо через модуль HTTP та IIS.
Обробник HTTP
HTTP Handler - це процес, який запускається у відповідь на запит HTTP. Отже, коли користувач запитує файл, він обробляється обробником на основі розширення. Отже, спеціальні обробники http створюються, коли вам потрібно спеціально обробляти на основі розширення імені файлу. Розглянемо приклад створення RSS для сайту. Отже, створіть обробник, який генерує формат XML у форматі RSS. Тепер прив’яжіть розширення .rss до користувальницького обробника.
Модулі HTTP
Модулі HTTP підключаються до життєвого циклу запиту. Отже, коли запит обробляється, він передається через усі модулі в конвеєрі запиту. Тому в основному модулі http використовуються для:
Безпека: для автентифікації запиту до обробки запиту.
Статистика та ведення журналу: Оскільки модулі викликаються для кожного запиту, їх можна використовувати для збору статистики та для запису інформації.
Спеціальний заголовок: Оскільки відповідь можна змінити, до відповіді можна додати інформацію власної заголовки.