Что такое промежуточное ПО?¶
В ASP.NET Core промежуточное ПО — это классы C#, которые могут обрабатывать HTTP-запрос или ответ. Оно может:
- обработать входящий HTTP-запрос путем создания HTTP-ответа;
- обработать входящий HTTP-запрос, изменить его и передать другой части промежуточного ПО
- обработать исходящий HTTP-ответ, изменить его и передать либо другой части промежуточного ПО, либо веб-серверу ASP.NET Core.
Отдельные компоненты объединены в конвейер промежуточного ПО.
Пример конвейера:

Один из наиболее распространенных вариантов использования промежуточного ПО — решение сквозных задач приложения. Эти аспекты должны выполняться для каждого запроса, независимо от конкретного пути в запросе или запрошенного ресурса. Например:
- журналирование запроса;
- добавление стандартных заголовков безопасности в ответ;
- связывание запроса с соответствующим пользователем;
- установка языка текущего запроса.
Объединение компонентов в конвейер позволяет компоненту использовать для обработки запроса данные, добавленные к запросу предыдущим компонентом в цепочке.

Например, компонент аутентификации связывает запрос с пользователем, а компонент авторизации проверяет, имеет ли данный пользователь полномочия на выполнение данного запроса, и если имеет — передает запрос компоненту конечной точки для генерации ответа. В противном же случае — генерирует ответ с ошибкой, не давая запросу достигнуть конечной точки.
Также ключевым моментом является то, что конвейер является двунаправленным — когда какая-то часть конвейера генерирует ответ, он проходит через предыдущие компоненты в обратном порядке.
Запросы проходят через конвейер в виде объектов HttpContext.
Как мы уже видели, настраивается конвейер в классе Startup.
Также можно рассматривать конвейер в виде серии концентрических компонентов, вложенных один в другой наподобие матрёшки.

Запрос проходит через слои извне к центру, пока не будет возвращен ответ, затем — возвращается через компоненты в обратном порядке.
Дата создания : 20 сентября 2022 г.