【发布时间】:2010-07-06 13:37:31
【问题描述】:
伙计们,我遇到了一个大问题。
我正在运行一个后台应用程序,想象一下,我有一个包含可编辑网格视图的表单。
- 100 位用户访问该页面
- 100 位用户查看表单页面作为数据库提供的数据
- 100 位用户编辑部分字段
- 本例中如何控制最终数据和一致性?
【问题讨论】:
标签: .net multithreading gridview consistency
伙计们,我遇到了一个大问题。
我正在运行一个后台应用程序,想象一下,我有一个包含可编辑网格视图的表单。
【问题讨论】:
标签: .net multithreading gridview consistency
在您可以计划和实施对此的技术解决方案之前,即。代码,你需要设计整体解决方案。
换句话说,假设您向 100 个不同的人分发了 100 张纸,每个人都附有该 Web 表单的副本。那 100 个人在他们的纸上写下笔记,然后按随机顺序交还给你。
在这种情况下,您如何处理一致性?当你能回答这个问题时,你就可以实现它。
如果不详细了解您在该表格中拥有的数据,实际上不可能给您具体的建议。
【讨论】:
取决于你真正想要什么。你有要求吗?您在寻求建议吗?
一种可能的解决方案
如果您有在编辑完成时调用的显式保存操作,
另一种可能的解决方案
如果您想避免第 3 步到第 7 步的循环,您可以始终将第 4 步到第 6 步包装在一个事务中,这意味着每次尝试保存 blocks 直到当前保存完成解决。这是相当繁重的工作,需要更多的工作,并且可能会有效地降低整体并发性。
另一种可能的解决方案
另一种可能的解决方案是使过程不那么离散而更连续。提供实时数据源。
如果您有保存过程,则在解决之前不会保存任何红色值。
最后(建议的)可能的解决方案
如果您没有明确的保存操作,
如果远程服务返回 false,则用例结束,并且单元格不能被修改。如果远程服务返回 true,则用户修改内容,当他们离开单元格或重新加载页面等时,远程服务会释放锁定。
结论
好吧,有点挥手,但脂肪足以咀嚼。考虑一下,有很多可能的解决方案。
【讨论】: