标题说明了一切。根据您的经验,两个框架之间的关键区别是什么? 什么时候我们应该使用另一个?。
预期用途:跨平台开发(Windows 8,iOS,Android,WindowsRT,Mac)。
答案 0 :(得分:10)
但这不是排他性的 - ReactiveUI可以与非反应性代码一起使用
更进一步,您可以将ReactiveUI与其他MVVM框架一起使用,您无需提交其中一个。 RxUI中的许多方法(如WhenAny
)可以处理任何对象,并在运行时确定如何最好地连接它们。
RxUI绝对是一张自助餐桌(拿你想要的东西!),而不是七道菜的餐:) MvvmCross肯定是一款以你的应用为基础的绝佳选择,让团队尝试如何做到真棒他们在同一个应用程序中一起工作。报告回来!
答案 1 :(得分:9)
两个框架之间的关键区别是什么?
一个以Reactive扩展为中心,一个基于更传统的Mvvm编码。
但这不是独占的 - ReactiveUI可以与非反应性代码一起使用,MvvmCross可以与反应式扩展一起使用。
什么时候应该使用另一个?
它们都是很棒的框架(IMO)。
是否使用框架以及使用哪种框架的选择取决于您和您的团队。
答案 2 :(得分:9)
这是一个老问题,但我想分享我的2美分。
我在同一个跨平台解决方案中使用MvvmCross和ReactiveUI,适用于iOS,Android和Windows。
我想说我的解决方案基于MvvmCross,因为App类,应用程序如何启动以及ViewModel导航都遵循MvvmCross'办法。但我也使用了ReactiveUI的几个主要功能:
ReactiveCommand
当它被绑定到一个按钮时,我真的很喜欢它的自动禁用功能(CanExecute,IsExecuting)。
ReactiveList
及其派生列表
这是一个我想向任何编程MVVM推荐的类,它几乎解决了我在ObservalbeCollection中的所有痛点。单独使用CreateDerivedCollection
本身就是我在项目中包含ReactiveUI的全部原因。
MessageBus
我担心自己被UI主线程的自动编组所破坏。如果我在任务池或UI线程中,我不必担心,我只需要调用SendMessage。 (这与MvvmLight的实施非常不同,这是我2年前离开MvvmLight的主要原因,对不起)
当我使用上述功能时,我不在乎他们是否有反应,我只是使用它们,因为它们非常符合我的需求。 (事实上,ReactiveCommand
,ReactiveList
和MessageBus
都是被动的)
我可以只使用ReactiveUI吗?我也问自己这个问题。我想我会错过MvvmCross的一些东西:
MvvmCross插件。
我使用了MvvmCross的几个插件,我真的希望每个插件都兼容MvvmCross和ReactiveUI。 (也许他们已经是,我只是没有检查,因为我已经使用MvvmCross来处理插件。)
MvvmCross的教程
有很多关于MvvmCross和Youtube视频的教程。我无法想象这些事情会付出多少努力。
老实说,我通过MvvmCross学习Xamarin。
MvvmCross与Xamarin的整合
有时我无法判断MvvmCross或Xamarin是否提供了类,如果不是Mvx
前缀。我检查了我的项目,我的UI代码的几乎所有基类都是MvxSomething(我不使用Xamarin.Forms)。我不知道基类的Mvx版本究竟提供了什么,我只是使用它们并且它们可以工作。
我仍然在学习这两个框架,但我希望有一天能够合并它们。