Im Wesentlichen sind Modell und Ansichtsmodell einfache Klassen mit Attributen.
Das Hauptziel dieser Klassen besteht darin, ein Objekt für ihre jeweilige Zielgruppe zu beschreiben (zu "modellieren"), die jeweils der Controller und die Ansicht sind.
Sie haben also vollkommen recht, wenn Sie sagen
Nach meinem Verständnis handelt es sich um eine Art Modell, das einen bestimmten Zweck der Interaktion mit der Ansicht hat
Während Modellklassen effektiv Domänenentitäten sind, mit denen Ihre Anwendung interagiert, sind Ansichtsmodelle einfache Klassen, mit denen Ihre Ansichten interagieren.
Ich hoffe es hilft :)
Update :
Microsoft hat eine spezielle Version des Präsentationsmusters von Martin Fowler entwickelt, die weitgehend auf dem Model-View-Controller basiert und als Model-View-ViewModel (MVVM) für PF-Anwendungen bezeichnet wird. Dieses Muster richtet sich an moderne UI-Entwicklungsplattformen, bei denen UI-Entwickler andere Anforderungen haben, die mehr auf Geschäftslogik als auf herkömmlichen Entwicklern basieren. Schauen Sie sich hier ein bisschen Theorie an
Im einfachsten Sinne denke ich gerne an Folgendes:
Modell: Sieht genau wie Ihr Datenmodell aus und fühlt sich auch so an. In jeder Hinsicht ist es nur eine Klassendarstellung Ihres Datenmodells. Es hat keine Kenntnis von Ihrer Ansicht oder von Elementen in Ihrer Ansicht. Das heißt, es sollte keine Attributdekoratoren (dh Erforderlich, Länge usw.) enthalten, die Sie für Ihre Ansicht verwenden würden.
Ansichtsmodell: Dient als Datenordner zwischen Ihrer Ansicht und Ihrem Modell und ist in vielen Fällen auch ein Wrapper für Ihr Modell. Ohne die Ansicht wird sie unbrauchbar, sodass sie normalerweise nicht wie ein Standardmodell für mehrere Ansichten und Controller wiederverwendbar ist.
Beispielsweise kann Ihr Modell die folgenden Eigenschaften aufweisen, die eine direkte Darstellung Ihrer Datenquelle darstellen:
Da Ihr Ansichtsmodell nun an Ihre Ansicht gebunden ist, verfügt es möglicherweise über die folgende Eigenschaft, mit der das Feld Vorname und Nachname des Modells als eine Zeichenfolge verknüpft werden:
quelle
Ich fand diesen Artikel eine sehr nützliche Ressource, um zu verstehen, wie das "Domänenmodell" und das "Ansichtsmodell" in einer MVC-Anwendung interagieren, insbesondere im Hinblick auf die Bindung. Das Beste von allem sind Beispiele anstelle von abstrakten Beschreibungen.
"Seit der Veröffentlichung von MVC habe ich viel Verwirrung darüber festgestellt, wie Ansichtsmodelle am besten erstellt werden können. Manchmal ist diese Verwirrung nicht ohne Grund, da es nicht viele Informationen zu Best-Practice-Empfehlungen zu geben scheint. Darüber hinaus gibt es keine In diesem Beitrag werde ich einige der wichtigsten Muster und die Vor- und Nachteile der einzelnen Muster beschreiben. Es ist wichtig zu beachten, dass viele dieser Muster vorhanden sind sind aus Menschen hervorgegangen, die Probleme der realen Welt gelöst haben. "
http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx
quelle
WikiPedia bietet eine vollständigere Beschreibung von Model vs. ModelView als in einer SO-Antwort: http://en.wikipedia.org/wiki/Model_View_ViewModel
Ich zitiere:
Modell : Wie im klassischen MVC-Muster bezieht sich das Modell entweder auf (a) ein Objektmodell, das den Realzustandsinhalt darstellt (ein objektorientierter Ansatz), oder (b) die Datenzugriffsschicht, die diesen Inhalt darstellt (ein Daten-) zentrischer Ansatz).
Ansicht : Wie im klassischen MVC-Muster bezieht sich die Ansicht auf alle von der GUI angezeigten Elemente wie Schaltflächen, Fenster, Grafiken und andere Steuerelemente.
ViewModel : Das ViewModel ist ein „Modell der Ansicht“, dh es ist eine Abstraktion der Ansicht, die auch zur Datenbindung zwischen der Ansicht und dem Modell dient. Es könnte als ein spezieller Aspekt eines Controllers (im MVC-Muster) angesehen werden, der als Datenbinder / Konverter fungiert, der Modellinformationen in Ansichtsinformationen umwandelt und Befehle aus der Ansicht in das Modell übergibt. Das ViewModel macht öffentliche Eigenschaften, Befehle und Abstraktionen verfügbar. Das ViewModel wurde mit einem konzeptionellen Status der Daten verglichen, im Gegensatz zum tatsächlichen Status der Daten im Modell.
quelle
Es gibt einen Begriff für ein ViewModel, der jedoch im Allgemeinen nicht mit Asp.net MVC verknüpft ist. MVC verwendet das Model View Controller-Muster, bei dem der Controller Interaktionen verarbeitet, Daten aus dem Modell aufbaut und diese Daten dann zur Anzeige an die Ansicht übergibt.
ViewModels (und das ViewModel-Muster der Modellansicht) sind allgemeiner mit Silverlight und WPF verknüpft. Xaml ist insofern etwas anders, als die Ansichten eine bidirektionale Bindung an die ViewModels herstellen können, sodass die Technologie etwas anders ist. Wenn Sie beispielsweise ein Textfeld an ein Feld binden, während Sie in dieses Textfeld eingeben, wird der Wert des Felds dynamisch aktualisiert. Diese Art der Interaktion ist auf Webseiten nicht wirklich möglich, da Webseiten zustandslos sind.
Die Ähnlichkeit zwischen den beiden Mustern besteht darin, dass beide versuchen, die Logik von der Anzeige zu trennen. Die häufigste Verwendung / der häufigste Grund dafür ist das Testen: Sie möchten in der Lage sein, alle Interaktionen, die ein Benutzer über die Benutzeroberfläche aufruft, über Code (über ein Testframework) auszuführen.
quelle