Статические методы управления ASP.NET MVC

Недавно на работе возникло обсуждение того, почему ASP.NET MVC не использует статические методы для своих методов контроллера. В то время как я был на стороне защиты от использования статических методов, единственными двумя аргументами, которые я мог придумать для нестатических методов действия, были наследование и способность высмеивать (что дает вам наследование).

Какой дизайн Microsoft выбрал для нестатических действий/методов вместо статических?

Ответ 1

В то время как я не знаю умов тех, кто разработал ASP.NET MVC Framework, для меня большой:

Контроллер экземпляра создается один раз за запрос, одновременно может выполняться несколько запросов. Если контроллер является статическим, любое состояние на контроллере совместно используется для всех запросов одновременно. Вы, вероятно, этого не хотите. Обновление этого общего состояния становится минным полем блокировки конкуренции, возможными взаимоблокировками и очень трудно отслеживать ошибки, если блокировка не выполнена должным образом.

Короче говоря, статический контроллер был бы кошмаром для работы.