繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM