我有一种情况,在另一台服务器上的 Windows 服务启动之前,不应启动一台服务器上的 Windows 服务。我想做的是设置服务依赖项,但标准"sc <service1> depend= service2"
似乎不适合这一点。
我可以将服务代码包装在 TryUntilSuccesful() 类型的调用中,但我想知道是否有推荐的方法来为同一域中的服务器之间的 Windows 服务设置依赖关系。
我有一种情况,在另一台服务器上的 Windows 服务启动之前,不应启动一台服务器上的 Windows 服务。我想做的是设置服务依赖项,但标准"sc <service1> depend= service2"
似乎不适合这一点。
我可以将服务代码包装在 TryUntilSuccesful() 类型的调用中,但我想知道是否有推荐的方法来为同一域中的服务器之间的 Windows 服务设置依赖关系。
同一台机器上的 Windows 服务之间的依赖关系由服务控制管理器 (SCM) 管理。如果您的服务依赖于不同机器上的服务,则 SCM 不能/不会帮助您。
因此,您必须运行自己的一些代码,以便以某种方式监视远程服务是否正在运行,并且要运行该代码,您必须允许您的服务在有或没有依赖关系的情况下启动。
在不知道服务目的的情况下很难制定详细的解决方案,但原则上您可能需要您的服务具有两种操作模式:一种除了以某种方式监视它所依赖的远程服务是否正在运行之外什么都不做; 另一个是它执行其全部功能并继续监视依赖关系的地方。
最后一点是至关重要的——在任何情况下,您都必须持续监控依赖关系,而不仅仅是在您的服务启动时,因为与单机情况不同,远程计算机上的 SCM 不会阻止远程服务被停止,因为它对您对它的依赖一无所知。