GOOGLE ADS

dimanche 17 avril 2022

Quel est l'intérêt de IStartupFilter dans le noyau asp.net ?

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 IStartupFilteret 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, IStartupFiltern'est exécuté qu'une seule fois au démarrage de l'application (et non à chaque requête).

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...