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