RxJava 教程第一部分:入門之 Why Rx

HomerBelbin 8年前發布 | 18K 次閱讀 RxJava Java開發

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 風格的轉換操作。
    </li>
  • 擴展性(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>

            何時應該使用 Rx?

            Rx 適合組合和消耗一系列的事件(數據)。下面是一些使用 Rx 的場景:

            應當使用 Rx

            • UI 事件響應,例如 鼠標移動、按鈕點擊事件
            • Domain 事件,例如 屬性改變、集合更新、訂單提交、注冊成功 等
            • 基礎架構事件,例如 文件監視、系統事件 等
            • 集成事件,例如從一個消息隊列來的一個廣播;來自于 WebSockets API 的推送事件 等
            • CEP 集成事件,例如 StreamInsight 或者 StreamBase.

            可以使用 Rx

            • Future 的結果或者類似的模式
              這些模式已經工作的很好的,使用 Rx 在這些情況下對開發過程并不會有太多的提升。

            不要使用 Rx

            • 把 iterables 變成 observables, 只是為了在 Rx 庫中使用它們。



            來源:云在千峰

 本文由用戶 HomerBelbin 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!