2013-07-10 3 views
12

Заголовок говорит все. Основываясь на вашем опыте, в чем основное различие между обеими структурами ?. Когда мы должны использовать один над другим ?.ReactiveUI vs. MvvmCross

Предполагаемое использование: кросс-платформенная разработка (Windows 8, iOS, Android, WindowsRT, Mac).

ответ

7

В чем основное различие между обеими структурами?

Один сконцентрирован на реактивных расширениях, один основан на более условном кодировании Mvvm.

Но это не является исключительным - ReactiveUI может использоваться с нереактивным кодом, а MvvmCross может использоваться с реактивными расширениями.

Когда мы должны использовать один над другим?

Они оба отличные каркасы (ИМО).

Выбор того, использовать ли фреймворк и который использовать, зависит от вас и вашей команды.

9

Но это не эксклюзив - ReactiveUI может использоваться с не-реактивного кода

Даже дальше, вы можете использовать ReactiveUI наряду с другими системами MVVM, вам не нужно совершить одну или другой. Многие методы в RxUI, такие как WhenAny, работают над любым объектом и определяют во время выполнения, как наилучшим образом подключиться к ним.

RxUI - это, безусловно, стол для буфета (возьмите то, что вы хотите!), А не питание из семи блюд :) MvvmCross - отличный выбор для вашего приложения, и было бы замечательно, если бы команда попыталась как они работают вместе в одном приложении. Доложить!

3

Это старый вопрос, но я хотел бы поделиться своими 2 центами.

Я использую как MvvmCross, так и ReactiveUI, в одном кросс-платформенном решении для iOS, Android и Windows.

Я бы сказал, что мое решение основано на MvvmCross, потому что класс App, как приложение запускается, и Навигация в ViewModel следуют по пути MvvmCross. Но я также использовать несколько ключевых особенностей ReactiveUI в:

  1. ReactiveCommand

    мне очень нравится его автоматическое отключение функции (CanExecute, IsExecuting), когда он привязан к кнопке.

  2. ReactiveList и он выводится список

    Это класс, который я хотел бы рекомендовать кому-либо программирования MVVM, он решил почти все мои болевые точки в ObservalbeCollection. Использование только CreateDerivedCollection может быть всей причиной того, что я включаю ReactiveUI в свой проект.

  3. MessageBus

    Я боюсь, что я испортил его авто маршалинге до УИ основной поток. Мне не нужно беспокоиться, если я в пуле задач или потоке пользовательского интерфейса, я просто вызываю SendMessage. (Это очень отличается от реализации MvvmLight и это главная причина, почему я оставил MvvmLight 2 года назад, извините)

При использовании функции выше, я не волнует, если они реактивная или нет, я просто используйте их, потому что они соответствуют моим потребностям очень хорошо. (Фактически, ReactiveCommand, ReactiveList и MessageBus все являются реактивными)

Могу ли я использовать ReactiveUI? Я также задал этот вопрос самому себе. Я думаю, что я пропущу что-то от MvvmCross:

  1. MvvmCross Плагины.

    Я использую несколько плагинов из MvvmCross, и я действительно хочу, чтобы каждый плагин был совместим с MvvmCross и ReactiveUI. (Может быть, они уже есть, просто я не проверял, потому что я уже использую MvvmCross для обработки плагин.)

  2. учебников MvvmCross в

    Есть много учебника по MvvmCross и Youtube видео. Я просто не могу представить, как много усилий накладывается на такие вещи.

    Я изучаю Xamarin by MvvmCross, если быть честным.

  3. интеграции MvvmCross с Xamarin

    Иногда я не могу сказать, если класс обеспечивается MvvmCross или Xamarin, если не для префикса Mvx. Я проверил свой проект, почти все базовые классы моего кода пользовательского интерфейса - MvxSomething (я не использую Xamarin.Forms). Я не знаю, что именно обеспечивается версией Mvx базовых классов, я просто использую их, и они работают.

Я все еще изучаю обе эти рамки, но я хочу, чтобы они были объединены в один прекрасный день.

Смежные вопросы