我可以看到RX适用于Android和UI事件处理。我正在努力查看RX在后端提供的好处。
RX Java是为后端处理而设计的,还是这个概念被采用了太多?
最佳答案
实际上,RxJava最初是为解决服务器端问题而实现的。 react 性扩展源于.NET世界,并由Netflix移植到Java的后端。在被Android采纳之前,RxJava成为服务器端Java编程中的一员。
那时,异步和非阻塞处理被证明可以大大提高服务器性能。一个人可以使用回调来实现这一点,但是回调的组成并不理想,并导致回调 hell 。具有功能调用链接样式的RxJava提供了一个(好的)解决方案,并开始被采用。
然后,它传播到Android以处理网络调用或UI事件。当我在Android上使用和享受它时,我总是发现RxJava在Android上比在服务器上要少。由于总体设计在概念上与其他服务器技术恕我直言更接近,即使我知道从.NET世界一开始就在客户端使用了响应式扩展。而且还因为RxJava在Android中的使用存在缺陷。如果您不跟踪订阅,则很容易泄漏Context
。而且,您几乎必须在各处添加.observeOn(AndroidSchedulers.mainThread())
,以免您不时忘记并导致崩溃。我敢打赌,这是带领Android团队对Livedata上的Architecture components采取Observer模式的原因。
除了解决回调 hell ,RxJava还为开发人员提供了:
总之,RxJava非常适合后端处理,甚至比Android IMHO更适合。您可以找到更多有关Netflix为什么在Java中实现响应式(Reactive)扩展以及后端here的好处的信息。
说到服务器端工程师是否需要它,我会说它不是必需的,但是知道它会大大增强您的工具箱。如今,趋势是越来越异步,越来越多的中间件,库和框架仅提供异步API。 Couchbase Java数据库API例如基于RxJava。加上响应式扩展不仅是Java,您还可以在大多数语言中利用这些知识。
关于rx-java - 服务器端工程师需要RX Java吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49226946/