Обработчик HTTP ASP.NET — это процесс, который запускается в ответ на запрос, сделанный веб-приложению ASP.NET . [1] Наиболее распространенным обработчиком является обработчик страниц ASP.NET, который обрабатывает файлы .aspx. Когда пользователи запрашивают файл .aspx, запрос обрабатывается страницей через обработчик страниц. [2]
HTTP-обработчики являются важным компонентом фреймворка ASP.NET, предоставляя низкоуровневый способ взаимодействия с входящими HTTP-запросами. Они предлагают разработчикам детальный контроль над тем, как обрабатываются конкретные запросы, позволяя настраивать обработку различных типов файлов или шаблонов URL. [3]
HTTP-обработчики отсутствовали в «классическом» ASP . Они реализуют System.Web.IHttpHandler
интерфейс. В отличие от ASP.NET Web Forms , у них нет файла HTML-разметки, событий и другой поддержки. Все, что у них есть, это файл кода (написанный на любом .NET-совместимом языке ), который записывает некоторые данные в HTTP-ответ сервера. HTTP-обработчики похожи на расширения ISAPI . [4]
Интерфейс IHttpHandler
определяет два ключевых члена: 1. IsReusable
: Булево свойство, указывающее, можно ли повторно использовать обработчик для нескольких запросов. 2. ProcessRequest
: Метод, содержащий фактическую логику обработки запроса. [5]
Разработчики могут создавать пользовательские обработчики HTTP для реализации специализированных функций, таких как: 1. Генерация динамических изображений или документов «на лету». 2. Реализация пользовательских схем аутентификации или авторизации. 3. Обработка определенных типов файлов или шаблонов URL уникальным способом. 4. Создание веб-сервисов RESTful. [6] [7]
HTTP-модуль — это сборка, которая вызывается при каждом запросе, сделанном к вашему приложению. HTTP-модули вызываются как часть конвейера запросов ASP.NET и имеют доступ к событиям жизненного цикла на протяжении всего запроса. HTTP-модули позволяют вам проверять входящие и исходящие запросы и предпринимать действия на основе запроса. [8]
В то время как обработчики HTTP отвечают за генерацию ответа на конкретный запрос, модули HTTP могут перехватывать и обрабатывать все запросы, проходящие через конвейер ASP.NET. Это делает модули идеальными для реализации сквозных задач, таких как ведение журнала, безопасность или мониторинг производительности. [9]
В отличие от ASP.NET Web Forms, имеющих расширение файла «.aspx», обработчики ASP.NET по умолчанию имеют расширение файла «.ashx». [10]
Handlers считаются более легкими объектами, чем ASP.NET Web Forms. Вот почему они используются для обслуживания динамически генерируемых изображений, генерируемых на лету PDF -файлов и подобного контента для веб-браузера . [11]
Для настройки обработчика HTTP в приложении ASP.NET разработчики могут использовать <httpHandlers>
раздел в файле web.config. Это позволяет сопоставлять определенные расширения файлов или шаблоны URL с пользовательскими классами обработчиков. [12]
В ASP.NET Core эти обработчики HTTP были заменены на «промежуточное программное обеспечение» ApplicationBuilders (IApplicationBuilder), которые позволяют маршрутизировать запросы на основе заголовков запросов, а не только URL-пути. [13]
Переход на промежуточное ПО в ASP.NET Core представляет собой значительный сдвиг в модели обработки запросов. Компоненты промежуточного ПО более гибкие и могут быть легко объединены в цепочку для формирования конвейера обработки запросов. Этот новый подход предлагает несколько преимуществ: 1. Большая модульность и возможность повторного использования компонентов обработки запросов. 2. Упрощенная конфигурация и настройка по сравнению с системой обработчиков/модулей. 3. Улучшенная производительность за счет снижения накладных расходов при обработке запросов. 4. Лучшая поддержка асинхронной обработки и современных шаблонов программирования. [14]
Несмотря на эти изменения, основные концепции, лежащие в основе обработчиков HTTP, остаются актуальными для понимания того, как веб-приложения обрабатывают и реагируют на HTTP-запросы, что делает их важной темой для изучения разработчиками ASP.NET. [15]