如何分开这两个过程?

时间:2011-06-29 05:19:29

标签: mysql asp.net-mvc wcf web-services concurrency

我有一个asp.net网站,用于在数据库表中存储事件。然后我有一个Windows服务应用程序,读取这些事件并执行适当的操作。目前,两个进程可以同时插入和删除同一个表中的记录。

开发这样一个系统有什么更好的模式,以确保两者不会同时在同一张桌子上工作?

3 个答案:

答案 0 :(得分:1)

我不确定模式,但我会做一个WCF服务,让两者都使用它来访问数据。然后在更改(或读取)表内容的所有方法之间共享一个公共锁定对象。

答案 1 :(得分:0)

对于这种情况,我使用了一种模式,确保数据不能同时更新。

我总是在表格中添加一个特殊列,通常是'timeMampified'类型'timestamp'。添加或插入行时,我总是设置此列。

当我更新记录时,我确保存储过程检查我传入的值与存储在数据库中的值。如果它们不同,则另一个用户或进程已更改此行,并引发并发错误。

这可以适用于调用过程或在您的服务中处理。

答案 2 :(得分:0)

这可能是一个架构问题,而不是其他任何问题。

为什么需要两个删除记录的进程?

对于同一个表中的CRUD数据,通常不需要两个不同的进程。您可以做的一件事是使用服务包装数据库/表,然后让需要使用该数据的所有进程使用该服务。然后,该服务可以处理呼叫的序列化。无论哪种方式,只有一个进程直接与DB一起工作。

此外,听起来像你是一个事件采购类型的架构,这让我想知道为什么你需要首先删除记录......