IStartupFilter est la base d'un mécanisme permettant aux bibliothèques d'ajouter un middleware à l'application. Selon les Docs "IStartupFilter est utile pour s'assurer qu'un middleware s'exécute avant ou après le middleware ajouté par les bibliothèques au début ou à la fin du pipeline de traitement des demandes de l'application".
Le mécanisme vous permet-il de manipuler le pipeline d'une manière qui ne peut pas être effectuée à partir de Startup.Configure() ?
Si le point est la modularité, vous semblez simplement échanger le couplage via Startup.Configure() pour le couplage via IServicesCollection (un appel à DI est requis). Dans le cas simple (selon l' exemple ), un appel à services.AddTransient<IStartupFilter,...>()
peut être supprimé de ConfigureServices() et app.AddMiddleware<MyMiddleware>()
peut être ajouté pour obtenir la même fonctionnalité avec moins de complexité et de magie.
L'intérêt principal du mécanisme est-il de permettre à la bibliothèque d'appliquer des conditions sur les intergiciels à inclure ? Si tel est le cas, il semble manquer de l'économie et de la clarté de conception habituelles du noyau asp.net.
Solution du problème
Dans le cas simple (selon l'exemple), un appel à services.AddTransient<IStartupFilter,...>() peut être supprimé de ConfigureServices() et app.AddMiddleware() peut être ajouté pour obtenir la même fonctionnalité avec moins de complexité et la magie.
Ce n'est pas vrai.
Il y a une grande différence entre utiliser IStartupFilter
et utiliser un middleware. Un middleware fait partie du pipeline de requêtes, ce qui signifie qu'il est exécuté à chaque requête. D'autre part, IStartupFilter
n'est exécuté qu'une seule fois au démarrage de l'application (et non à chaque requête).
Aucun commentaire:
Enregistrer un commentaire