【发布时间】:2011-05-25 15:27:00
【问题描述】:
最近出现了一个关于为什么 ASP.NET MVC 不将静态方法用于其控制器方法的讨论。虽然我对使用静态方法反对持反对态度,但我认为非静态操作方法的唯一两个论点是继承和模拟能力(继承给了你)。 p>
Microsoft 对非静态动作/方法的设计选择是什么?
【问题讨论】:
标签: asp.net-mvc controller static
最近出现了一个关于为什么 ASP.NET MVC 不将静态方法用于其控制器方法的讨论。虽然我对使用静态方法反对持反对态度,但我认为非静态操作方法的唯一两个论点是继承和模拟能力(继承给了你)。 p>
Microsoft 对非静态动作/方法的设计选择是什么?
【问题讨论】:
标签: asp.net-mvc controller static
虽然我不知道那些设计 ASP.NET MVC 框架的人的想法,但这对我来说是最重要的:
每个请求实例化一次实例控制器,多个请求可以同时发生。如果控制器是静态的,那么控制器上的任何状态都会同时在所有请求之间共享。你可能不想要那个。更新共享状态会成为锁定争用的雷区,如果锁定没有正确实施,可能会出现死锁,并且很难跟踪错误。
简而言之,使用静态控制器将是一场噩梦。
【讨论】:
例如,您有控制器“Home”和操作“FillData”, 和另一个控制器“学生”和动作“FillData”。 想象一下,如果您将动作“FillData”设置为静态方法,并且可以在任何其他控制器中轻松调用,将会发生什么。 这将是一个大问题。
【讨论】: