我正在开发一个基于ASP.NET的Web应用程序,它将包含一个单页面,该页面上将有一个类似于大富翁的游戏板。 我正在尝试确定最佳的架构方法。 我已经确定了以下主要要求:
- 最多六个用户共享一个游戏状态对象。 - 用户需要(相对)及时了解游戏的当前状态,例如轮到谁了,当前用户刚刚投了什么骰子,每个其他用户有多少钱等。
我考虑过将游戏状态保存在数据库中,但是如果可以保持更新缓存中的游戏状态对象,那么在数据库中一遍遍更新似乎有些过度。例如,流程可能如下所示:
- 接收用户数据请求。 - 在数据库中查找数据。从数据创建对象。 - 根据游戏状态验证用户是否有执行请求的权限(例如确保现在轮到他们或者有足够的钱来购买那个物业)。 - 更新游戏对象。 - 将游戏对象写回数据库。 - 对每一个请求重复以上步骤。
请注意,单台服务器将为几个并发游戏提供服务。
我考虑使用AJAX向ASP.NET页面进行请求,也考虑使用Silverlight向Web服务进行AJAX请求,还考虑使用Silverlight中的WCF双工通道。
我无法确定最佳方法。所有方法似乎都有其缺点。对于这种情况,有没有人有经验并愿意分享这些经验?如果我描述得不够清楚,请随时提出您自己的问题!谢谢。
更新:是否有人对基于我上面提到的三个选项之一实现与服务器连接有建议?
- 最多六个用户共享一个游戏状态对象。 - 用户需要(相对)及时了解游戏的当前状态,例如轮到谁了,当前用户刚刚投了什么骰子,每个其他用户有多少钱等。
我考虑过将游戏状态保存在数据库中,但是如果可以保持更新缓存中的游戏状态对象,那么在数据库中一遍遍更新似乎有些过度。例如,流程可能如下所示:
- 接收用户数据请求。 - 在数据库中查找数据。从数据创建对象。 - 根据游戏状态验证用户是否有执行请求的权限(例如确保现在轮到他们或者有足够的钱来购买那个物业)。 - 更新游戏对象。 - 将游戏对象写回数据库。 - 对每一个请求重复以上步骤。
请注意,单台服务器将为几个并发游戏提供服务。
我考虑使用AJAX向ASP.NET页面进行请求,也考虑使用Silverlight向Web服务进行AJAX请求,还考虑使用Silverlight中的WCF双工通道。
我无法确定最佳方法。所有方法似乎都有其缺点。对于这种情况,有没有人有经验并愿意分享这些经验?如果我描述得不够清楚,请随时提出您自己的问题!谢谢。
更新:是否有人对基于我上面提到的三个选项之一实现与服务器连接有建议?