2个Windows服务C#之间的管道

Posted

技术标签:

【中文标题】2个Windows服务C#之间的管道【英文标题】:Pipe between 2 Windows Services C# 【发布时间】:2013-11-06 08:03:00 【问题描述】:

有没有办法通过管道(匿名或命名)构建和连接两个 Windows 服务?第一个服务等待自定义命令,当用户通过 Windows 窗体应用程序输入该命令时,第一个服务通过管道将该命令发送到第二个服务。第二个服务等待命令,当收到命令时,它会使用该命令创建一个文件。我的问题是在 Windows 服务应用程序而不是 WCF 服务应用程序之间创建管道。

我需要使用 C# Windows 服务应用程序来实现这一点,而不是 WCF 服务应用程序!

【问题讨论】:

为什么需要两个windows服务?正如 Carrvin 所提到的,您可以在 Windows 服务中托管 WCF 服务(有两种方法),并从客户端应用程序调用第一种方法,它将调用第二种方法来创建文件? 7 年后,您找到解决方案了吗? MS 文档在 C++ 中,我在 C# 中找不到好的教程。只需要一种方法让我的两个 Windows 服务相互通信。有多难?我仍然可以使用 API,但我正在寻找一种 Windows 推荐的本地通信方式。 【参考方案1】:

您的要求是可能的。

这是构建 wcf-services(和 -clients)的基本教程:

http://msdn.microsoft.com/en-us/library/ms734712(v=vs.110).aspx

【讨论】:

教程介绍了在 Windows 服务中托管 WCF 服务库,然后从客户端应用程序调用 WCF。 OP 想要的是两个 Windows 服务之间的相互通信。 本教程还描述了wcf-services的双向通信,OP的问题可以通过创建一个具有客户端和服务器部分的应用程序来解决...... 我的问题是在 Windows 服务应用程序而不是 WCF 服务应用程序之间创建管道。 在两个服务之间进行通信的最简单方法是使用可以托管在 Windows 服务中的 WCF 服务。只需检查一下,您就会在短时间内得到一个简单的解决方案;) 让我看看我是否理解.. 所以,基本上,我创建了两个引用两个 WCF 服务的 Windows 服务,两个 Windows 服务之间的管道将使用它们引用的 WCF 服务创建?

以上是关于2个Windows服务C#之间的管道的主要内容,如果未能解决你的问题,请参考以下文章

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

c#命名管道双向通信

在 Windows 7 中使用 VC++ 和 C# 中的 MemoryMappedFiles 或命名管道进行进程间通信

c# c++通信--命名管道通信

C#多进程-多线程服务和windows调度器

Java中命名管道的并发读/写(在Windows上)