Среднее промежуточное ПО asp.net против фильтров

После того, как я прочитал о middlware основного ядра asp.net, я смущен, когда следует использовать фильтры и когда следует использовать посредников, поскольку они, похоже, достигают той же цели. Когда следует использовать вспомогательные средства вместо фидеров?

Ответ 1

На канале 9 есть видео: ASP.NET Monsters # 91: Middleware vs. Filters. Чтобы подвести итог видео:

Выполнение запроса начинается, и у нас есть промежуточное программное обеспечение, и еще один миддлер, подумайте об этом, как "куклы из кукол внутри кукол", и, в конце концов, прохождение промежуточного ПО маршрутизации, а затем запрос отправляется в трубопровод MVC. enter image description here Итак, если вам не нужен контекст MVC (скажем, вы обеспокоены потоком и исполнением, например, ответом на заголовки некоторым механизмом предварительной маршрутизации и т.д.), Затем используйте middlewares.
Но если вам нужен контекст MVC и вы хотите действовать против действий, используйте фильтры.

Ответ 2

Среднее ПО работает на уровне ASP.NET Core и может действовать по каждому запросу, входящему в приложение.

Фильтры MVC, с другой стороны, работают только для запросов, поступающих в MVC.

Например, если я хотел бы обеспечить, чтобы все запросы выполнялись через HTTPS, для этого мне пришлось бы использовать промежуточное программное обеспечение. Если бы я сделал фильтр MVC, который сделал это, пользователи могли бы запрашивать, например, статические файлы через HTTP.

Но с другой стороны то, что длительность запросов журналов в контроллерах MVC может быть абсолютно фильтром действий.