我有两个Windows服务,第一个是用C#编写的,第二个是用非托管的C++编写的。我想知道如何进行双向进程间通信。
套接字可能是您的最佳选择。
使用套接字,您不一定需要将两个程序绑定到同一台计算机上。
此外,这很可能是最可移植的选项(Windows 甚至为套接字提供了 select() 函数)。
套接字和命名管道是托管和非托管环境中得到良好支持的两个选项。
有许多方法可以实现这一点,但我认为最好的方法是使用WCF和COM+。如果您在COM+中托管服务,则可以通过WCF在.NET服务中访问它,并通过COM接口在非托管代码中访问它。
您可能想查看以下MSDN文档部分以开始操作:
将WCF服务与COM+集成: http://msdn.microsoft.com/en-us/library/bb735856.aspx
与COM+应用程序集成概述: http://msdn.microsoft.com/en-us/library/ms734723.aspx
我认为Redis是任何类型的进程间通信的最佳解决方案。
使用DCOM/RPC或命名管道 - 其他任何方式都不安全、不专业或两者兼而有之。