我有一个关于如何最好地检查服务是否仍在运行的问题。
首先澄清一下。我拥有的服务是一个 C# 应用程序,它既可以从命令行运行,也可以作为 Windows 服务运行。该服务的功能是检查对远程第 3 方数据源的更改,并在将这些更改添加到我们自己的本地数据存储之前处理这些更改。
我希望能够确定服务何时因任何原因停止运行,并在这种情况发生时尽可能自动地通知某人。无论服务是作为 Windows 服务运行还是从命令行运行,这都需要发生。
我已经考虑过监视本地数据存储的更改并在一段时间内没有发生更改时发出通知,但是事实证明这有点太不一致了,因为对第 3 方数据源的更改频率是可变的,这意味着长时间没有变化并不一定表明服务已经停止工作,可能只是没有变化!
关于如何监控这个有什么建议吗?有人有过类似的工作经验吗?
谢谢,米
编辑 1 只是为了大致了解服务的工作原理:当新的/更新的数据可用时,第 3 方服务会引发事件,因此我的服务会等待这些事件被引发并处理引发事件中返回的数据。因此,这就是为什么很难确定何时“没有变化”而不是“服务崩溃”。
编辑 2 我想我需要更清楚一点:此监控的主要原因是通知用户有关服务或与第 3 方服务连接的潜在问题。该服务本身是单线程的,并且具有适当的异常处理和日志记录。该服务可能会在某处的服务器上运行,因此如果该服务出现任何问题,并且无论出于何种原因该服务需要通知某人,它都会停止更新我们的本地数据存储。