Model View ViewModell (MVVM)


 Fachbücher zum Thema Model View ViewModell (MVVM)

Model View ViewModell (MVVM) ist eine Variante des Model-View-Controler (MVC)-Konzeptes zur Trennung von Layout und Programmcode. MVVM wird in der Windows Presentation Foundation (WPF) und Microsoft Silverlight angewendet. Dabei erhält die in XAML gestaltete Benutzeroberfläche (View) alle Daten durch Datenbindung und der Programmcode erhält alle Aktionen der Benutzeroberfläche mit Hilfe sogenannter Commands. MVVM realisiert eine klare Kompetenztrennung und eine lose Kooplung zwischen Benutzerschnittstelle und Benutzerschnittstellensteuerung.

Hintergrund

Microsoft hat für WPF und Silverlight eine Anpassung des Model-View-Controller (MVC)-Entwurfsmusters erschaffen, das Model-View-ViewModell (MVVM) genannt wird. Model und View entsprechen dabei der Bedeutung im klassischen MVC-Entwurfsmuster. Das ViewModel kann als eine spezielle Implementierungsform eines Controllers gesehen werden, das die Aufgabe hat, die im Modell enthaltenen Informationen in einer Form aufzubereiten („adaptieren“), die die Datenbindungstechniken in WPF und Silverlight direkt nutzen können. Das ViewModel hat auch die Aufgabe, sogenannte Commands zu implementieren, die an Ereignisse der Benutzeroberfläche gebunden werden. Das oberste Ziel von MVVM ist es, die Arbeit von Grafiker/Designern (die Views erstellen) und die Arbeit der Entwickler (die Models und ViewModels erstellen) zu trennen. Ein View enthält in reinen MVVM-Muster keinen Programmcode, sondern besteht nur als XAML-Markup.

Vorteile

1. Bessere Trennung der Arbeit des Oberflächengestalters und des Entwicklers
2. Bessere Testbarkeit der Oberfläche (ohne Klickfolgen, stattdessen mit codebasierten Unit Tests)
3. Leichtere Austauschbarkeit des Uis

Nachteile

1. Hoher Mehraufwand im Vergleich zur klassischen Programmierung mit dem Code-Behind-Modell und Ereignissen
2. MVVM wird bisher nur sehr unzureichend durch Werkzeuge unterstützt.

Versuche, diese Situation zu verbessern

http://www.caliburnproject.org/
http://www.galasoft.ch/mvvm/getstarted/
http://www.calciumsdk.net/
http://wpfonyx.codeplex.com/

Als E-Mail versenden
Bookmarken bei del.icio.us
Bookmarken bei Digg
Reddit
Bookmarken bei Live