我现在一直在使用Rx在单个应用程序中创建一个事件总线(想想CQRS / ES),它看起来效果很好。然而,在调查了一堆不同的Event Sourcing框架之后,我还没有看到Rx使用过一次。与基于反射/容器的调度程序相比,它看起来非常合适,但也许有一些我缺少的东西。我宁愿不花一大堆时间在一个有3个月的持续时间的东西上。是否有理由说Rx不适合?
谢谢, 埃里克
答案 0 :(得分:9)
Rx对于事件驱动和反应式编程来说无疑是一个非常棒的框架。事实上,我会说限制自己使用IObservable
接口进行调度实际上比任何更重的东西更好。然后,您自然会使用“消息传递”功能。导向风格,适合规模和不变性。关注点的分离变得很自然。
您将来可能遇到的问题是您的系统是否超出单个应用程序。 Rx在单个应用程序中非常简单,但只要您需要添加基础架构,就需要付出一些努力。你的申请之间。并不是说它不起作用!当您在Subject
和IObservable
个实例的不同来源中使用它时,它确实需要在某些情况下手动完成,而其他情况则需要采购。框架(你有什么想法?)可能有更大范围的外部适配器'。
关于Rx通常以这种方式使用(即在互联网上)。首先,请记住,除了.NET之外还有许多其他平台,Rx不会出现在其中任何平台上。反应式风格可能有不同的名称。
其次,you - are - not - alone。包括某人who likes Rx so much for CQRS they want to do it in Scala and the JVM!
答案 1 :(得分:4)
答案 2 :(得分:1)
如果您想在两个进程之间使用RX,请查看:
所有这些库都在做同样的事情:它们实现了Microsoft的IObservable和IObserver接口。
答案 3 :(得分:0)
如果要在.NET中使用支持Rx的内存总线,则应查看MemBus。
另一种方法是使用ReactiveUI中的MessageBus
。但是因为它没有在专用库中提供,所以你必须安装整个ReactiveUI库,这只在WPF应用程序中有意义,而不是在传统的WinForms项目中。