1

我有一个要求,我需要同时运行自定义窗口服务代码的两个实例,但只有一个应该做这项工作,直到另一个失败或死亡。

我试图想出干净简单的设计来做到这一点。

单程:

  1. 创建临时表
  2. 并让这两个服务通过表格相互交谈
  3. 如果正在运行的人出现故障,则可能使用桌子上最后修改的日期时间
  4. 然后另一个将开始

但这是非常手动的。我正在使用 c# 4.0。

有没有更好的方法来实现这一目标?

我看到有类似EventWaitHandle的东西,但不确定使用它是否简单。

谢谢~m

4

2 回答 2

0
  1. 使用通用数据库实现一种锁/互斥锁(如您所述)
  2. 如果不同服务器上的实例彼此认识(配置?),他们可以互相聊天并决定谁是老板。
  3. 如果实例彼此不认识,请尝试使用 UDP 广播向彼此宣布自己,然后决定谁是老板。

如果您能够做到 #1 并通过 Web 服务对其进行通用公开,那么该解决方案也可以用于其他应用程序。我自己使用这样的解决方案。

于 2014-07-07T06:57:52.150 回答
-1

考虑在两个服务上公开一个 ping api 端点(简单的 Rest API ping 方法),以便每个服务都可以监控另一个服务状态。

于 2012-11-21T04:02:01.970 回答