Sobes.tech
Junior — Middle
74

Чем отличается область видимости объектов Scoped от Transient в контексте Dependency Injection?

Companies where asked
AndersenAndersen
ООО Клеркгрупп

Answer from AI

sobes.tech AI

В контексте Dependency Injection в C# область видимости Scoped и Transient определяют время жизни создаваемых объектов:

  • Transient: объект создаётся каждый раз заново при запросе. Это значит, что при каждом вызове сервиса или при каждой инъекции будет создаваться новый экземпляр.

  • Scoped: объект создаётся один раз на время одного запроса (scope). В веб-приложениях это обычно означает, что в рамках одного HTTP-запроса будет использоваться один и тот же экземпляр, но для другого запроса создастся новый.

Пример:

services.AddTransient<IMyService, MyService>(); // новый объект при каждом запросе
services.AddScoped<IMyService, MyService>();   // один объект на HTTP-запрос

Таким образом, Scoped удобен для хранения состояния в рамках одного запроса, а Transient — для stateless-сервисов, где нужен новый экземпляр каждый раз.