Quelle est la différence entre le scope des objets Scoped et Transient dans le contexte de l'injection de dépendances?
sobes.tech IA
Réponse de l'IA
Dans le contexte de l'injection de dépendances en C#, la portée Scoped et Transient déterminent la durée de vie des objets créés :
-
Transient : l'objet est créé à chaque demande. Cela signifie qu'à chaque appel du service ou injection, une nouvelle instance sera créée.
-
Scoped : l'objet est créé une seule fois pendant la durée d'une requête (scope). Dans les applications web, cela signifie généralement qu'au cours d'une même requête HTTP, la même instance sera utilisée, mais pour une autre requête, une nouvelle sera créée.
Exemple :
services.AddTransient<IMyService, MyService>(); // nouvel objet à chaque demande
services.AddScoped<IMyService, MyService>(); // un objet par requête HTTP
Ainsi, Scoped est pratique pour stocker l'état dans le cadre d'une seule requête, tandis que Transient est adapté aux services sans état (stateless), où une nouvelle instance est nécessaire à chaque fois.