Rx应该在哪里使用?

Ziv*_*Ziv 7 c# system.reactive actor

我正在考虑将Rx引入我的工作场所,但我越了解它越多,我认为它并没有真正给你带来优势.

我们有很多服务器应用程序在一端获取输入数据并在另一端输出它.这对于actor模型和"无限"线程可伸缩性来说是完美的,直到现在我已经使用ConcurrentQueues来实现消息传递,我认为Rx可能是一个更好的功能性替代方案,可以使并发性更加隐含,这有助于我移动一些从命令性代码到可观察量声明的数据流决策.

但阅读它并尝试它我没有看到使用ConcurrentQueues的常规旧线程进行消息传递的优势.Rx给我的优势是什么?人们总是说尽管.NET 4.5使Rx过时(尽管是异步和数据流),但它仍然适合处理事件流.什么情况下呈现事件流以及如何识别它们?

Ale*_*ill 5

如果需要并行化某些任务,请使用TPL.

如果需要执行异步操作,请使用Task&async/await.

如果您需要接收,过滤和组合事件流,请使用Rx.请注意,Rx 不一定是异步的 - 它只是一个处理事件流的模型,就像LINQ是处理集合的模型一样.

您的用例听起来像第一个选项.