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

pra*_*ash 51 .net c# ipc

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

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

aku*_*aku 30

最近微软在IPC中的东西是Windows Communication Foundation.实际上在下层没有什么新东西(tcp,upd,命名管道等)但是WCF大大简化了IPC的开发.

有用的资源:

当然还有WCF上的MSDN

  • 嘿,第一个链接中的视频已经死了! (5认同)

Del*_*ted 12

除了显而易见的(WCF)之外,还有一个针对C#/ CLR的ZeroMQ绑定,这非常好:

http://www.zeromq.org/bindings:clr

面向消息的IPC,发布/订阅以及各种其他策略的代码和配置比WCF少得多.

如果您需要低延迟通信,它至少比其他任何内容快一个数量级,并且具有更少的延迟.

尊重信号量,锁,互斥体等.如果通过共享进行通信而不是通过共享进行通信,那么整个负载将比传统范例更轻松.

  • **"通过沟通而不是通过共享进行交流共享"**这应该是每天都在进行并发编程的人. (4认同)
  • 这是什么意思? (2认同)

Cod*_*ous 10

我倾向于使用命名管道或Unix套接字(取决于我是否针对MS.NET或Mono - 我有一个抽象它的类)因为它易于使用,可移植,并且允许我轻松地与非托管代码进行互操作.也就是说,如果您只处理托管代码,请使用WCF或远程处理 - 后者如果您需要Mono支持,因为他们的WCF支持还没有.

  • 虽然这可能是在2008年9月(当这个评论发表时)的情况,但它是2011年和Mono上的WCF现在相当成熟.请参阅[Mono WCF开发页面](http://www.mono-project.com/WCF)并自行判断. (3认同)

Dem*_*mir 6

如果您需要在机器域上使用而不是通过网络进行通信,我建议使用内存映射文件.请参阅以下链接.

http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html