ASP.net Web API: Почему контроллеры созданы для каждого запроса?

Статья Майка Уосса " Инъекция зависимостей для веб-API-контроллеров " на www.asp.net гласит:

Зависимость от времени и времени контроллера

Контроллеры создаются по запросу...

Правильно ли я понимаю, что ASP.NET Web API создает новый экземпляр контроллера (и удовлетворяет его зависимостям) для каждого входящего запроса?

Является ли этот подход не расточительным в том смысле, что он создает и уничтожает многие экземпляры контроллера, когда теоретически один экземпляр может использоваться для всех запросов?

Ответ 1

Контроллер содержит информацию (состояние) о входящем запросе.

Если бы у вас был только один контроллер для обработки многих запросов, все они были бы смущены, и пользователи, скорее всего, получат какие-то странные результаты.

Ответ 2

Если бы он не был воссоздан по каждому запросу, у вас действительно был бы синглтон или статический класс, означающий, что вам нужно будет обработать сброс состояний классов на исключения и всевозможные другие случаи. Результат почти наверняка означал бы ошибки.

Накладные расходы для создания нового контекста каждый раз представляют собой небольшую цену, чтобы заплатить за лучшую ремонтопригодность кода.