C#中的IPC机制 - 用法和最佳实践

时间:2008-09-11 09:24:23

标签: c# .net ipc

我刚才在win32代码中使用过IPC。 [关键部分,事件&信号量]

.NET环境中的场景如何? 是否有任何教程解释所有可用的选项以及何时使用以及为什么?

6 个答案:

答案 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