在MVC中使用锁定POST是否合理?是否存在使用会使锁无效的webfarm的情况?我通常使用数据库锁,但我的特殊情况很难管理,并且使用Monitor更简单。我不想讨论为什么我需要一个锁,只是想知道是否存在无法按预期工作的情况。
private static object Lockable = new Object();
public ActionResult Submit()
{
lock(Lockable)
{
}
}
答案 0 :(得分:3)
为了实现对webfarm的锁定,您需要在网络上拥有共享资源(例如缓存服务器),并且需要使用它来实现webfarm安全锁定。我认为这是最简单的解决方案。
您还可以隔离要序列化呼叫的组件,并通过网络访问它。
还有另一种选择,即创建可以登记到分布式事务中的MSDTC兼容组件,以便强制所有呼叫者序列化其呼叫。但是,这需要设置所有环境以使用MSDTC,Enterprise Services等。
答案 1 :(得分:1)
正如您自己所说,在少量Web服务器/不同进程的情况下,您的锁只能用于当前进程,这意味着它不会影响其他正在运行的应用程序实例(如果存在)。