- .net/
- .net 多用户web应用程序gridview中的并发控制
.net 多用户web应用程序gridview中的并发控制
.net 多用户web应用程序gridview中的并发控制,.net,multithreading,gridview,consistency,.net,Multithreading,Gridview,Consistency,伙计们,我有个大问题
我正在运行一个backoffice应用程序,想象一下,我有一个包含gridview的表单
100个用户进入该页面
100个用户将表单页面视为数据库提供的数据
100个用户编辑一些字段
在本例中,如何控制最终数据和一致性
在规划和实施技术解决方案(即代码)之前,您需要设计总体解决方案
也就是说,你把100张纸交给100个不同的人,每个人都有一张网络表格的拷贝。那100个人在纸上乱写笔记,然后按随机顺序交给你
在这种情况下,您如何处理一致性?当你能回答这个问题时,你就能实现它
伙计们,我有个大问题
我正在运行一个backoffice应用程序,想象一下,我有一个包含gridview的表单
100个用户进入该页面
100个用户将表单页面视为数据库提供的数据
100个用户编辑一些字段
在本例中,如何控制最终数据和一致性
在规划和实施技术解决方案(即代码)之前,您需要设计总体解决方案
也就是说,你把100张纸交给100个不同的人,每个人都有一张网络表格的拷贝。那100个人在纸上乱写笔记,然后按随机顺序交给你
在这种情况下,您如何处理一致性?当你能回答这个问题时,你就能实现它
如果不了解该表单中的数据,实际上就不可能向您提供具体建议。在规划和实施技术解决方案(即代码)之前,您需要设计总体解决方案
也就是说,你把100张纸交给100个不同的人,每个人都有一张网络表格的拷贝。那100个人在纸上乱写笔记,然后按随机顺序交给你
在这种情况下,您如何处理一致性?当你能回答这个问题时,你就能实现它
如果不了解更多关于该表单中数据的信息,实际上就不可能给你具体的建议。取决于你真正想要什么。你有什么要求吗?你在寻求建议吗
一种可能的解决方案
如果您有一个在编辑完成时调用的显式保存操作
用户导航到第页
用户修改表格
用户“保存”
页面从数据存储中检索当前值(保存时)
页面将当前值与修改后的值进行比较
任何冲突都会突出显示,并请求用户“解决”冲突
转到步骤3。直到没有检测到冲突为止
另一种可能的解决方案
如果你想避免第三步。到步骤7。循环,您始终可以结束步骤4。到6。在事务中,表示在解决当前保存之前,每隔一次尝试保存块。这相当繁重,需要更多的工作,可能会有效地降低总体并发性
另一种可能的解决方案
另一个可能的解决方案是使过程更少离散,更连续。提供实时数据源
创建一个WindowsService/WCF服务,用于推送或允许轮询表数据
页面轮询数据或从远程服务异步接收数据
页面使用收到的数据修改用户的页面内容
不冲突的新值将临时以一种颜色高亮显示(表示无冲突的更改),如浅绿色
不存在冲突的新值将以红色永久亮显
如果您有一个保存过程,则在解析之前不能保存红色值
最后一个(建议的)可能的解决方案
如果没有明确的保存操作
用户单击单元格(有效地请求编辑单元格)
页面与Windows\WCF服务通信,请求对该单元格进行“锁定”
如果没有其他用户请求对该特定单元格进行“锁定”,则将该单元格锁定给该用户并返回true。如果另一个用户请求锁定该特定单元格,则尊重当前锁定并返回false
若远程服务返回false,那个么用例结束,并且不能修改单元格。如果远程服务返回true,则用户修改内容,当内容离开单元格或重新加载页面或其他内容时,远程服务将释放锁
结论
好吧,挥手一点,但脂肪足够嚼了。想一想,有很多可能的解决办法。取决于你真正想要什么。你有什么要求吗?你在寻求建议吗
一种可能的解决方案
如果您有一个在编辑完成时调用的显式保存操作
用户导航到第页
用户修改表格
用户“保存”
页面从数据存储中检索当前值(保存时)
页面将当前值与修改后的值进行比较
任何冲突都会突出显示,并请求用户“解决”冲突
转到步骤3。直到没有检测到冲突为止
另一种可能的解决方案
如果你想避免第三步。到步骤7。循环,您始终可以结束步骤4。到6。在事务中,表示在解决当前保存之前,每隔一次尝试保存块。这相当繁重,需要更多的工作,可能会有效地降低总体并发性
另一种可能的解决方案
另一个可能的解决方案是使过程更少离散,更连续。提供实时数据源
创建一个WindowsService/WCF服务,用于推送或允许轮询表数据
页面轮询数据或从远程服务异步接收数据
页面使用收到的数据修改用户的页面内容
不冲突的新值将临时以一种颜色高亮显示(表示无冲突的更改),如浅绿色
不存在冲突的新值将以红色永久亮显
如果您有一个保存过程,则在解析之前不能保存红色值
最后一个(建议的)可能的解决方案
如果没有明确的保存操作
用户单击单元格(有效地请求编辑单元格)
页面与Windows\WCF服务请求进行通信