【问题标题】:How to communicate between Windows Services如何在 Windows 服务之间进行通信
【发布时间】:2012-02-16 21:51:04
【问题描述】:

我有 2 个使用 C# 创建的 Windows 服务。

我希望其中一个服务调用第二个 Windows 服务中的函数。

我该怎么做?

编辑:

问题是我必须运行的应用程序(我不需要它们而是服务进程也很好)但是我需要这 2 个应用程序进行通信,这 2 个应用程序正在运行同一台服务器,

【问题讨论】:

  • 请参阅related post 了解跨应用通信。
  • 哪种数据?多少条消息?平均邮件大小是多少?

标签: c# wcf service windows-services ipc


【解决方案1】:

当然。您可以使用很多 IPC 机制。远程处理、TCP/HTTP 侦听器等。

这两种服务是否提供了可能在其他服务之外有用的功能?

有关更多想法,请参阅此主题: IPC Mechanisms in C# - Usage and Best Practices

编辑: 正如 Davide Piras 指出的,如果 WCF 可供您使用,那么请考虑使用它。它将简化生活。 WCF 配置文件有时很难使用,但也有一个很好的工具: http://msdn.microsoft.com/en-us/library/ms732009.aspx

【讨论】:

  • 应尽可能避免远程处理和 HTTP 以支持 WCF
【解决方案2】:

服务是否在同一个盒子上?你有 .NET 4 吗?强烈建议使用最快的模式,memory-mapped files

如果它们在同一个盒子上,但您没有 .NET 4,或者在同构的 Microsoft Windows 网络中,named pipes 可以工作。更重要的是,我会使用WCF over a named pipe

【讨论】:

    【解决方案3】:

    我发现所有其他答案都是正确的,但有点过于复杂(WCF 很重要)并且不可扩展(内存和命名管道只能在同一台服务器上工作)。我建议你DotNetMQ消息系统。它易于使用和部署,甚至可以让您在不同服务器上运行的进程之间进行通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      相关资源
      最近更新 更多