Как различаются жизненные циклы объектов в Dependency Injection для транзиентного, Scoped и синглтон режима?
Answer from AI
sobes.tech AI
В Dependency Injection (DI) в C# жизненный цикл объекта определяется режимом его регистрации:
-
Transient (транзиентный): каждый раз при запросе объекта создаётся новый экземпляр. Используется для легковесных, не сохраняющих состояние сервисов.
-
Scoped (область видимости): объект создаётся один раз на область видимости, обычно на один HTTP-запрос в веб-приложениях. Все зависимости в рамках этого запроса получают один и тот же экземпляр.
-
Singleton (одиночка): объект создаётся один раз при первом запросе и живёт на протяжении всего времени работы приложения. Все запросы получают один и тот же экземпляр.
Пример регистрации в ASP.NET Core:
services.AddTransient<IService, Service>(); // новый объект каждый раз
services.AddScoped<IService, Service>(); // один объект на запрос
services.AddSingleton<IService, Service>(); // один объект на всё время
Таким образом, выбор режима зависит от того, как долго должен жить объект и как он используется.