0

我正在设计一个应该在冗余环境(主和备份)中工作的 winform 应用程序。

两个应用程序都必须 7/7 24/24 运行,它们在后端连接到 ODATA 服务以获取对象列表。

我想要实现的是锁定要处理的对象条目,然后只有一个应用程序(第一个获取发送命令的命令)处理它并继续该过程。

这是我猜要做的。

设计方法 AcquireLock 为要处理的对象提供以下值之一: AcquireLock_Attempt = 在 AcquireLock 方法的第一行代码中设置。AcquireLock_ACK = 如果对象未被并发应用程序锁定。AcquireLock_NAK = 对象已被锁定或发生错误。

如果您已经面临类似的情况,请随时与我分享您的经验。

注意:1-我的服务配置为每次调用。2-获取锁和设置新状态之间的处理(Cmd_Send_OK,Failed_Transaction,..)可以在毫秒到秒的范围内)。

4

2 回答 2

0

您的问题对我来说不是很清楚,但是对于从列表中锁定单个对象,我建议在关键部分事务内/期间使用 sql server objects 表行锁定(甚至读取):它的进程间并允许您处理大型对象列表。请参阅此处的讨论

于 2013-10-03T10:43:56.347 回答
0

您的 WCF 服务可以用

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
于 2013-10-03T10:45:39.087 回答