c# – 防止在编辑时重复编辑/锁定DB记录 – 单个后端服务器
情况:共享单个后端服务器(WCF RIA或其他Web服务)的多个前端(例如Silverlight,ASP).
我正在寻找一个标准,以防止多人编辑同一个表格.我知道这不是一个容易的主题,但要求是要求. 以前我使用DB上次修改日期来对提交的数据进行处理,如果数据在加载后被修改,则会发出警告或错误.初始系统只是在没有任何警告的情况下覆盖数据.问题是我有一个新的要求来防止这两种情况.会有很多UI,因此锁定系统可能是一个挑战,并且显然无法保证客户端不会在编辑过程中关闭窗口/浏览器. 我将不胜感激任何帮助. 解决方法
如果我是对的,那么你所说的似乎是一种退房/编辑/登记方式的工作流程.您希望当一个用户正在编辑记录时,其他用户甚至无法开始编辑同一记录.
这是一种悲观的并发形式.许多Web和数据访问框架都支持(相关的)乐观并发 – 也就是说,当您尝试保存时,他们会告诉您其他人已经更改了记录.乐观没有锁定的概念,确实 – 它确保在您获取的时间和保存时间之间没有其他用户保存. 您想要的并不是Web上的简单要求,因为当用户中止编辑时(例如,通过关闭浏览器),服务器实际上无法强制执行签入.我不知道有任何框架可以解决这个问题. 基本上你需要的是在服务器上保存结账信息.编辑时的用户进程需要请求结帐,服务器将根据他们检出的内容授予/拒绝这个.服务器还必须保存资源被检出的信息.当用户保存服务器时,释放锁定并在请求时允许新的结账.当用户中止编辑时出现问题 – 如果是通过UI,没问题……只需告诉服务器释放锁定即可. 但如果是通过关闭浏览器,关闭机器等,那么你就有了一个孤儿锁.大多数人解决这两种方式之一: 如果您已经拥有一个事务处理持久存储(如数据库),那么签入/签出令牌实际上并不难实现:困难的部分是将其集成到您的用户体验中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |