Карточка Junior ASP.NET Core спрашивают часто обновлено
Singleton, Scoped, Transient
Вопрос
Когда использовать каждое время жизни сервиса?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
- Singleton: один на приложение. Кеши, конфигурация, HttpClient-фабрики.
Ответ
- Singleton: один на приложение. Кеши, конфигурация,
HttpClient-фабрики. Должен быть потокобезопасным. - Scoped: один на запрос.
DbContext, единица работы, контекст текущего пользователя. - Transient: новый при каждом разрешении. Лёгкие сервисы без состояния. Правило: сервис не должен зависеть от сервиса с более коротким временем жизни.
Разбор
Transient с IDisposable освобождается при завершении scope, а из корневого контейнера только при остановке приложения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.