delphi – 并发控制
你好
我想知道在3层应用程序中实现并发控制的最佳方法吗? 可能首先想到的是: >客户端想要编辑数据集中的记录. 根据这种情况,锁应该引用锁定的记录和使用该记录的客户端. 我将使用Delphi和datasnap.也许这是一个新手问题,但我不得不问! 解决方法
我正在建立在jachguate的
Optimistic Concurrency Control答案上,以回答评论中提出的问题.
我更喜欢在任何地方使用OCC,因为实现更容易.我将讨论使用object persistence framework的三层应用程序.我的推荐方案有三个级别: >行或对象级别控件,其中每个对象上存储唯一的版本ID.如果您尝试更新对象,则会自动更改版本ID.如果您的版本ID与已存在的版本ID不匹配,则更新失败. 这样做的好处是大多数时候都采用低成本的OCC路径.对于发生很多但争用率低的事情而言,好处是显着的.想想仓库中的产品跟踪 – 产品一直在移动,但很少同时移动相同的物品,并且当它们解决时很容易(剩余数量=原始数量减去我的移除和移除).对于(例如)产品重新定位的复杂情况,在产品运输过程中锁定产品可能是有意义的(因为这反映了物理情况). 当您必须回退到锁定时,能够通知两个用户并拥有通信通道通常很有用.至少在可用时通知想要锁的用户,最好允许他们向锁持有人发送消息,甚至允许他们强制锁定.然后通知失败者“Jo Smith已经锁定你,你失去了你的变化”.让办公室政治排序那个:) 我通常会通过用户投诉而不是错误报告来推动后备流程.如果用户抱怨他们在特定流程中经常丢失编辑内容,请进行更改.如果用户抱怨记录过于频繁地被锁定,则必须重构对象映射以增加锁粒度或更改业务流程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |