Junior — Middle
Каква е разликата между обхвата на обектите Scoped и Transient в контекста на Dependency Injection?
sobes.tech AI
Отговор от AI
В контекста на Dependency Injection в C# областите Scoped и Transient определят времето на живот на създаваните обекти:
-
Transient: обектът се създава всеки път, когато е поискан. Това означава, че при всяко извикване на услуга или инжектиране ще се създаде нов екземпляр.
-
Scoped: обектът се създава веднъж за времето на една заявка (scope). В уеб приложения това обикновено означава, че по време на една HTTP заявка ще се използва един и същи екземпляр, но за друга заявка ще се създаде нов.
Пример:
services.AddTransient<IMyService, MyService>(); // нов обект при всяка заявка
services.AddScoped<IMyService, MyService>(); // един обект за HTTP заявка
По този начин, Scoped е удобен за съхраняване на състояние в рамките на една заявка, а Transient — за stateless услуги, където е необходим нов екземпляр всеки път.