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