确定某人是否打开了网页

Determining whether or not someone has a webpage open

我目前正在设计一个将使用 MVC4 构建的 Web 应用程序。

系统的要点是有一个显示记录列表的主视图。记录将在生成时添加到网格中。用户可以在 "edit" 类型视图中打开记录。

其中一个要求是,如果一个用户在 "edit" 视图中打开了一条记录,而另一个用户试图打开同一条记录,则第二个用户将收到通知,第一个用户当前正在处理该记录记录。

有人要求我避免使用任何类型的锁定机制。他们只是想知道有人打开了它。

这样的事情可能吗?绞尽脑汁却不知所措

您应该使用 optimistic locking 来实现它(实际上,没有锁定...请参阅 link 以了解有关此方法的更多信息)或 last 来保存记录 .

另一方面,我认为您应该以与实际锁相同的方式实现该通知,但是没有锁定。

当用户 A、B、C、D、N 开始编辑某些记录时,您的系统应该知道这一点并存储一些临时全局状态,其中包含编辑所谓记录的用户的标识符。存储此数据后,每个人都应该实时收到有人开始编辑该记录的通知(f.e。您的视图可能会显示正在编辑该记录的用户的用户名)。

您将如何实时通知所有人?如果您想详细了解如何在实际项目中实施 SignalR,答案是 SignalR, which is an abstraction over WebSockets and other protocols/approaches to real-time Web development. Check this getting started with SignalR 2 文章。