我有一個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