Назад к вопросам
Middle
5
Dependency Injection — как работает? Чем отличаются времена жизни сервисов?
Компании, где спрашивали
СБК ПАРУС
Ответ от нейросети
sobes.tech AI
Dependency Injection (DI) — это паттерн, который позволяет передавать зависимости объекта извне, а не создавать их внутри. В C# DI часто реализуется через конструктор, свойства или методы, а также поддерживается фреймворками, например, Microsoft.Extensions.DependencyInjection.
Важная часть DI — управление временем жизни сервисов:
- Transient — сервис создаётся каждый раз при запросе. Используется для лёгких, не сохраняющих состояние объектов.
- Scoped — сервис создаётся один раз на область (например, на HTTP-запрос в веб-приложении). Позволяет сохранять состояние в рамках одного запроса.
- Singleton — сервис создаётся один раз на всё время работы приложения и переиспользуется.
Пример регистрации сервисов:
services.AddTransient<IService, Service>();
services.AddScoped<IService, Service>();
services.AddSingleton<IService, Service>();
Таким образом, DI упрощает тестирование, повышает модульность и управляемость кода, а времена жизни сервисов помогают контролировать ресурсы и состояние объектов.