问题描述
|
最近,有关ASP.NET MVC为什么不将静态方法用于其控制器方法的讨论在工作中。虽然我反对使用静态方法,但我可以想到的关于非静态操作方法的仅有两个参数是继承和模拟能力(继承赋予了您)。
Microsoft对于非静态操作/方法而非静态的设计选择是什么?
解决方法
虽然我不了解那些设计ASP.NET MVC框架的人的想法,但对我而言,这是最重要的:
每个请求实例化一个实例控制器一次,多个请求可以同时发生。如果控制器是静态的,则控制器上的任何状态将同时在所有请求之间共享。您可能不需要。如果未正确实施锁定,则更新共享状态将成为锁定争用,可能出现死锁以及很难跟踪错误的雷区。
简而言之,使用静态控制器将是一场噩梦。