web-dev-qa-db-ja.com

GUI更新を管理するためのリアクティブプログラミングとMVVMパターン

リアクティブプログラミングとMVVMは、UIからドメインレイヤーを分離する問題に対処できる2つのアプローチです。

  • MVVMは、UIコンポーネントにマップされたデータ構造であるビューモデルを定義することにより、これを行います。 UIはデータを表示し、おそらくユーザーが発生したときにデータを更新します。
  • 反応フレームワークは、データの一部が変更されたことをUIに通知するオブザーバブルのグラフを定義します

リアクティブフレームワークは、主流のプラットフォーム(.netおよびJavaのRx、react.js)とより実験的な場所(haskellのFRP)の両方でマインドシェアを獲得しています。

私は主にangularでMVVMを使用しており、表現力に対するシンプルさの比率は非常に満足できるものだと思っています。

リアクティブフレームワークは、mvvmが購入しない開発者を購入しますか?

本当に違いはありますか?たとえば、knockout.jsはmvvmフレームワークとしてアドバタイズされますが、そのインターフェースには反応的な感覚があります。

this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);
10
Simon Bergot

これらは、競合しないさまざまな概念であり、簡単に連携して優れた結果を生み出すことができます。

素人の言葉で:

MVVMは、コードビハインド(GUI /モデル結合)の混乱から逃れるのに役立ちます。リアクティブアプローチは、イベント/コールバックの混乱を減らすのに役立ちます。

MicrosoftはMVVMの最初の発明者なので、XAML/WPFについて少し学ぶことをお勧めします。マイクロソフトは、Reactiveアプローチの非常に優れた実装であるReactive Extensionsも作成しました。

これらを組み合わせるためのまともな試みはここにあります:

http://www.reactiveui.nethttps://github.com/reactiveui/ReactiveUI

関連SO質問:

https://stackoverflow.com/questions/1763411/reactive-extensions-rx-mvvm

9
Den