2016-03-08 56 views
2

我有一个我不确定的查询。 我正在为客户端开发MVC Web应用程序,该应用程序管理存储在SQL中的XML文档中的内容。MVC ASP.Net上的会话锁定 - 防止用户同时访问同一资源

当用户访问XML文档时,它被复制到会话中,在该会话中用户所做的任何更改都会在保存更改事件触发时正确提交回数据库之前完成。

客户端请求存在锁定,以防止其他用户访问/修改XML内容,如果其他用户已经访问它。首先,我甚至不知道如何实现这样的功能,或者如何决定会话是否处于活动状态,或者是否应用保存超时(但最终会让用户花费很长时间进行更改),但更重要的是,鉴于我们正在处理的极端期限,我个人认为他们的理由不够强大,无法保证。

他们的理由是,他们目前的解决方案“做到了”,新的也应该如此。 然而,他们目前的解决方案基于完全不同的平台,我不认为客户理解他们要求的是什么 - 因为它可能最终成为阻碍。

什么是其他人的意见,并有人处理过类似?

回答

0

也许只是用一个位域锁定记录?

将一个布尔标志添加到数据库记录,例如RecordInUse

当用户查看xml内容时,设置标志。当用户结束访问记录时,请取消设置标志。

每当有人想要查看xml,请在允许访问之前检查该标志是否已设置。

你只需要弄清楚在人们关闭浏览器时如何处理场景。

+0

是的,这样的旗帜是有道理的。但是,这不是单身模式的含义。 – Jacob

+0

@Jacob耶对不起,将删除参考。 – user1666620

0

你能想到的一些事情对XML作系统更人性化

1.写访问 - 使用简单的位字段来锁定文档

2.只读访问 - 如果文档被锁定,请通知用户并允许他们以只读模式查看文档。

3.谁是编辑 - 一个单独的表来保存谁在编辑信息(6更多信息)

4.联系当前编辑 - 发送电子邮件警报,要求当前编辑器中保存并退出。

5.管理员级别覆盖 - 当前编辑器不可联系,重置锁定布尔值。如有必要,还原他的更改(草稿)。

6.草稿保存和最终保存 - 在3.我们提到了一个单独的表来保存谁在编辑信息。您可以使用相同的表格来保存草稿副本。所以编辑可以保存并继续。只有最后的保存应该覆盖主表中的原始xml。

以上所有情况都不难实现。举个例子,谷歌文档有一个非常复杂的基于Web的文档编辑器。我认为你不会想那么远,或者做任何复杂的事情。

相关问题