In MVC kann ein Modell mehrere Ansichten haben, in WPF ist ein XAML-Code-Behind-Modell an ein einziges XAML (Ansicht) gebunden, ist WPF/XAML nicht von Anfang an fehlerhaft in Bezug auf MVC?
Antworten
Zu viele Anzeigen?Ich empfehle einen Blick auf MVVM für die Verwendung mit WPF.
Sie vergleichen MVC mit Windows Forms mit WPF mit Code Behind - das heißt, Sie vergleichen ein Architekturmuster mit einer Technologie (ohne ein Muster zu verwenden). Dies ist ein unfairer Vergleich.
Ich habe eine Serie über MVVM aus der Perspektive von Windows Forms die zum Verständnis beitragen können. Sie werden feststellen, dass die Trennung von View und ViewModel, die mit WPF möglich ist, viel sauberer und einfacher zu implementieren ist als der Controller von MVC. Es ermöglicht sogar noch mehr entkoppelte Architekturen mit weniger Implementierungsaufwand.
Gute Frage!
In MVC geben Sie an, dass ein Modell mehrere Ansichten haben kann, was auch stimmt. Allerdings würde jede Ansicht einen eigenen Controller haben.
In MVVM kann ein Modell mehrere Ansichten haben, und in diesem Fall kann jede ihr eigenes Ansichtsmodell haben.
In der Praxis ist es jedoch durchaus möglich, View-Modelle wiederzuverwenden, wenn ein ViewModel keine Konzepte enthält, die sehr spezifisch für eine bestimmte Ansicht sind. Tatsächlich habe ich einen Artikel über plattformübergreifende XAML-Anwendungen geschrieben, in dem ich Code zwischen drei Anwendungen wiederverwendet habe, eine auf WP7, eine in Silverlight, die andere in WPF:
http://blogs.msdn.com/b/mikeormond/archive/2010/12/09/writing-cross-platform-xaml-applications.aspx
Die Ansichten waren sehr unterschiedlich, aber ich konnte sowohl die Modelle als auch die Ansichtsmodelle für alle drei Anwendungen wiederverwenden.
WPF/XAML ist eine Technologie, und MVC ist ein Entwurfsmuster. Es ist gut, wenn eine Technologie Sie nicht auf ein bestimmtes Muster beschränkt und es dem Entwickler erlaubt, zu wählen, welches Muster er verwenden möchte. Genauso wie Programmiersprachen es erlauben, jedes beliebige Entwurfsmuster zu verwenden.
Sie können MVC, MVP, MVVM oder YourMegaPattern mit XAML verwenden \WPF. Technologie sollte über den Mustern stehen, es sind die Rahmenwerke, die normalerweise an ein bestimmtes Muster gebunden sind.
Sie können zum Beispiel die ASP.NET-Technologie und das darauf basierende MVC-Framework nehmen.