Sobes.tech
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 услуги, където е необходим нов екземпляр всеки път.