Hoe verschillen de levenscycli van objecten in Dependency Injection voor de transiënt, Scoped en singleton modi?
sobes.tech AI
Antwoord van AI
В Dependency Injection (DI) в C# жизненный цикл объекта определяется режимом его регистрации:
-
Transient (транзиентный): каждый раз при запросе объекта создаётся новый экземпляр. Используется для легковесных, не сохраняющих состояние сервисов.
-
Scoped (область видимости): объект создаётся один раз на область видимости, обычно на один HTTP-запрос в веб-приложениях. Все зависимости в рамках этого запроса получают один и тот же экземпляр.
-
Singleton (одиночка): объект создаётся один раз при первом запросе и живёт на протяжении всего времени работы приложения. Все запросы получают один и тот же экземпляр.
Пример регистрации в ASP.NET Core:
services.AddTransient<IService, Service>(); // новый объект каждый раз
services.AddScoped<IService, Service>(); // один объект на запрос
services.AddSingleton<IService, Service>(); // один объект на всё время
Таким образом, выбор режима зависит от того, как долго должен жить объект и как он используется.