Junior — Middle
Mi a különbség a Scoped és Transient objektumok láthatósági területe között a Dependency Injection kontextusában?
sobes.tech MI
Válasz az MI-től
A C#-ban a Dependency Injection kontextusában a Scoped és Transient hatókörök határozzák meg a létrehozott objektumok életidejét:
-
Transient: az objektum minden kéréskor újra létrejön. Ez azt jelenti, hogy minden szolgáltatáshívás vagy injektálás során új példány jön létre.
-
Scoped: az objektum egyszer jön létre egy kérés (scope) ideje alatt. Webalkalmazásokban ez általában azt jelenti, hogy ugyanazon HTTP-kérésen belül ugyanaz a példány használatos, de más kérés esetén új példány jön létre.
Példa:
services.AddTransient<IMyService, MyService>(); // minden kérésnél új objektum
services.AddScoped<IMyService, MyService>(); // egy objektum HTTP-kérésenként
Így a Scoped alkalmas az állapot tárolására egy kérésen belül, míg a Transient stateless szolgáltatásokhoz ideális, ahol minden alkalommal új példányra van szükség.