Пол Д,
Я думаю, что вы, возможно, просто принуждаете технологии ради технологий.
Сначала вы хотите использовать шаблон Command в WPF / SL, чтобы вы могли писать тестируемый код (MVVM). Это не зависит от Rx. Если ваша ViewModel построена правильно, то если вы решите использовать Rx где-то еще (репозиторий, модель, контроллеры и т. Д.), Тогда отлично.
Причина, по которой WPF использует команды вместо шаблона «Событие», заключается в том, что команда сообщает, что что-то должно произойти, когда событие транслирует, что что-то произошло. Когда вы пишете элемент управления, вы можете сообщить, что произошел щелчок, но в вашей ViewModel команда указывает, что что-то должно произойти.
Если мы посмотрим на пример:
a SubmitOrderCommand может инициировать вызов для передачи состояния модели в хранилище. Это само по себе не требует участия Rx. Однако процесс отправки может использовать Rx для публикации изменений состояния, например, «Отправка» -> «Отправлено» -> «CreditChecked» -> «Приняты».
Это может привести к тому, что некоторые контракты будут выглядеть следующим образом (код псевдо)
class OrderEntryViewModel
{
public ICommand SubmitOrderCommand { get; }
}
interface IOrderRepository
{
IObservable<OrderStatus> SubmitOrder(SubmitOrderRequest request);
}
Я согласен с вами, что вокруг Rx слишком много академий. Я рекомендую вам ознакомиться с моим блогом Введение в Rx . Надеюсь, это поможет вам быстрее понять Rx.
ОБНОВЛЕНИЕ: Взгляните на мою книгу IntroToRx.com . Он заменяет серию блогов.