Sobes.tech
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.