我正在寻找可以在同一台机器上运行的.NET应用程序使用的pub / sub机制(不同应用程序域和进程的混合)。我真的宁愿避免运行单独的服务或任何需要太多配置的东西。显然我也希望将内存和CPU负载保持在最低限度。
具体来说,我想向同一主机上的订阅者广播大量的小消息。所以我想要一个总线(例如MSMQ或NServiceBus) - 但我不想要全网络支持的开销(它只需要本地命名管道)或企业总线的成本和复杂性。
答案 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代码的包装) - 所以我需要实现所有的序列化等等。
当我有时间进行实验并得出结论时,我会回复。