1

我是这个 Web 应用程序开发的新手,我有任务要做。这可能是某种服务(可能是 WCF,至少这是我的想法),它将负责锁定和解锁 db.xml 中的记录。我正在寻找可以做到这一点的某种最佳实践和/或工具。我所说的工具是指开源解决方案或类似的东西。案例是当用户ie关闭浏览器时该怎么办,或者一个正在编辑记录而另一个也正在编辑记录,在这种情况下我们应该做什么。我希望这是可以理解的我想要完成的。据我所知,锁的问题在于它们是无状态的,所以这是某种问题,但我不知道是哪种问题 :) 提前感谢您的帮助和时间 :)

附言。我试图在 Stack 中搜索这个 ..但我得到的只是 c# 中的 lock 关键字,而在 google 中有灵魂,但不是我想要的。也许我输入了错误的关键字...我不知道

4

2 回答 2

2

我正在寻找某种最佳实践

不要这样做。不要编写显式锁定和解锁数据库中数据的应用程序。绝对有 0(零)个有效场景。

我建议您阅读有关乐观并发控制的内容。

另请阅读Entity Framework Optimistic Concurrency Patterns and Anti-Pattern #3: Mishandled Concurrency

于 2012-12-19T10:56:46.937 回答
0

总的来说,锁定数据库中的记录是一件非常危险的事情——尤其是通过与实际数据操作过程无关的服务。如果其他程序遇到该锁定记录并想要写入它,他们往往不得不处理奇异的同步问题——他们会等待吗?他们是否放弃了他们想要编写的更改?

在大多数数据库引擎中,被锁定的进程只是等待——在不知不觉中,您可能有数十或数百个挂起的数据库任务,都在等待锁定被释放。

正如 Remus Rusanu 所写,您应该阅读乐观并发控制——这是事务性 Web 应用程序的最佳实践。它由 MS Entity Framework 支持(假设您的应用程序是使用 .Net 构建的);代码示例在这里

于 2012-12-19T14:04:53.380 回答