回答:
基本的に、ModelとView Modelはどちらも属性を持つ単純なクラスです。
これらのクラスの主な目的は、コントローラーとビューであるそれぞれのオーディエンスのオブジェクトを(「モデル化する」ために)記述することです。
だからあなたが言うときあなたは完全に正しいです
私の理解では、それはビューと相互作用する特定の目的を持つ一種のモデルです
したがって、モデルクラスはアプリケーションが対話する実質的なドメインエンティティですが、ビューモデルはビューが対話する単純なクラスです。
それが役に立てば幸い :)
更新:
マイクロソフトは、主にモデルビューコントローラーに基づいたマーティンファウラーによるプレゼンテーションパターンの特殊なバージョンを開発し、PFアプリケーション用のモデルビュービューモデル(MVVM)と呼びました。このパターンは、UI開発者が従来の開発者よりもビジネスロジックに基づいて異なる要件を持つ現代のUI開発プラットフォームを対象としています。見ているこちら理論のビットのために
簡単に言えば、次のことを考えたいと思います。
モデル:厳密にデータモデルのように見えます。すべての意図と目的において、これはデータモデルのクラス表現にすぎません。ビューやビュー内の要素についての知識はありません。とはいえ、ビューに使用する属性デコレータ(つまり、必須、長さなど)を含めることはできません。
ビューモデル:ビューとモデル間のデータバインダーとして機能し、多くの場合、モデルのラッパーでもあります。ビューがなければ役に立たなくなるため、通常、標準のモデルのように複数のビューやコントローラで再利用することはできません。
例として、モデルには次のプロパティがあります。これらのプロパティは、データソースを直接表現したものです。
public string FirstName { get; set; }
public string LastName { get; set; }
これで、ビューモデルはビューに関連付けられているため、次のプロパティを持つことができます。これは、モデルのFirstNameフィールドとLastNameフィールドを1つの文字列として連結します。
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}
この記事は、MVCアプリケーション内で「ドメインモデル」と「ビューモデル」がどのように相互作用するか、特にバインディングに関して理解するのに非常に役立つリソースであることがわかりました。何よりも、抽象的な説明ではなく例が含まれています。
「MVCがリリースされてから、ビューモデルを作成する最善の方法について多くの混乱が見られました。ベストプラクティスの推奨事項に関する情報が大量にないように思われる場合があるため、この混乱は正当な理由がないわけではありません。さらに、銀の弾丸として機能する「1つのサイズですべてに適合する」ソリューションです。この投稿では、浮上した主なパターンのいくつかと、それぞれの長所と短所について説明します。これらのパターンの多くは、現実の問題を解決する人々から生まれました。」
http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx
WikiPediaには、SOの回答で得られるよりもModelViewとModelViewの完全な説明があります。http://en.wikipedia.org/wiki/Model_View_ViewModel
私は引用します:
モデル:従来のMVCパターンと同様に、モデルは(a)実際の状態のコンテンツを表すオブジェクトモデル(オブジェクト指向アプローチ)、または(b)そのコンテンツを表すデータアクセスレイヤー(データ中心的なアプローチ)。
ビュー:クラシックMVCパターンと同様に、ビューは、ボタン、ウィンドウ、グラフィックス、その他のコントロールなど、GUIによって表示されるすべての要素を指します。
ViewModel:ViewModelは「ビューのモデル」です。つまり、ビューとモデル間のデータバインディングにも使用されるビューの抽象化です。これは、モデル情報をビュー情報に変更し、ビューからモデルにコマンドを渡すデータバインダー/コンバーターとして機能するコントローラー(MVCパターン内)の特殊な側面と見なすことができます。ViewModelは、パブリックプロパティ、コマンド、および抽象化を公開します。ViewModelは、モデル内のデータの実際の状態ではなく、データの概念的な状態に例えられています。
ViewModelの概念がありますが、一般的にはAsp.net MVCに関連付けられていません。MVCは、モデルビューコントローラーパターンを使用します。コントローラーパターンは、相互作用を処理し、モデルからデータを構築し、そのデータをビューに渡して表示します。
ViewModels(およびモデルビューのViewModelパターン)は、より一般的にはSilverlightおよびWPFに関連付けられています。Xamlは、ビューがViewModelへの双方向バインディングを実行できるという点で少し異なります。したがって、テクノロジーは少し異なります。たとえば、テキストボックスをフィールドにバインドした場合、そのテキストボックスに入力すると、フィールドの値が動的に更新されます。Webページはステートレスであるため、このような相互作用はWebページでは実際には不可能です。
2つのパターンの類似点は、どちらもロジックを表示から分離しようとしていることです。これの最も一般的な使用/理由はテストです。ユーザーがユーザーインターフェイスを介して呼び出すすべての対話を(テストフレームワークを介して)コードから実行できるようにしたいと考えています。