¿En qué se diferencian los ciclos de vida de los objetos en la inyección de dependencias para los modos transitorio, Scoped y singleton?
sobes.tech AI
Respuesta de la IA
В Dependency Injection (DI) в C# жизненный цикл объекта определяется режимом его регистрации:
-
Transient (транзиентный): каждый раз при запросе объекта создаётся новый экземпляр. Используется для легковесных, не сохраняющих состояние сервисов.
-
Scoped (область видимости): объект создаётся один раз на область видимости, обычно на один HTTP-запрос в веб-приложениях. Все зависимости в рамках этого запроса получают один и тот же экземпляр.
-
Singleton (одиночка): объект создаётся один раз при первом запросе и живёт на протяжении всего времени работы приложения. Все запросы получают один и тот же экземпляр.
Пример регистрации в ASP.NET Core:
services.AddTransient<IService, Service>(); // новый объект каждый раз
services.AddScoped<IService, Service>(); // один объект на запрос
services.AddSingleton<IService, Service>(); // один объект на всё время
Таким образом, выбор режима зависит от того, как долго должен жить объект и как он используется.