Ответ 1
Контроллер содержит информацию (состояние) о входящем запросе.
Если бы у вас был только один контроллер для обработки многих запросов, все они были бы смущены, и пользователи, скорее всего, получат какие-то странные результаты.
Статья Майка Уосса " Инъекция зависимостей для веб-API-контроллеров " на www.asp.net гласит:
Зависимость от времени и времени контроллера
Контроллеры создаются по запросу...
Правильно ли я понимаю, что ASP.NET Web API создает новый экземпляр контроллера (и удовлетворяет его зависимостям) для каждого входящего запроса?
Является ли этот подход не расточительным в том смысле, что он создает и уничтожает многие экземпляры контроллера, когда теоретически один экземпляр может использоваться для всех запросов?
Контроллер содержит информацию (состояние) о входящем запросе.
Если бы у вас был только один контроллер для обработки многих запросов, все они были бы смущены, и пользователи, скорее всего, получат какие-то странные результаты.
Если бы он не был воссоздан по каждому запросу, у вас действительно был бы синглтон или статический класс, означающий, что вам нужно будет обработать сброс состояний классов на исключения и всевозможные другие случаи. Результат почти наверняка означал бы ошибки.
Накладные расходы для создания нового контекста каждый раз представляют собой небольшую цену, чтобы заплатить за лучшую ремонтопригодность кода.