2013-07-10 102 views
12

標題說明了一切。根據你的經驗,這兩個框架之間的關鍵區別是什麼? 當我們應該使用其中一個?ReactiveUI與MvvmCross

預期用途:跨平臺開發(Windows 8,iOS,Android,WindowsRT,Mac)。

回答

7

這兩個框架之間的關鍵區別是什麼?

一個以反應式擴展爲中心,一個是基於更傳統的Mvvm編碼。

但這不是排他性的 - ReactiveUI可以與非反應式代碼一起使用,並且MvvmCross可以與反應式擴展一起使用。

當我們應該使用其中一個?

它們都是偉大的框架(IMO)。

是否使用框架和使用框架的選擇取決於您和您的團隊。

9

但這不是唯一的 - ReactiveUI可以用不反應的代碼中使用

更進一步,你可以使用ReactiveUI與其他MVVM框架,你不需要提交給一個或另一個。 RxUI中的許多方法(如WhenAny)可用於任何對象,並在運行時確定如何最佳地連接到它們。

RxUI絕對是一個自助餐桌(可以隨心所欲!),而不是一頓七道菜:) MvvmCross肯定是您的應用程序的最佳選擇,讓團隊嘗試它真是太棒了他們如何在同一個應用程序中一起工作。回報!

3

這是一個老問題,但我想分享我的2美分。

我在iOS,Android和Windows的同一個跨平臺解決方案中同時使用MvvmCross和ReactiveUI。

我會說我的解決方案基於MvvmCross,因爲App類,應用程序如何啓動以及ViewModel導航遵循MvvmCross的方式。但我也用幾個ReactiveUI的主要特點:

  1. ReactiveCommand

    我真的很喜歡它的自動禁用功能(CanExecute,IsExecuting),當它綁定到一個按鈕。

  2. ReactiveList和它的派生列表

    這是我想推薦給任何人在ObservalbeCollection編程MVVM,它解決了幾乎所有我的痛點的類。單獨使用CreateDerivedCollection本身可能是我在項目中包含ReactiveUI的全部原因。

  3. MessageBus

    我怕我被它的自動編組慣壞了,UI主線程。如果我在任務池或UI線程中,我不需要擔心,我只需調用SendMessage。 (這是MvvmLight的實現非常不同的,這是我2年前離開MvvmLight的主要原因,抱歉)

當我使用上面的功能,我不在乎,如果他們的反應還是不行,我只是使用它們,因爲它們非常適合我的需求。 (實際上,ReactiveCommandReactiveListMessageBus都是反應性的)

我可以只使用ReactiveUI嗎?我也對自己提出了這個問題。我想我會錯過MvvmCross的東西:

  1. MvvmCross插件。

    我使用了幾個MvvmCross插件,我真的希望每個插件都兼容MvvmCross和ReactiveUI。 (也許他們已經是,我只是因爲我已經使用MvvmCross處理插件沒有檢查。)

  2. MvvmCross的教程

    有很多關於MvvmCross和YouTube視頻教程。我無法想象在這些事情上付出了多少努力。

    說實話,我學習MvvmCross的Xamarin。

  3. MvvmCross與Xamarin

    集成有時,如果一個類被MvvmCross或Xamarin提供的如果不是Mvx前綴我不能告訴。我檢查了我的項目,幾乎我的UI代碼的所有基類都是MvxSomething(我不使用Xamarin.Forms)。我不知道基類的Mvx版本提供了什麼,我只是使用它們而且它們工作。

我仍然在學習2個框架,但我希望他們可以合併一天。