簡體   English   中英

靜態列表<User> VS Asp.Net中的在線用戶數據庫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM