RxJava 教程第一部分:入門之 Why Rx
Why Rx
用戶希望查看實時的數據,他們現在就要看最新的微博;他們的訂單立刻就被確認;價格需要現在定下;在線游戲需要及時響應。作為碼農,你需要發送并忘記的( 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 等。 </ul> </li>
- 描述性(Declarative)
-
- Functional transformations are read in a declarative way. </ul> </li>
- 組合性(Composable)
-
- Rx 的操作函數可以組合起來形成更加復雜的操作 </ul> </li>
- 轉換性(Transformative)
-
- Rx 操作函數可以把一個類型的數據轉換為另外一種需要的類型,根據需要還可以過濾、映射、擴展數據流。 </ul> </li> </ul>
- UI 事件響應,例如 鼠標移動、按鈕點擊事件
- Domain 事件,例如 屬性改變、集合更新、訂單提交、注冊成功 等
- 基礎架構事件,例如 文件監視、系統事件 等
- 集成事件,例如從一個消息隊列來的一個廣播;來自于 WebSockets API 的推送事件 等
- CEP 集成事件,例如 StreamInsight 或者 StreamBase.
- Future 的結果或者類似的模式
這些模式已經工作的很好的,使用 Rx 在這些情況下對開發過程并不會有太多的提升。 - 把 iterables 變成 observables, 只是為了在 Rx 庫中使用它們。
何時應該使用 Rx?
Rx 適合組合和消耗一系列的事件(數據)。下面是一些使用 Rx 的場景:
應當使用 Rx
可以使用 Rx
不要使用 Rx
來源:云在千峰
本文由用戶 HomerBelbin 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!