【问题标题】:How to communicate between service controller and a service/daemon?如何在服务控制器和服务/守护进程之间进行通信?
【发布时间】:2010-04-20 12:55:41
【问题描述】:

很容易显示 Windows 服务的状态或从 GUI 应用程序控制它(启动/停止),但问题是如何从服务接收/发送通知?比如:服务告诉监控它的用户它需要注意。

请注意,您可以在多用户环境中随时启动多个控制器。

你知道这种交流的例子(开源)吗?

独立于平台的解决方案加分:)

【问题讨论】:

    标签: c++ c windows-services


    【解决方案1】:

    如果监控服务的“用户”是一个人,那么如何写入事件日志,然后让您的企业事件监控系统发送警报。或者,让服务将问题记录到事件日志中,然后发送电子邮件。

    如果服务的“用户”或客户端是一个单独的或多个应用程序,这里有几个想法,没有完全理解您的问题。

    1. 写入文件。让客户端告诉服务要为该特定客户端实例创建文件的文件或某个商定的令牌,然后让服务写入文件。然后客户端可以监控该文件。
    2. 状态 Ping。让客户端在后台线程中定期 ping 服务,以询问服务的运行情况。如果不健康,则客户端可以 ping 服务以获取更多信息。有点像获取 LastMessage。
    3. 打开套接字或端点。找到一种方法来设置从服务返回的通信,以便服务可以调用客户端。这可能由客户端发起,首先告诉服务它在哪里,以便它可以回调。我忘记了具体细节,但是 WCF 应该能够为您开箱即用地处理这个问题。如果你想要更通用的东西,你可能需要自己动手。
    希望这些想法有所帮助。

    【讨论】:

      【解决方案2】:

      作为一个选项,使用我们的MsgConnect(免费提供源代码)在服务和控制器之间发送消息(跨平台)。服务和控制器之间的通信可以在本地(通过 MMF 或套接字传输)和远程(通过套接字传输)进行。

      【讨论】:

      • “适用的开源” ... 表示 MsgConnect 是一个商业产品。
      • 有一个适用于 Unix/Linux 平台的 GPL 版本。
      猜你喜欢
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多