繁体   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