【问题标题】:Session locking on MVC ASP.Net - Preventing users from accessing the same resource at the same timeMVC ASP.Net 上的会话锁定 - 防止用户同时访问同一资源
【发布时间】:2016-03-08 10:50:12
【问题描述】:

我有一个不确定的问题。 我正在为客户端开发一个 MVC Web 应用程序,该应用程序管理存储在 SQL 中的 XML 文档中的内容。

当用户访问 XML 文档时,它会被复制到用户所做的任何更改的会话中,然后在触发保存更改事件时正确提交回 DB。

如果其他用户已经在访问 XML 内容,客户端已请求锁定以防止其他用户访问/修改 XML 内容。

首先,我什至不确定如何实现这样的功能,或者您将如何确定会话是否处于活动状态,或者是否应该应用保存超时(但最终会惹恼那些需要很长时间进行更改的用户) ,但除此之外,我个人认为,考虑到我们正在处理的极端截止日期,他们拥有它的理由还不够充分。

他们的原因是他们当前的解决方案“做到了”,新的也应该如此。 然而,他们目前的解决方案是基于一个完全不同的平台,我认为客户不明白他们的要求是什么——因为它最终可能会成为一个障碍。

其他人对此有何看法,有没有人处理过类似的事情?

【问题讨论】:

    标签: c# sql asp.net asp.net-mvc session


    【解决方案1】:

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

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

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

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

    您只需要弄清楚当人们关闭浏览器时如何处理这种情况。

    【讨论】:

    • 是的,这样的标志是有道理的。但是,这不是单例模式的含义。
    • @Jacob 是的,对不起,将删除参考。
    【解决方案2】:

    您可以考虑一些事情来使系统更加用户友好

    1.对 Xml 的写入访问权限 - 使用简单的位域锁定文档

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

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

    4.联系当前编辑 - 发送电子邮件提醒请求当前编辑保存并退出。

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

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

    以上所有场景都没有那么难实现。例如,谷歌文档有一个非常复杂的基于网络的文档编辑器。我认为您不必考虑那么远,或者做任何如此复杂的事情。

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2022-09-24
      • 2021-09-05
      相关资源
      最近更新 更多