17

标题说明了一切。根据您的经验,这两个框架之间的主要区别是什么?我们什么时候应该使用一个而不是另一个?

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

4

3 回答 3

12

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

我会说我的解决方案基于 MvvmCross,因为 App 类、应用程序的启动方式和 ViewModel 导航都遵循 MvvmCross 的方式。但我也使用了 ReactiveUI 的几个关键特性:

  1. ReactiveCommand

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

  1. ReactiveList它是派生列表

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

  1. MessageBus

恐怕我被它自动编组到 UI 主线程宠坏了。如果我在任务池或 UI 线程中,我无需担心,我只需调用 SendMessage。(这与 MvvmLight 的实现非常不同,这是我 2 年前离开 MvvmLight 的主要原因,抱歉)

当我使用上述功能时,我不在乎它们是否具有反应性,我只是使用它们,因为它们非常适合我的需求。(事实上​​,ReactiveCommandReactiveListMessageBus都是反应式的)

我可以只使用 ReactiveUI 吗?我也问了自己这个问题。我想我会错过 MvvmCross 的一些东西:

  1. MvvmCross 插件。

我使用了 MvvmCross 的几个插件,我真的希望每个插件都兼容 MvvmCross 和 ReactiveUI。(也许他们已经是了,我只是没有检查,因为我已经在使用 MvvmCross 来处理插件。)

  1. MvvmCross 的教程

有很多关于 MvvmCross 和 Youtube 视频的教程。我无法想象在这些事情上付出了多少努力。

老实说,我通过 MvvmCross 学习 Xamarin。

  1. MvvmCross 与 Xamarin 的集成

Mvx如果不是前缀,有时我无法判断一个类是由 MvvmCross 还是 Xamarin 提供的。我检查了我的项目,我的 UI 代码的几乎所有基类都是 MvxSomething(我不使用 Xamarin.Forms)。我不知道基类的 Mvx 版本究竟提供了什么,我只是使用它们并且它们工作。

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

于 2017-04-04T05:10:17.277 回答
11

但这并不是唯一的——ReactiveUI 可以与非反应性代码一起使用

更进一步,您可以将 ReactiveUI 与其他 MVVM 框架一起使用,您无需承诺其中一个。RxUI 中的许多方法,例如WhenAny在任何对象上工作,并在运行时确定如何最好地连接到它们。

RxUI 绝对是一张自助餐桌(随心所欲!),而不是七道菜的餐点在同一个应用程序中。回来报告!

于 2013-07-11T00:24:11.437 回答
10

What's the key difference between both frameworks?

One is centred on the Reactive extensions, one is based on more conventional Mvvm coding.

But this isn't exclusive - ReactiveUI can be used with not-reactive code, and MvvmCross can be used with the reactive extensions.

When we should use one over the other?

They are both great frameworks (IMO).

The choice of whether to use a framework and which to use is down to you and your team really.

于 2013-07-10T11:52:23.417 回答