Questions tagged «reactivex»

5
为什么在.NET Reactive Extensions中不推荐主题?
我目前正在掌握.NET的Reactive Extensions框架,并且正在通过各种发现的资源(主要是http://www.introtorx.com)进行工作。 我们的应用程序涉及许多检测网络帧的硬件接口,这些接口将是我的IObservables,然后,我将拥有各种组件,这些组件将消耗这些帧或对数据执行某种形式的转换并生成一种新型的帧。例如,还有其他组件需要显示第n个帧。我坚信Rx将对我们的应用程序有用,但是我正在为IObserver接口的实现细节而苦苦挣扎。 我正在阅读的大多数(如果不是全部)资源都说我不应该自己实现IObservable接口,而是使用所提供的函数或类之一。从我的研究看来,创建a Subject<IBaseFrame>将满足我的需求,我将拥有一个从硬件接口读取数据然后调用Subject<IBaseFrame>实例的OnNext函数的单线程。然后,不同的IObserver组件将从该主题接收其通知。 我的困惑来自本教程附录中的建议: 避免使用主题类型。Rx实际上是一种功能编程范例。使用主体意味着我们现在正在管理状态,该状态可能会发生变异。很难同时处理变异状态和异步编程。此外,许多操作符(扩展方法)都经过精心编写,以确保维持正确和一致的订阅和序列生存期。介绍主题时,您可以打破这一点。如果您明确使用主题,将来的版本可能还会看到性能显着下降。 我的应用程序对性能至关重要,显然,我将在将Rx模式用于生产代码之前测试其性能。但是,我担心通过使用Subject类所做的事情与Rx框架的精神背道而驰,并且该框架的未来版本将损害性能。 有做我想要的更好的方法吗?不管是否有观察者,硬件轮询线程都将连续运行(否则将备份硬件缓冲区),因此这是一个非常热的序列。然后,我需要将接收到的帧传递给多个观察者。 任何建议将不胜感激。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.