【发布时间】:2015-05-21 20:01:34
【问题描述】:
我有一个 WebAPI POST 控制器方法,它基本上只是将带有数量值的记录插入到表中。我需要根据可用数量检查该数量。问题是我可以同时发生多个提交,并希望消除任何可能的竞争条件。
有很多方法可以做到这一点,但我正在尝试确定最佳方法。我曾想过使用队列,但随后客户端设备将需要进行检查以查看状态。我想过使用单例模式,但是客户端将不得不等待发布。
有人指点一下吗?
【问题讨论】:
-
您的控制器能否更改为处理 2 个值,第二个值是时间戳..?
-
它可以,完全控制功能。只需要保持 RESTful。
-
如果这一切都发生在一台服务器上,您所要做的就是创建一个静态锁对象并在更新和读取期间使用相同的锁对象。这将防止对 DB 造成混淆。否则,即使您阅读了该记录,您也可以锁定它。但这与 Web Api 无关。这是并发问题。
-
@T.S.你能举个例子吗?
-
@T.S.:你不能可靠地将你的并发解决方案建立在应用服务器端的锁上,因为这会阻止你的应用服务器在未来集群化。 “静态锁”不会神奇地跨越两个或更多服务器。或者我误读了你写的内容。
标签: c# sql-server asp.net-web-api