我已经实现了一个Windows服务应用程序,该应用程序将部署到多台计算机上并同时运行以处理中央队列中的任务。我为每个运行的服务实例都有一个日志文件。但我希望能够监视服务的所有实例并定期检索特定于应用程序的信息,例如每个服务正在处理的任务的名称和ID。
我正在考虑在每台机器上添加一个Web服务来公开这些只读信息,并编写另一个应用程序(可能是Web应用程序)来检索网络上的这些信息并很好地显示它们。但这是好方法吗?还有其他想法吗?而且我不想使用任何现成的产品。请提供您的建议。
提前致谢!
[我试着在下面提供我的实施作为答案。如果您有兴趣,请阅读。感谢。]
答案 0 :(得分:1)
如果您的服务有API通过网络检索此信息,那么建立一个检查所有正在运行的服务器状态的客户端将非常容易。
这就是有多少计算集群服务可以运行 - 它们运行,客户端可以调度任务以及查询任务。这里可以使用任何技术,但对于.NET,WCF可能会使这相当容易和健壮。
答案 1 :(得分:0)
可能有点矫枉过正,但请查看System Center Operations Manager。如果您想要将“仪表板”样式信息提供给不仅是您的应用程序,而是跨多台计算机(或跨数据中心)的机器和数据库,SCOM是一个很好的起点。
答案 2 :(得分:0)
我最终发现了一些非常类似于Reed Copsey建议的东西。由于应用程序已经是Windows服务,因此我为要公开的信息定义服务/数据协定,并在同一服务上托管WCF。此解决方案允许我的客户端(调度程序或UI应用程序)从群集中运行的所有服务实例中检索信息。