关于.net:C#中的IPC机制-用法和最佳实践

关于.net:C#中的IPC机制-用法和最佳实践

IPC Mechanisms in C# - Usage and Best Practices

我之前在Win32代码中使用过IPC-关键部分,事件和信号灯。

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


Microsoft最新在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

使用比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,现在它们已经过时了。


推荐阅读