Вы включили сюда много вопросов, поэтому я отвечу на них один за другим.
RxUI как-то отличается от Reactive Extensions?
да. Reactive Extensions — это библиотека для создания асинхронных и событийных программ с использованием наблюдаемых последовательностей и запросов в стиле LINQ. операторы. Это не имеет ничего общего с пользовательским интерфейсом. Rx предоставляет вам общую абстракцию над потоком данных.
RxUI — это инфраструктура MVVM, что означает это библиотека классов, помогающая реализовать шаблон MVVM в вашем приложении.
Может ли RxUI делать то, чего не может Rx? Это более лаконично? Он более уютный?
Он служит другой цели. Rx предоставляет набор методов, которые обычно помогают перемещать данные в вашем приложении. RxUI используется для создания пользовательских интерфейсов. Он использует Rx под капотом, а также предоставляет API-интерфейс типа Rx (а именно, IObservable<T>
) из его компонентов.
Например, Реализация ICommand в ReactiveUI, называемая ReactiveCommand, предоставляет свойство с именем ThrownException
, который имеет тип IObservable<Exception>
(его можно прочитать как последовательность ошибок).
Обратите внимание, что хотя тип интерфейса IObservable<T>
является частью библиотеки базовых классов .Net, буквально все полезные функции, работающие с этим типом, включены в библиотеку Reactive Extensions.
Но разве я не могу сделать то же самое только с Rx?
Нет, потому что, например, Rx не предоставляет вам реализацию ICommand
, жизненно важную часть каждой среды MVVM.
Почему я должен предпочесть RxUI, а не MVVMCross/light+Rx? Что такого особенного?
Если вы хотите часто использовать Reactive Extensions в своем приложении, вы можете предпочесть использовать RxUI (а не другую инфраструктуру MVVM), потому что они очень хорошо интегрируются друг с другом. В сочетании они предоставляют вам множество функций из коробки (ознакомьтесь, например, с ReactiveCommand или WhenAny.
При этом как заявил создатель RxUI:
вы можете использовать ReactiveUI вместе с другими инфраструктурами MVVM, вам не нужно фиксировать ту или иную. Многие методы в RxUI, такие как WhenAny, работают с любыми объектами и во время выполнения определяют, как лучше всего к ним подключиться.
RxUI — это определенно фуршетный стол (бери, что хочешь!), а не обед из семи блюд :)
И наконец:
P.S. Есть ли где-нибудь документация по API?
Да, есть! Посмотрите здесь: https://reactiveui.net/api/
В качестве примечания: не стесняйтесь просматривать раздел документации по реактивному программированию, в котором объясняется вам некоторые из основных терминов и понятий, стоящих за фреймворком :)
person
pmbanka
schedule
11.01.2016