0

我正在尋找一種在MVC中製作模型的最佳實踐。
我正在與一個併發用戶套接字服務器。
據我所知,MVC中的一個模型包含了業務邏輯,以便從數據訪問或db SAO獲得模型。MVC中的模型管理

當其他人更改了數據庫中的屬性時,如何更新此模型對象?

我能想到的第一個解決方案是始終通過從數據庫訪問模型來獲取模型的屬性。
第二個是製作模型庫並修改引用。

任何建議?

+3

您的數據庫是單一事實。當你需要數據時,從數據庫中獲取數據。這就是它的目的。 –

+0

@JBNizet所以在模型中將沒有結構,但從數據庫獲取方法? –

+0

任何建議,這是一個重型數據讀取實時遊戲寫如何避免這種情況? –

回答

0

如果你只有一個服務器,只有一個進程,你可以緩存你的模型(靜態變量或類似),你將只在內存中有一個鏡像數據庫的模型。但是這會縮小比例(或者更好的是不會縮放)。因此,根據您可以容忍的延遲時間,可以有幾個服務器和進程擁有自己的緩存,並定期從數據庫進行更新。這當然意味着數據損壞。另一種方法是,如果一臺服務器更改了一個實體,它就會通過套接字通知所有其他服務器,從而使其緩存中的實體無效。中途是所有服務器都緩存在內存中,但每次請求一個對象時,只有時間戳(或版本)從數據庫中提取出來,以決定緩存是否是最新的。

+0

感謝您的想法:) –