[英]Static list<User> VS DataBase for Online Users in Asp.Net?
我正在構建ASP.Net MVC應用程序“kinda Game”,它與在線用戶打交道很多 。
我讓Ajax請求每個"10s"
被"10s"
一些Action
,以便在用戶保持站點打開時保持用戶在線。 此Action
為此User
更新 LastActivityDate
- ((在靜態列表和數據庫中))。
所以問題是:
"10s"
保持管理此列表以啟動離線用戶更好。 OnlineUsers
時從DataBase加載在線用戶。 注意:我正在使用此SO問題中的技術來定期執行一些任務,例如重新管理OnlineUsers靜態列表。
首先,您不會使用List<User>
,而是使用用戶的id作為鍵來使用Dictionary<int,User>
,這樣您就可以立即找到要更新的用戶。 其次,我認為這可能是兩者的混合。 保留當前用戶的緩存副本,定期從數據庫刷新,並將數據(如果需要,異步)保存到數據庫。 如果您發現在代碼中的各個位置執行此類操作,您可能需要考慮封裝此行為的用戶的自定義持久性類。
如果您打算擁有大量用戶,並且需要經常從數據庫中提取數據,那么最好將用戶列表存儲在Cache
。 顯然這將存儲在服務器的內存中,因此您不希望存儲大量對象,但如果它只是一個簡單的在線用戶列表,那么它應該不是問題。
static的范圍始終是在操作系統中運行的進程的范圍。 因此在桌面應用程序中使用靜態是有意義的。 但是,我發現對服務器端應用程序使用靜態有點任意,因為您無法控制進程。 這是執行此操作的Web服務器。 如果流程意外結束怎么辦? 或者,如果有許多流程為您的應用程序提供服務呢?
因此,數據庫的使用是不可避免的。 您仍然可以將靜態范圍作為臨時緩存,但不能依賴它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.