RxJava 教程第一部分:为何使用RxJava

原文出处:http://blog.chengyunfeng.com/?p=947

为何使用RxJava

用户希望查看实时的数据,他们现在就要看最新的微博;他们的订单立刻就被确认;价格需要现在定下;在线游戏需要及时响应。作为码农,你需要发送并忘记的( fire-and-forget )消息。你不希望发送一个消息然后阻塞等待结果返回。当结果返回的时候,你希望结果推送给你。当处理的结果是一个集合数据的时候,你更希望逐个的接收到每个结果;你不希望等待整个结果集合都完成后一起返回。世界已经进步到推送的情景了;用户期待我们能跟上他们的步伐。码农有工具来推送数据了,推送数据很简单。码农需要工具来响应推送的数据。

欢迎来到 RxJava 系列教程,RxJava 是由大名鼎鼎的 Netflix 公司在开发软件过程中应用 Rx.NET 思想解决实际问题,并最总提炼出来的一套应用于 Java 的 Rx 框架。Rx 是一个优雅解决问题的框架,functional programmer 对该框架比较熟悉。Rx 有如下一些优点:

  • 统一性(Unitive)
    Rx 中的查询是使用和 functional programming 通用的风格实现的,例如前面介绍的 Java 8 中的 Streams 和 Lambda表达式。在 Rx 里面,可以在事件上使用 functional 风格的转换操作。

  • 扩展性(Extensible)
    RxJava 可以自定义操作函数。虽然 Java 的语法现在导致自定义操作函数有点麻烦。RxJava 提供了所有的可扩展性来支持其他运行 Jvm 上语音的支持,比如 kotlin、scale 等。

  • 描述性(Declarative)
    Functional transformations are read in a declarative way.

  • 组合性(Composable)
    Rx 的操作函数可以组合起来形成更加复杂的操作

  • 转换性(Transformative)
    Rx 操作函数可以把一个类型的数据转换为另外一种需要的类型,根据需要还可以过滤、映射、扩展数据流。

何时应该使用 Rx?

Rx 适合组合和消耗一系列的事件(数据)。下面是一些使用 Rx 的场景:

1、应当使用 Rx

  • UI 事件响应,例如 鼠标移动、按钮点击事件
  • Domain 事件,例如 属性改变、集合更新、订单提交、注册成功 等
  • 基础架构事件,例如 文件监视、系统事件 等
  • 集成事件,例如从一个消息队列来的一个广播;来自于 WebSockets - - API 的推送事件 等
  • CEP 集成事件,例如 StreamInsight 或者 StreamBase.

2、可以使用 Rx

  • Future 的结果或者类似的模式
    这些模式已经工作的很好的,使用 Rx 在这些情况下对开发过程并不会有太多的提升。

3、不要使用 Rx

把 iterables 变成 observables, 只是为了在 Rx 库中使用它们。

Read more: http://blog.chengyunfeng.com/?p=947#ixzz4KaNsDUkI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值