asp.net - ASP.NET 中是否存在共享 session 的概念?

标签 asp.net wcf silverlight caching duplex

我正在开发一个由单个页面组成的 Web 应用程序 (ASP.NET) 游戏,在该页面上会有一个类似于 Monopoly 的游戏板。我正在尝试确定最好的架构方法是什么。到目前为止我确定的主要要求是:

  • 最多六个用户共享一个游戏状态对象。
  • 用户需要(相对)了解游戏的当前状态,即轮到谁了、活跃用户刚刚滚动了什么、每个其他用户有多少钱等等。

我曾考虑过将游戏状态保存在数据库中,但当游戏状态对象(例如在缓存中)可以保持最新时,继续更新数据库似乎有点过分了。例如,流程可能如下所示:

  1. 接收用户的数据请求。
  2. 在数据库中查找数据。从该数据创建对象。
  3. 验证用户是否有权根据游戏状态执行请求(即确保确实轮到他们或有足够的钱购买该属性(property))。
  4. 更新游戏对象。
  5. 将游戏对象写回数据库。
  6. 对每个请求都重复此操作。

考虑一个服务器将服务多个并发游戏。

  1. 我考虑过使用 AJAX 向 ASP.NET 页面发出请求。
  2. 我考虑过使用 silverlight 对 Web 服务使用 AJAX 请求。
  3. 我考虑过在 silverlight 中使用 WCF 双工 channel 。

我不知道最好的方法是什么。似乎都有其缺点。有没有人有此类事情的经验并愿意分享这些经验?如果我太含糊的话,请随意问自己的问题!谢谢。

更新:有没有人对如何根据我上面提到的三个选项实现与服务器的连接有任何建议?

最佳答案

您可以使用 ASP.Net 缓存或应用程序状态来存储游戏对象,因为它们是在用户之间共享的。缓存可能是最好的地方,因为可以从其中删除对象以节省内存。

如果您使用唯一 key 将游戏对象存储在缓存中,则可以将该 key 存储在每个访问者 session 中,并使用它来检索共享游戏对象。如果缓存已被清除,您将从数据库重新创建对象。

关于asp.net - ASP.NET 中是否存在共享 session 的概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248640/

相关文章:

asp.net - AntiXss.JavaScriptEncode 将结果用单引号括起来是否有充分的理由?

c# - WCF - 设置大文件下载超时

wcf - WCF托管:可以访问svc文件,但不能转到wsdl链接

silverlight - WCF-RIA 服务客户端 OutputCache - 如何强制刷新缓存

silverlight - Silverlight 弱事件的良好实现是什么?

c# - 如何从 asp.net mvc Html 帮助程序(例如 Html.Radio)内部将模型值作为 javascript 函数参数传递?

javascript在asp.net mvc中打印div内容

c# - 使用 AJAX 3.5 从另一个 DropDownList 填充一个 DropDownList

angularjs - angular.service 调用错误:net::ERR_INSECURE_RESPONSE

silverlight - PixelFormats 和 WriteableBitmap.Lock 在 Silverlight3 中去了哪里?