我刚刚在win32代码中使用过IPC.[关键部分,事件和信号量]
.NET环境中的场景如何?是否有任何教程解释所有可用的选项以及何时使用以及为什么?
最近微软在IPC中的东西是Windows Communication Foundation.实际上在下层没有什么新东西(tcp,upd,命名管道等)但是WCF大大简化了IPC的开发.
有用的资源:
在Dobb博士的门户网站上与WCF进行进程间通信
.NET Framework 3.5中的WCF通信选项
当然还有WCF上的MSDN
除了显而易见的(WCF)之外,还有一个针对C#/ CLR的ZeroMQ绑定,这非常好:
http://www.zeromq.org/bindings:clr
面向消息的IPC,发布/订阅以及各种其他策略的代码和配置比WCF少得多.
如果您需要低延迟通信,它至少比其他任何内容快一个数量级,并且具有更少的延迟.
尊重信号量,锁,互斥体等.如果通过共享进行通信而不是通过共享进行通信,那么整个负载将比传统范例更轻松.
我倾向于使用命名管道或Unix套接字(取决于我是否针对MS.NET或Mono - 我有一个抽象它的类)因为它易于使用,可移植,并且允许我轻松地与非托管代码进行互操作.也就是说,如果您只处理托管代码,请使用WCF或远程处理 - 后者如果您需要Mono支持,因为他们的WCF支持还没有.
如果您需要在机器域上使用而不是通过网络进行通信,我建议使用内存映射文件.请参阅以下链接.
http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html