0

我目前正在开始一个新的个人项目。我有一个数据库,可以在用户登录我的网页时跟踪他们。它显示他们何时登录和注销。它使用 SQL Server 2008。

我想做的是,每当用户登录时,我网页顶部的滚动条都会提醒我注意这一点。我创建了一个仪表板来跟踪我的许多网站统计数据,我认为这会非常酷。最终没用 - 但它会经常从我这里产生“呵呵”,那为什么不呢?

现在,我从来没有尝试过构建这样的东西(这就是我构建它的原因!)所以我在几种不同的设计方法之间徘徊。似乎我可以使用http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx反复轮询数据库服务器,只需编写一个查询来查找当前登录的用户集并显示对该池的任何添加。如果这是正确的道路,那么我将不胜感激有关如何使用它的更深入的评论。

从高层次的角度来看,与其反复轮询数据库,不如让数据库在发生变化时将消息推送到我的 Web 服务器会更有效。这可能吗?如果是这样,如何?

为了争论,并使这个讨论更加具体,让我们假设我们的 SQL Server 表的结构如下(但可以随意进行任何您认为合适的改进或更改!):

Users {
ID Primary Key
Username(Varchar 100)
Password
}

LogInOrOutLogs {
SessionID Primary Key
UserID (Foreign Key)
TimeLoggedIn (DateTime)
TimeLoggedOut (DateTime)
CurrentlyLoggedIn(Bool)
}

对所有技术、所有数据库结构、所有设计理念开放。疯了!唯一要求:您有一个用户数据库,在他们登录和注销时会更新。尽可能有意义、优雅和简单地在 Web 服务器上显示信息。

非常感谢,期待阅读人们对这个问题的解决方案。

4

1 回答 1

1

你看过 Hibernate 吗?这是 SQL 数据库上的优雅对象层。然后,您可以在数据库上推送触发器以推送事件。当您的数据有事件时,您可以通过长查询将其发送到您的 Web 应用程序(这是一个超时时间非常长的 ajax 查询,在收到事件后重新发送查询)。

一个疯狂的设计还应该使用两种方式的消息传递系统,一种用于将消息传入 DB,另一种用于从 DB 输出。

如果您真的喜欢疯狂的事情,您可以使用嵌入到servicemix - redhatfuse中的 DB4O 数据库(SQL Server 的缓存)进行缓存。由于预先部署了代理(activemq)并融合了它的漂亮结构系统,因此 servicemix 有简单的方法。

于 2013-07-11T08:46:35.527 回答