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

Время жизни сервисов в DI

Вопрос

Сервис зарегистрирован через AddScoped<IOrderService, OrderService>(). Сколько экземпляров создастся?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Один на каждый HTTP-запрос (на scope). Scoped живёт в пределах scope, а ASP.NET Core создаёт scope на каждый запрос.

Варианты ответа

  1. Один на всё приложение, как у синглтона
  2. Новый при каждом внедрении в конструктор
  3. Один на поток, который обрабатывает запрос
  4. Один на каждый HTTP-запрос (на scope)правильный ответ

Разбор

Scoped живёт в пределах scope, а ASP.NET Core создаёт scope на каждый запрос. Один на приложение даёт AddSingleton, новый при каждом разрешении AddTransient. Привязки к потоку у встроенного контейнера нет: в async-коде запрос может менять потоки.

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

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