我有一个作为Azure网站运行的PokerApp的天真版本。Azure网站和有状态的webApp
在其存储服务器存储的表的状态,(该轮到谁了,窗帘价值,卡...)等
这里的问题是,我不知道我有多少可以依靠WebServer的内存是“永久”的。服务器的简单重启会导致内存丢失,因此重启前所有正在进行的游戏都将丢失/造成问题。
我已阅读关于使用TableStorage来保留会话数据并在实例之间共享它,但在我的情况下,它不仅仅是我想要分享的文本字符串,而是让我们说例如一个大厅objcet,其中包含所有关联的信息与游戏。
这是我在记忆
之后你的一些评论对象的非常粗略的结构,你可以看到,需要存储的对象是相当大而且几乎不断。我不知道序列化和反序列化在这里会如何工作......
我应该考虑一个天青的虚拟机,我希望这个虚拟机有持久性内存而不是网站? 还是有更好的方法来实现这样的事情?
感谢所有的答案和意见,你已经明确表示,在云中工作时,一个不能依靠本地内存。 我打算做一些重构并优化“状态”对象,然后使用缓存服务。
虽然有两个问题出现在我的脑海中,但一旦你对这些问题有所了解,我保证我会闭嘴并接受@ astaykov的伟大答案。
实例级别的并发 - 我在我的应用程序中使用经典的线程锁来避免并发问题,所以我希望你们提出的那些缓存服务有相同的东西?
此外,我有几个超时每桌(增加百叶窗,秒数球员必须采取行动......)。假设一个用户刚刚折叠一只手,他完成了与状态对象的交互,所以我更新了缓存。当那个状态对象(定时器所属的对象)被缓存时,我的定时器将停止响应...
我知道我在这里没有很好地解释我自己,但我希望你们看到我的观点。
恐怕这个问题太广泛了。如果您查看任何教程,您很快就会知道Azure表不仅可以存储字符串,还可以存储对象。但是,我不认为Azure Tables是最适合您的目的的持久性。您可能想了解有关Redis(可在Azure中获得)的短期内存持久性。 – trailmax 2014-09-28 21:20:16
在您当前的设计中,内存中的所有内容如果AppPool重置或您执行新的部署,会发生什么情况?一切都失去了? – Craig 2014-09-28 23:24:55
@Craig是的这一切都失去了:/ – 2014-09-28 23:36:59