Какие времена жизни сервисов существуют в стандартном DI-контейнере .NET и в чём их различие?

Стандартный DI-контейнер .NET поддерживает Transient, Scoped и Singleton: новый объект на разрешение, один объект на scope и один объект на контейнер соответственно.

Короткий ответ

Что ответить на собеседовании

Стандартный DI-контейнер .NET поддерживает Transient, Scoped и Singleton: новый объект на разрешение, один объект на scope и один объект на контейнер соответственно.

Подробный разбор

Ответ с пояснениями

Стандартный DI-контейнер .NET поддерживает Transient, Scoped и Singleton: новый объект на разрешение, один объект на scope и один объект на контейнер соответственно.

В ASP.NET Core отдельный scope обычно создаётся для HTTP-запроса. Singleton переиспользуется всеми такими запросами и должен допускать конкурентное использование.

Выбор определяется состоянием и владением ресурсами, а не только стоимостью создания. Scoped-сервис не следует напрямую захватывать в singleton. Transient, сохранённый долгоживущим объектом, фактически становится долгоживущим; контейнер не пересоздаёт его при каждом вызове метода потребителя.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее