55

前段时间我在 Win32 代码中使用过 IPC - 关键部分、事件和信号量。

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

4

6 回答 6

31

Microsoft 在 IPC 中的最新产品是Windows Communication Foundation。实际上底层并没有什么新东西(tcp、upd、命名管道等),但是 WCF 极大地简化了 IPC 开发。

有用的资源:

当然还有WCF 上的 MSDN

于 2008-09-11T09:34:50.150 回答
12

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

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

使用比 WCF 少得多的代码和配置执行面向消息的 IPC、发布/订阅和各种其他策略。

如果您需要低延迟通信,它也至少比其他任何东西都快一个数量级并且延迟更少。

关于信号量、锁、互斥锁等。如果您通过交流而不是通过共享进行交流,那么您将比传统范例更轻松。

于 2011-09-27T16:36:06.430 回答
10

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

于 2008-09-11T10:00:31.023 回答
7

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

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

于 2012-01-03T13:18:42.533 回答
3

还有 .NET Remoting,我觉得它很酷,但我想他们现在已经过时了,因为他们有 WCF。

于 2008-09-11T09:38:24.463 回答
3

听起来您好像对同步技术而不是通信感兴趣。如果是这样,您可能想从这里开始,或者可能是这个更简洁的概述

于 2008-09-11T10:40:28.277 回答