有没有人知道在同一台机器上的应用程序之间的本地消息传递的快速总线?

时间:2011-11-29 12:19:38

标签: .net messaging bus

我正在寻找可以在同一台机器上运行的.NET应用程序使用的pub / sub机制(不同应用程序域和进程的混合)。我真的宁愿避免运行单独的服务或任何需要太多配置的东西。显然我也希望将内存和CPU负载保持在最低限度。

具体来说,我想向同一主机上的订阅者广播大量的小消息。所以我想要一个总线(例如MSMQ或NServiceBus) - 但我不想要全网络支持的开销(它只需要本地命名管道)或企业总线的成本和复杂性。

5 个答案:

答案 0 :(得分:4)

命名管道是进行本地流程交互的最快方式。

参考:
NamedPipeServerStream
NamedPipeClientStream
Choosing a transport

重要读物:
Don't get in a deadlock

答案 1 :(得分:1)

如果您只想将一个信号从一个进程发送到另一个进程,那么部分工作就完成了,那么最轻量级的解决方案可能是mutex

答案 2 :(得分:1)

我猜想配置正确,MSMQ + NServiceBus将能够在一台机器上实现您想要的吞吐量。有一个[Express]属性会导致您的消息无法写入磁盘。如果性能足够,那么使用像这样的高级框架比使用自己的框架要好得多。

答案 3 :(得分:0)

Mailslots
Memory Mapped files
Named Pipes
LPC

全部在Windows上

答案 4 :(得分:0)

这不是我的最终解决方案,但提出的一个解决方案是0MQ,它提供了可靠的发布/订阅模式,对配置和基础架构的要求相对较低。缺点是它的级别相对较低(.NET API是本机C代码的包装) - 所以我需要实现所有的序列化等等。

当我有时间进行实验并得出结论时,我会回复。