Windows 服务的 IPC 方法

IPC methods for Windows Service

我目前有一个 Windows 服务和一个针对 .NET 3.5 的单独 GUI 客户端,我正在尝试找到在这两个进程之间进行双向通信的最佳方法。这两个进程将 运行 在同一台 Windows 机器上。

Microsoft Interprocess Communications page 似乎建议在这种特殊情况下使用 RPC、管道或套接字

我认为 Named Pipes 似乎可以满足我的要求,但环顾四周我也遇到过 .NET Remoting 。 .NET Remoting 似乎已集成到 WCF 作为 from .NET 3.0. From what I understand, WCF uses 'named pipes' to communication between processes 所以我猜测 .NET 远程处理和 'named pipes' 以某种方式重叠。

有人可以解决这个问题吗?我想了解我是否应该使用 Named Pipes.NET RemotingWCF

WCF 取代了 .NET Remoting 和旧的(现在是遗留的)ASMX Web 服务。 WCF NetNamedPipe 绑定是双工的(即支持双向通信),并且由于客户端(GUI 应用程序)和 Windows 服务都在同一台机器上,命名管道是理想的。

但是,要使用 WCF,您必须编写 WCF 服务,并使用 Windows 服务来托管它,GUI 应用程序充当客户端。这完全可以做到,网上有很多关于如何在 Windows 服务中托管 WCF 服务的示例。