
1、MessagePipe介绍可以用于.NET和Unity上面的高性能的内存/分布式消息传递管道。适用于发布/订阅模式、CQRS的中介模式、Prism中的EventAggregator、IPC(进程间通信)-RPC等。
支持:
依赖注入过滤器管道更好的事件同步/异步带键值的/无键值的单例/Scoped广播/响应(+更多)内存/进程间/分布式MessagePipe 比标准的 C# event更快,是Prism的EventAggregator的78倍。下面是官方给出的测试截图

每次使用publish分配的内存更少
还提供了Roslyn分析器以防止订阅泄露。
本库采用MIT协议
项目名称分别为:MessagePipePublishApp和MessagePipeSubscribeApp,Publish项目用于发布消息,Subscribe项目用于接收消息。项目采用Prism框架进行搭建。通过重载的CreateContainerExtension方法中进行依赖注入。两个项目对MessagePipe功能注入代码如下:Publish项目代码:
var services = new ServiceCollection();services .AddMessagePipe() .AddUdpInterprocess("127.0.0.1", 3215, options => { options.InstanceLifetime = InstanceLifetime.Singleton; } );Subscribe项目代码:
var services = new ServiceCollection();services .AddMessagePipe() .AddUdpInterprocess("127.0.0.1", 3215, options => { options.InstanceLifetime = InstanceLifetime.Singleton; } );2.2 实现代码两个项目通过构造函数注入方式注入IDistributedPublisher接口。
Publish项目,通过一个按钮的命令实现发送消息的功能:实现代码如下:
[RelayCommand] private async Task PublishAsync() { await _distributedPublisher.PublishAsync("abc", $"Message:{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}" ); }按钮点击一次,发送一次消息。Subscribe项目中在窗口的Loaded方法中进行实现对订阅消息的接收,并将消息添加到列表中进行展示。
[RelayCommand]private async Task LoadedAsync(){ await _distributedSubscriber.SubscribeAsync("abc", message => { Application.Current.Dispatcher.InvokeAsync(() => { Messages.Add(message); }); } );}2.3 运行效果


— END —
「扩展阅读」Xamarin.Forms: 无限滚动的ListView(懒加载方式)
[GitHub] 75+的 C# 数据结构和算法实现
谁说.NET不适合搞BD,ML、AI
推荐一个集录屏、截图、音频于一体的软件给大家
10个用于C#.NET开发的基本调试工具
Xamarin.Forms 二维码扫描实践
在Asp.Net Core MVC 开发过程中遇到的问题总结
前端小白在asp.net core mvc中使用ECharts
基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理
[译]如何在C#中调试LINQ查询
C# 语言性能提升方法
使用MQTTnet搭建Mqtt服务器
OxyPlot在WinForm中的应用
「公众号推荐」回复:「rdm」 获取Redis Desktop Manager版的安装包
回复:「redis」 获取5.0.9版的Windows安装包(exe)回复:「ca」 获取 截图、GIF等工具三件套,便携版和安装版全部包括「加号主回复”入群“」即可加入群聊