web-dev-qa-db-fra.com

asp.net core middleware vs filtres

Après avoir lu l'article sur asp.net core middlware, je ne sais plus trop quand utiliser des filtres ni quand utiliser des middlewares, car ils semblent atteindre le même objectif. Quand faut-il utiliser les middlewares au lieu de fitler?

57
Arvand

Il y a une vidéo à ce sujet sur le canal 9: Moniteurs ASP.NET # 91: Middleware contre Filtres . Pour résumer la vidéo:

L'exécution de la requête commence et nous avons un middleware, et un autre middleware, pensez-le comme des "poupées russes à l'intérieur des poupées". Finalement, le middleware de routage entre en jeu et la requête est ensuite placée dans la ligne de contrôle MVC. enter image description here Donc, si vous n'avez pas besoin du contexte de MVC (disons que vous êtes préoccupé par le flux et l'exécution, comme répondre aux en-têtes par un mécanisme de pré-routage, etc.), utilisez middlewares .
Mais si vous avez besoin du contexte de MVC et que vous souhaitez agir contre des actions, utilisez des filtres .

52
Arvand

Les middlewares fonctionnent au niveau d'ASP.NET Core et peuvent agir sur chaque requête de l'application.

D'autre part, les filtres MVC ne s'exécutent que pour les demandes qui parviennent à MVC.

Ainsi, par exemple, si je voulais imposer que toutes les demandes doivent être effectuées via HTTPS, je devrais utiliser un middleware pour cela. Si j’ai créé un filtre MVC, les utilisateurs pourraient toujours demander, par exemple, fichiers statiques sur HTTP.

Mais d'autre part, quelque chose qui enregistre les durées de demande dans les contrôleurs MVC pourrait absolument être un filtre d'action.

45
juunas