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

7

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

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

该怎么做?

编辑:

问题在于我有两个正在运行的应用程序(我不需要它们作为服务进程),但我需要这两个应用程序进行通信,这两个应用程序在同一台服务器上。


有关应用程序间通信,请参阅相关帖子 - SliverNinja - MSFT
1
哪种类型的数据?有多少条消息?平均消息大小是多少? - sll
3个回答

5
当然。你可以使用许多IPC机制,例如远程调用、TCP/HTTP监听器等。
这两个服务是否提供了在另一个服务之外也可能有用的功能呢?
请参阅此线程以获取更多想法: C#中的IPC机制-使用和最佳实践 编辑: 正如Davide Piras指出的那样,如果可以使用WCF,则考虑使用它。它将简化生活。 WCF配置文件有时很难处理,但也有一个很好的工具可用:http://msdn.microsoft.com/en-us/library/ms732009.aspx

2
尽可能避免使用远程调用和HTTP,而应优先选择WCF。 - Davide Piras

5

这些服务是否在同一台机器上?您是否拥有.NET 4?强烈建议使用最快的模式,即内存映射文件

如果它们在同一台计算机上,但您没有.NET 4,或者处于同质化的Microsoft Windows网络中,则命名管道可能有效。更重要的是,我会使用WCF命名管道IPC


4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接