Перейти к содержанию

Что такое промежуточное ПО?

В ASP.NET Core промежуточное ПО — это классы C#, которые могут обрабатывать HTTP-запрос или ответ. Оно может:

  • обработать входящий HTTP-запрос путем создания HTTP-ответа;
  • обработать входящий HTTP-запрос, изменить его и передать другой части промежуточного ПО
  • обработать исходящий HTTP-ответ, изменить его и передать либо другой части промежуточного ПО, либо веб-серверу ASP.NET Core.

Отдельные компоненты объединены в конвейер промежуточного ПО.
Пример конвейера:
Pasted image 20211220193915.png
Один из наиболее распространенных вариантов использования промежуточного ПО — решение сквозных задач приложения. Эти аспекты должны выполняться для каждого запроса, независимо от конкретного пути в запросе или запрошенного ресурса. Например:

  • журналирование запроса;
  • добавление стандартных заголовков безопасности в ответ;
  • связывание запроса с соответствующим пользователем;
  • установка языка текущего запроса.

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


Последнее обновление : 11 апреля 2023 г.
Дата создания : 20 сентября 2022 г.

Комментарии

Комментарии