我有一个Games
用户可以加入的列表。要选择game
,他们必须在该游戏中选择position
(即角色)。MVC3/EF4中的并发请求处理
模型
[Game] 1 <-> * [PlayerGame] * <-> 0..1 [Player]
的PlayerGame实体定义由玩家所拾取位置。
其他细节
- 所有的游戏都是一个MVC 3视图中列出。
- 数据保存在SQL Server 2008实例中,并通过EF4(CodeFirst)访问。
- 该视图通过一些jQuery Get()调用来更新自己,这些调用可以获取最新的数据,每个数据为N毫秒。
- 延迟越高(否),竞赛条件的机会越大,其中2名用户将尝试选择相同的位置。
- 我显然需要做一些服务器端验证,以便只有两个用户中的一个能够获得选定的位置,如果他们都在同一时间选择相同的位置。
什么会是驴最好的办法只有1人得到所选择的位置,而另一个得到一个错误的信息?
我目前正在考虑使用TimeStamps来确保只有的2次调用才能成功更新PlayerGame行。这是一个好主意吗?
的主要问题我与时间戳是看你可能得到我必须在创建游戏的同时创建每个PlayerGame实体。因此PlayerGame.PlayerId必须是可空的。尽管如此,这并不是什么大不了的事情! – 2011-12-13 20:32:16