可以跨进程或机器边界使用Reactive Extensions(Rx)吗?

the*_*onk 10 .net c# system.reactive

依旧记得在很久以前就看到了一些关于此的讨论,但此后一直没有听到任何消息.所以基本上你能订阅远程机器上的IObservable吗?

Ana*_*tts 7

您可以使用IObservable.Remotable通过.NET Remoting直接从其他计算机使用observable.


the*_*onk 5

在第 9 频道上发现了这个很酷的视频,其中有一个使用IObservable.Remotable的示例,正​​如 Paul 指出的:

http://channel9.msdn.com/posts/J.Van.Gogh/Whats- Different-about-the-3-versions-of-Rx-Part-3-NET-35-SP1/

非常有趣的东西,现在要花点时间玩一下!:-D


Con*_*ngo 5

另一种可能的解决方案是使用命名管道。

有一个很棒的NuGet包NamedPipeWrapper,请参阅GitHub上源代码。对此可以编写一个薄的RX包装器,即订阅该RX流,并使用此库将消息推送到其他.NET侦听进程,将很容易。

由于此解决方案使用命名管道,因此它将是一个真正的发布/订阅解决方案,它将在不同的过程中支持多个订户。

更新资料

在命名管道库上编写简单的RX桥代码确实非常容易。使用RX Subject并将RX桥代码插入事件处理程序。两端的附加代码不超过4行。如果有人感兴趣,我可以发布代码。

更新资料

有关命名管道的更多信息,请参见.NET 3.5添加了命名管道支持使用.NET 3.5命名管道IO的进程间通信。前面提到的NuGet软件包NamedPipeWrapper是.NET 3.5引入的对命名管道的内置支持的更好版本。