维护Web的活动用户列表

时间:2010-04-19 19:41:42

标签: design-patterns web-applications active-users

问题陈述 - 想知道特定的网络应用用户是否处于活动状态(即登录并使用网站),并且能够查询活动用户列表或确定用户的活动状态。< / p>

约束 - 不需要精确(即如果用户在特定时间范围内处于活动状态,即使他们已关闭浏览器,也可以说它们处于活动状态)。

我觉得这类问题应该有一个设计模式,但是无法在网上或网上的其他地方找到任何内容。

方法我正在考虑:

  1. 维护在用户执行操作(或某些操作子集)时更新的表。然后将查询在某个时间阈值内执行操作的用户。

  2. 尝试监控会话信息并维护一个列出登录用户的表格,并在一段时间后超时。

  3. 其他一些更标准的做法是什么?

  4. 你会如何解决这个问题(再次,从设计模式的角度来看)?

    谢谢!

2 个答案:

答案 0 :(得分:1)

如果您根据组件或模块而不是表格来考虑它,那么维护它会更加幸运。我看到它的方式,你需要以下接口。

public interface IActiveUsers {
  bool IsUserActive(User u);
}
public interface ITrackActiveUsers {
  void MarkUserAsActive(User u);
}

您可以使用数据库实现这些,但为什么不使用您选择的Web框架的内置缓存?

基本上将用户标记为活动时,使用“LoggedInUser-1234”等密钥将密钥插入缓存,其中1234是用户的一些唯一标识符。然后只需设置任何你想要的超时(5分钟,10等),并将值设置为true。然后,在查询用户是否处于活动状态时,只需检查缓存是否包含该相同密钥的真值。

答案 1 :(得分:0)

我认为#1是解决问题的合适解决方案,我猜也常见。它允许您决定您认为用户“处于活动状态”的HTTP请求(即决定何时以及是否更新“最后活动”表)和/或对活动进行分类(具有更多“最后XXX活动”列并更新每个用户执行不同操作后的那些)。