Выбор ответа Junior ASP.NET Core спрашивают часто обновлено
Время жизни сервисов в DI
Вопрос
Сервис зарегистрирован через AddScoped<IOrderService, OrderService>(). Сколько экземпляров создастся?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Один на каждый HTTP-запрос (на scope). Scoped живёт в пределах scope, а ASP.NET Core создаёт scope на каждый запрос.
Варианты ответа
- Один на всё приложение, как у синглтона
- Новый при каждом внедрении в конструктор
- Один на поток, который обрабатывает запрос
- Один на каждый HTTP-запрос (на scope)правильный ответ
Разбор
Scoped живёт в пределах scope, а ASP.NET Core создаёт scope на каждый запрос. Один на приложение даёт AddSingleton, новый при каждом разрешении AddTransient. Привязки к потоку у встроенного контейнера нет: в async-коде запрос может менять потоки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.