などなどをいろいろ眺めておりまして(東京うらやましい)、Reactive Extensions とか MVVM とかいろいろ熱い!楽しい!と思っているわけですが、いろいろなライブラリがあって、それらのカバーする範囲がいまいち明確になってない気がしたので、自分なりに整理してみました。
MVVM っていうと、Messenger とか DIコンテナ的なものとかもあるわけですが、主に DataBinding と Rx の違いにフィーチャーしたかったので除外しました。
DataBinding は、DependencyProperty や BindableProperty みたいなものがあるかどうかという感じで考えていて、「XAMLとかのマークアップでバインディング指定できなければならない」という考えではないです。
View, DataBinding, ViewModel, ReactiveX の各ブロックは基本的にはどの組み合わせでもよくて(特に ReactiveX は他とは別の世界のものなので)、しかし中には ReactiveProperty のように ReactiveX に依存しつつ ViewModel の機能を提供するものがあったり、ReactiveCocoa のように「全部入り」のものがあったりします。また、View と ViewModel を繋ぐためにはなんらかの DataBinding が必要です。
という理解なんですが、あってますかね?
私は Xamarin 推しの人なので、 Xamarin.Forms + ReactiveProperty が、MVVM+Rx のパワーをフル活用できて、しかも iOS/Android で大部分のコードが共有できるという最強の組み合わせなんですよ! というのを言いたいわけです。