Фильтры или промежуточное ПО: что выбрать?¶
Три основных параллели между фильтрами и промежуточным ПО:
- запросы проходят через компонент промежуточного ПО на пути “внутрь”, а ответы снова проходят через него “на выходе”. Фильтры ресурсов, действий и результатов также являются двухсторонними, хотя фильтры авторизации и исключений запускаются один раз, а фильтры страниц — трижды;
- промежуточное ПО может завершить запрос, вернув ответ, вмето того, чтобы передать его более позднему компоненту. Фильтры также могут прервать выпонение, возвращая ответ;
- промежуточное ПО часто используется для решения сквозных задач приложения, таких как журналирование, профилирование производительности и обработка исключений. Фильтры также подходят для решения проблем такого рода.
Три основных различия:
- промежуточное ПО может выполняться для всех запросов; фильтры будут выполнятся только для запросов, доходящих до компонента
EndpointMiddlewareи выполняющих действие контроллера API, или страницу Razor; - фильтры имеют доступ к конструкциям MVC, таким, как
ModelStateиIActionResults. Промежуточное ПО работает на “более низком уровне”, чем MVC и Razor Pages; - фильтры можно легко применить к подмножеству запросов; промежуточное ПО не имеет этой концепции в качестве полноправной сущности.
Из вышесказанного может следовать следующее. Промежуточное ПО — более общая концепция, которая работает с низкоуровневыми примитивами, такими как HttpContext, и имеет более широкий охват. Если необходимая функциональность не имеет требований, связанных с MVC — следует использовать промежуточное ПО. Отличный пример — обработка исключений.
С другой стороны, если требуется доступ к конструкциям MVC, или иное поведение для некоторых действий MVC — следует рассмотреть возможность использования фильтра.
Также можно использовать компоненты промежуточного ПО в качестве фильтров, об этом можно посмотреть здесь.
Последнее обновление :
3 мая 2023 г.
Дата создания : 3 октября 2022 г.
Дата создания : 3 октября 2022 г.