MVVMへの簡単な段階的な参照はありますか?
はいあります。こちらをご覧ください。
MVVMはMVCのスーパーセットですか、サブセットですか?
MVVMはMVCファミリーに属しているので、少し言えばサブセットです。これは、UIをその下のビジネスロジックから切り離すバリアントです。私はそれをMVCの兄弟として説明します。OOPの初期の頃から、UIをロジックから切り離す方法を模索してきました。MVCは進化した最初の原型でした。ほとんどの人は正しく理解していませんが、それは非常に単純です。ビューはモデルの単なるオブザーバーであり、必要なときにそれを呼び出します。コントローラは、ビューがモデルと通信するための戦略にすぎません。たとえば、交換可能な動作(ReadonlyController、AdminControllerなど)が必要な場合などです。MVCは非常に成功しており、実際に適用することをお勧めします。
MVVMは、Martin Fowlerによって説明されているように、特殊な種類のMVPパターンです。MVPは(ユーザー入力などを取りながら)ビューを可能な限り簡潔に保ち、テスト機能を強化します。これは、ビューの抽象化とプレゼンターに挿入する対話ロジックを目的としています。プレゼンターはモデル/ビジネスロジックとのみ通信し、ビューを更新します。Martin Fowlerは、彼のプレゼンテーションモデルパターンでMVVMについてほとんど説明しています。
ビューは完全にViewModelに抽象化されています。にView
プロパティが必要な場合は、プロパティもViewModel
必要です。これ(ViewModel)は、基礎となるUIテクノロジー、つまり抽象化から完全に独立していることを意図しています。ViewとViewModelの間で通信するには、同期パターンを使用する必要があります(つまり、オブザーバー)。これは、ステートレスなWeb環境で達成するのは容易ではありません。MVVMはMVPとは異なります。ビューはモデル/ビジネスロジックにバインドせず、代わりにViewModelにバインドするためです。
最新のパターンと、アプリケーションのWindowsバージョンとWebバージョンのどちらを選択する必要がありますか?
理論的には、プレゼンテーションモデル(MVVMのような)は、使用中のUIテクノロジから完全に独立している必要があります。ただし、同期化の側面をカバーする必要があります。これは、同期のりが既に存在するWPFでコマンドとプロパティにバインドすることで簡単に実行できます。ASP.NETでは、これは別の話です。ただし、すべてのWindows UIテクノロジでプレゼンテーションモデルパターンを使用したCodeProjectに関する記事があります。見てください。