[英]IPC Mechanisms in C# - Usage and Best Practices
不久前我在 Win32 代码中使用过 IPC - 临界区、事件和信号量。
.NET环境中的场景如何? 是否有任何教程解释所有可用选项以及何时使用以及为什么?
微软最近在 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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.