如何在Windows服务之间进行通信

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

我想在第二个Windows服务中调用一个函数的服务之一。

我该怎么办?

编辑:

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

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

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

请参阅此主题以获取更多想法: C#中的IPC机制 – 使用和最佳实践

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

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

服务是否在同一个盒子上? 你有.NET 4吗? 强烈建议使用尽可能快的模式, 内存映射文件 。

如果它们位于同一个盒子上,但您没有.NET 4,或者处于同质的Microsoft Windows网络中,则命名管道可以正常工作。 更重要的是,我在命名管道上使用WCF 。