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

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

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

prakash asked 2020-01-23T14:11:27Z
6个解决方案
30 votes

Microsoft在IPC中最新的工作是Windows Communication Foundation。 实际上,底层没有任何新内容(tcp,upd,命名管道等),但是WCF大大简化了IPC的开发。

有用的资源:

  • 在Dobb博士的门户上与WCF进行进程间通信
  • .NET Framework 3.5中的WCF通信选项

当然还有WCF上的MSDN

aku answered 2020-01-23T14:18:42Z
12 votes

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

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

与WCF相比,以更少的代码和配置执行面向消息的IPC,发布/订阅和其他各种策略。

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

关于信号量,锁,互斥量等。如果您通过交流进行共享而不是通过共享进行交流,则与传统范例相比,您的整体负担将更少。

Deleted answered 2020-01-23T14:19:20Z
10 votes

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

Cody Brocious answered 2020-01-23T14:19:41Z
6 votes

如果您需要在不通过网络进行通信的计算机域上使用,我建议使用“内存映射文件”。 请参阅以下链接。

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

Demir answered 2020-01-23T14:20:06Z
3 votes

还有.NET Remoting,我发现它很酷,但是我想他们现在已经有了WCF,现在已经过时了。

ibz answered 2020-01-23T14:20:27Z
3 votes

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

Kent Boogaart answered 2020-01-23T14:20:48Z
translate from https://stackoverflow.com:/questions/56121/ipc-mechanisms-in-c-sharp-usage-and-best-practices