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