Карточка Junior ASP.NET Core спрашивают часто обновлено

Singleton, Scoped, Transient

Вопрос

Когда использовать каждое время жизни сервиса?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

- Singleton: один на приложение. Кеши, конфигурация, HttpClient-фабрики.

Ответ

  • Singleton: один на приложение. Кеши, конфигурация, HttpClient-фабрики. Должен быть потокобезопасным.
  • Scoped: один на запрос. DbContext, единица работы, контекст текущего пользователя.
  • Transient: новый при каждом разрешении. Лёгкие сервисы без состояния. Правило: сервис не должен зависеть от сервиса с более коротким временем жизни.

Разбор

Transient с IDisposable освобождается при завершении scope, а из корневого контейнера только при остановке приложения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.