Статические методы контроллеров ASP.NET MVC - PullRequest
9 голосов
/ 25 мая 2011

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

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

1 Ответ

26 голосов
/ 25 мая 2011

Хотя я не знаю, кто думает о тех, кто разработал ASP.NET MVC Framework, для меня важнее всего следующее:

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

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

...