我正在考虑把Rx引入我的工作场所,但我对它了解得越多,我越觉得它并没有真正给你带来优势。
我们有很多服务器应用程序在一端接收输入数据并在另一端输出它。这对于actor模型和"无限"线程可扩展性来说是完美的,到目前为止,我已经使用ConcurrentQueues来实现消息传递,我认为Rx可能是一个更好的功能替代品,可以使并发性更隐式,帮助我将一些数据流决策从命使式代码转移到可观察对象的声明中。
但是阅读它并尝试它,我没有看到比使用常规的旧线程与ConcurrentQueues进行消息传递有多大优势。Rx给我带来了什么好处?人们总是说,尽管。net 4.5淘汰了很多Rx(异步和数据流),但它仍然可以很好地处理事件流。哪些情况会出现事件流?我如何识别它们?
如果需要并行处理某些任务,请使用TPL。
如果需要执行异步操作,则使用Task
&async/await
.
如果您需要接收、过滤和组合事件流,请使用Rx。注意,Rx 不一定是异步的——它只是一个处理事件流的模型,就像LINQ是处理集合的模型一样。
您的用例听起来像是第一个选项。
在SO上有很多类似的问题....
Rx是基于数学的异步操作组合。TPL和"常规旧线程"是非组合的。你必须先看一些重要的例子,才能看出作文在什么地方真正给你带来好处。
看一下这一页的Rx简介(以及它的其余部分),我相信你会开始了解Rx的原因:http://introtorx.com/Content/v1.0.10621.0/01_WhyRx.html WhyRx