ReactiveUI与MvvmCross

ElS*_*awy 15 reactiveui mvvmcross

标题说明了一切.根据您的经验,两个框架之间的关键区别是什么?当我们应该使用一个而不是另一个?

预期用途:跨平台开发(Windows 8,iOS,Android,WindowsRT,Mac).

Ana*_*tts 11

但这不是独占的 - ReactiveUI可以与非反应性代码一起使用

更进一步,您可以将ReactiveUI与其他MVVM框架一起使用,您不需要提交其中一个.RxUI中的许多方法,例如WhenAny处理任何对象并在运行时确定如何最好地连接它们.

RxUI绝对是一个自助餐桌(拿你想要的东西!),而不是七道菜的餐:) MvvmCross肯定是一个很好的选择,以你的应用为基础,让一个团队尝试他们如何一起工作真是太棒了在同一个应用程序中.报告回来!


Stu*_*art 10

两个框架之间的关键区别是什么?

一个是以Reactive扩展为中心,一个是基于更传统的Mvvm编码.

但这不是唯一的 - ReactiveUI可以与非反应性代码一起使用,MvvmCross可以与反应式扩展一起使用.

当我们应该使用一个而不是另一个?

它们都是很棒的框架(IMO).

是否使用框架以及使用哪种框架的选择取决于您和您的团队.


Fel*_*lix 10

这是一个老问题,但我想分享我的2美分.

我在iOS,Android和Windows的同一跨平台解决方案中同时使用MvvmCross和ReactiveUI.

我会说我的解决方案基于MvvmCross,因为App类,应用程序如何启动,以及ViewModel导航遵循MvvmCross的方式.但我也使用了ReactiveUI的几个主要功能:

  1. ReactiveCommand

    当它被绑定到一个按钮时,我真的很喜欢它的自动禁用功能(CanExecute,IsExecuting).

  2. ReactiveList 它是派生列表

    这是一个我想向任何编程MVVM推荐的类,它几乎解决了我在ObservalbeCollection中的所有痛点.CreateDerivedCollection单独使用它本身就是我在项目中包含ReactiveUI的全部原因.

  3. MessageBus

    我害怕我被自动封送到UI主线程所破坏.如果我在任务池或UI线程中,我不需要担心,我只需要调用SendMessage.(这与MvvmLight的实施非常不同,这是我2年前离开MvvmLight的主要原因,对不起)

当我使用上述功能时,我不在乎他们是否有反应,我只是使用它们因为它们非常符合我的需求.(事实上,ReactiveCommand,ReactiveList,和MessageBus都是反应性的)

我可以只使用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版本究竟提供了什么,我只是使用它们并且它们可以工作.

我仍在学习这两个框架,但我希望有一天它们可以合并.