我有一个我不确定的查询。 我正在为客户开发MVC Web App,应用程序管理存储在SQL中的XML文档中的内容。
当用户访问XML文档时,会将其复制到用户所做的任何更改的会话中,然后在触发保存更改事件时正确提交回DB。
客户端已请求存在锁定,以防止其他用户访问/修改XML内容(如果其他用户已在访问它)。
首先,我甚至不确定如何实现此类功能,或者您将如何决定会话是否处于活动状态,或者是否应该应用保存超时(但最终会让需要很长时间才能生成的用户感到厌烦变化),但不止于此,我个人认为,鉴于我们正在处理的极端期限,他们的理由并不足以保证它。
他们的理由是他们目前的解决方案"做到了#34;所以应该是新的。 然而,他们目前的解决方案基于一个完全不同的平台,我不认为客户理解他们要求的是什么 - 因为它可能最终成为一个障碍而不是。
其他人对此有什么看法,有没有人处理类似问题?
答案 0 :(得分:0)
也许只是用一个字段锁定记录?
在数据库记录中添加一个布尔标志,例如RecordInUse
。
当用户查看xml内容时,请设置标志。当用户结束对记录的访问时,取消设置标志。
每当有人想要查看xml时,在允许访问之前检查是否设置了标志。
当人们关闭浏览器时,您只需要弄清楚如何处理场景。
答案 1 :(得分:0)
您可以考虑一些使系统更加用户友好的事情
<强> 1。对Xml的写访问 - 使用简单的位字段来锁定文档
<强> 2。只读访问 - 如果文档被锁定,请通知用户并允许他们以只读模式查看文档。
第3。谁正在编辑 - 一个单独的表来保存编辑信息的人(更多信息见6)。
<强> 4。联系当前编辑器 - 发送电子邮件提醒以请求当前编辑器保存并退出。
<强> 5。管理员级别覆盖 - 当前编辑器不可联系,重置锁定布尔值。如有必要,请回滚他的更改(草稿)。
<强> 6。草稿保存和最终保存 - 在3.我们提到了一个单独的表来保存谁正在编辑信息。您可以使用同一个表来保存草稿副本。所以编辑器可以保存并继续。只有最终保存才能覆盖主表中的原始xml。
上述所有情况并非难以实施。例如,谷歌文档有一个非常复杂的基于Web的文档编辑器。我认为你不必那么想,或者做那么复杂的事情。