8

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

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

但是阅读它并尝试它,我认为与使用常规旧线程和 ConcurrentQueues 进行消息传递相比没有太大优势。Rx 给我带来了哪些优势?人们总是说,尽管 .NET 4.5 使很多 Rx 过时(尽管是异步和 Dataflow),但它仍然可以很好地处理事件流。哪些情况会出现事件流,我如何识别它们?

4

2 回答 2

5

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

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

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

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

于 2013-04-10T14:25:12.023 回答
1

SO上有很多类似的问题......

Rx 是关于异步操作的基于数学的组合。TPL 和“常规旧线程”是非组合的。您必须先查看重要的示例,然后才能看到该组合真正使您受益的地方。

看看这个介绍 Rx 的页面(以及它的其余部分),我相信你会开始了解 Rx 的原因:http: //introtorx.com/Content/v1.0.10621.0/01_WhyRx .html#WhyRx

于 2013-04-10T14:37:19.173 回答