ASP.NET MVC控制器静态方法

时间:2011-05-25 15:27:01

标签: asp.net-mvc static controllers

最近出现了一个关于为什么ASP.NET MVC不为其控制器方法使用静态方法的讨论。虽然我使用静态方法在反对的一侧,但我认为非静态动作方法的唯一两个参数是继承和模拟的能力(继承权给你)。

微软对静态操作/方法的设计选择是什么?

2 个答案:

答案 0 :(得分:26)

虽然我不知道那些设计ASP.NET MVC框架的人对我来说是最重要的:

每个请求实例化一次实例控制器,可以同时发生多个请求。如果控制器是静态的,则控制器上的任何状态将同时在所有请求之间共享。你可能不希望这样。更新该共享状态将成为锁定争用的雷区,可能出现死锁,并且如果未正确实现锁定,则很难跟踪错误。

简而言之,静态控制器将是一个噩梦。

答案 1 :(得分:1)

例如,您有控制器“Home”和操作“FillData”, 和另一个控制器“Student”和动作“FillData”。 想象一下,如果您将操作“FillData”设为静态方法,并且可以在任何其他控制器中轻松调用,会发生什么。 这将是一个大问题。