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

.net 有人知道在同一台机器上的应用程序之间使用快速总线进行本地消息传递吗?,.net,messaging,bus,.net,Messaging,Bus,我正在寻找一种发布/订阅机制,它可以被运行在同一台机器上的.NET应用程序使用(不同应用程序域和进程的混合)。我真的宁愿避免运行单独的服务或任何需要太多配置的东西。显然,我也希望将内存和cpu负载保持在最低限度 具体来说,我希望向同一主机上的订阅者广播大量的小消息。因此,我想要一条总线(例如MSMQ或NServiceBus),但我不想要完全网络支持的开销(它只需要本地命名管道)或企业总线的成本和复杂性。命名管道是进行本地进程交互的最快方法 参考资料: 重要阅读: 如果您只想从一个进程向另一

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


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

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

参考资料:


重要阅读:

如果您只想从一个进程向另一个进程发送一个信号,表示部分工作已经完成,那么最轻量级的解决方案可能是一个


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

这不是我的最终解决方案,但出现的一个解决方案是提供可靠的发布/订阅模式,并且对配置和基础架构的要求相对较低。缺点是它的级别相对较低(NETAPI是本地C代码的包装器),因此我需要实现所有序列化等等


当我有时间做实验并得出结论后,我会再发回来。

你能澄清一下你的要求吗:1。您是否需要持久/持久消息2。您是否需要事务处理(发送和接收)3。你想处理多少条消息?它不需要是持久的(从这个意义上说,它可以全部存储在内存中——如果进程失败,那么它将永远不会收到消息),但它确实需要是事务性的(即,进程应该确信,如果它发布了一条消息,那么所有正在运行的订阅者都应该收到它)哦,但是,WCF并没有提供一个简单的发布/订阅消息实现。这种方法可能是最传统的,但对于桌面部署来说,它是相当重要的。我真的希望有一个更简单的东西,可以通过运行中的应用程序临时设置。你是对的,我没有看到这是一个桌面应用程序。也许在命名管道绑定中使用WCF会对您有所帮助?这至少会隐藏一些混乱,并且完全适合于桌面。您可以尝试为NServiceBus实现0MQ传输,这样您就可以在抛弃MSMQ的同时获得NSB的所有细节。
Mailslots
Memory Mapped files
Named Pipes
LPC