标题已经说得很清楚了。根据您的经验,这两个框架之间的主要区别是什么?我们应该在什么情况下使用其中一个而不是另一个?
预期用途:跨平台开发(Windows 8,iOS,Android,WindowsRT,Mac)。
标题已经说得很清楚了。根据您的经验,这两个框架之间的主要区别是什么?我们应该在什么情况下使用其中一个而不是另一个?
预期用途:跨平台开发(Windows 8,iOS,Android,WindowsRT,Mac)。
我在iOS、Android和Windows的跨平台解决方案中同时使用了MvvmCross和ReactiveUI。
我会说我的解决方案基于MvvmCross,因为App类以及应用程序启动和ViewModel导航都遵循了MvvmCross的方式。但我也使用了ReactiveUI的几个关键特性:
ReactiveCommand
我非常喜欢它的自动禁用功能(CanExecute,IsExecuting)当它绑定到一个按钮时。
ReactiveList
及其派生列表这是一个我想推荐给任何编写MVVM的人的类,它已经解决了观察集合中几乎所有的问题。仅仅是使用CreateDerivedCollection
方法就足够让我在项目中包含ReactiveUI。
MessageBus
我担心我被它的自动调度到主线程的功能所宠坏了。我不需要担心自己是否在任务池或UI线程中,只需调用SendMessage。(这与MvvmLight的实现非常不同,这也是我两年前离开MvvmLight的主要原因,抱歉)
当我使用上述功能时,我并不在意它们是否是响应式的,我只是因为它们非常适合我的需求而使用它们。(事实上,ReactiveCommand
、ReactiveList
和MessageBus
都是响应式的)
我可以只使用ReactiveUI吗?我也问过自己这个问题。我想我会错过一些MvvmCross的东西:
我使用了几个来自MvvmCross的插件,我真的希望每个插件都兼容于MvvmCross和ReactiveUI。(也许它们已经兼容了,但我没有检查,因为我已经使用MvvmCross处理了这些插件。)
关于MvvmCross和Youtube视频的教程很多,我无法想象这些东西需要付出多少努力。
说实话,我是通过MvvmCross学习Xamarin的。
有时候我分不清一个类是由MvvmCross还是Xamarin提供的,如果没有Mvx
前缀的话。我检查了我的项目,几乎所有UI代码的基类都是MvxSomething(我不使用Xamarin.Forms)。我不知道Mvx版本的基类提供了什么,但我只需使用它们,它们就能正常工作。
我仍在学习这两个框架,但我希望它们有一天可以合并。
但这并不是排他的 - ReactiveUI可以与非响应式代码一起使用。
更进一步,您可以将ReactiveUI与其他MVVM框架一起使用,您无需承诺其中之一。 RxUI中的许多方法,例如WhenAny
,适用于任何对象,并在运行时确定如何最佳连接它们。
RxUI绝对是自助餐(拿你想要的!),而不是七道菜 :) MvvmCross肯定是构建应用程序的好选择,有一个团队尝试它们如何在同一个应用程序中协同工作会很棒。报告回来吧!
这两个框架之间的主要区别是什么?
一个是以响应式扩展为中心,另一个则基于更传统的Mvvm编码。
但这并非互斥 - ReactiveUI可以与非响应式代码一起使用,而MvvmCross可以与响应式扩展一起使用。
我们应该在何时使用其中一个框架?
它们都是很棒的框架(在我看来)。
是否使用框架以及使用哪种取决于您和您的团队。