| 

.NET C# Java Javascript Exception

3
Hallo,
ich befasse mich derzeit mit mvvm. Ich such nach einem geeigneten Archtektur wo jedes Model in einem hierachischen Objektmodel sein pendant hat als ViewModel auch in einem hierachischen Objektmodel. Ich frage mich an dieser Stelle, ob das die richtige Architektur ist und wenn ja, gibt es ein kleines Beispie, wie man sowas realisieren kann.
Danke schon mal
News:
14.02.2011
Amin 61 1 2
"...wo jedes Model in einem hierarchischen..." - hier meinst Du "Model" wie in MODEL-View-ViewModel?
Matthias Hlawatsch 14.02.2011
Ja genau. Model ist betrifft die Domainklasse im sinne von Model in mvvm.
Amin 14.02.2011
2 Antworten
4
Ich glaube nicht, dass dieser Ansatz zum Erfolg führt. Ein ViewModel ist ein "Model für die View". Es repräsentiert die Daten und die UI-Logik eines einzelnen UI-Moduls (lies: Eingabemaske, Dialog, Wizard, Report...), und die View das Layout/Design dieses Moduls. Wenn es nicht gerade um "Hello World" geht, wirst Du mehrere UI-Module in Deiner Anwendung haben, und deren Schnitt richtet sich danach, wie die Interaktion mit dem Benutzer ablaufen soll.

Das (Domain) Model repräsentiert die Fachlichkeit Deiner Anwendung - die fachlichen Entitäten, deren Beziehungen und die darin möglichen Operationen. Dieses Model als ganzes hast Du nur einmal, und seine innere Struktur wird von der Fachlichkeit bestimmt und nicht davon, wie mit dieser Fachlichkeit interagiert werden soll. Ich sehe keinen Sinn darin, eine 1:1-Beziehung zwischen einzelnen Teilen des Models (das meinstest Du doch mit "Domainklasse") und ViewModeln und damit UI-Modulen herzustellen. Beide haben unterschiedliche Aufgaben. Auf dem gleichen Model kann man beliebig viele unterschiedliche Anwendungen aufbauen - ganz einfache mit wenigen Views oder hochkomplexe. Der Witz von MVVM ist ja gerade, diese Trennung unterschiedlicher Belange zu erleichtern, weshalb ich es für kontraproduktiv halte, sie über eine Entsprechung in der Architektur wieder einzuführen.
14.02.2011
Matthias Hlawatsch 13,2k 4 9
Vielen Dank,
ich habe es verstanden. darf es trotzdem keine Beziehungen zwischen den einzelnen Viewmodels geben, wenn sie unter sich kommunizieren sollen?
Amin 15.02.2011
1
"darf es trotzdem keine Beziehungen zwischen den einzelnen Viewmodels geben, wenn sie unter sich kommunizieren sollen?"

Diese Beziehung gibt es auf jeden Fall! Deine ViewModels befinden sich auf derselben Abstraktionsschicht und können sich somit gegenseitig aufrufen.

In einem ViewModel könntest du schreiben:
var zweiteView = myFactory.CreateView2();
ZweitesViewModel viewModel = new ZweitesViewModel(zweiteView);
viewModel.doSomething();


Ich hoffe, das konnte dir etwas helfen.
15.02.2011
Andy Stumpp 509 1 6
Dem kann ich nur beipflichten. Und eine wirklich gute Adresse, um zu studieren, wie ein UI aus mehreren Views und ViewModels zusammengesetzt werden kann und wie diese miteinander kommunizieren können, ist [url=http://compositewpf.codeplex.com/]Prism[/url].
Matthias Hlawatsch 15.02.2011
Vielen Dank,
Prism schein mir ein bißchen überkandidelt.
Die Artikelserie von Norbert Eder ist richtig gut und ich werde daruaf setzen.
Lose Kommunikation zwischen ViewModels
[url=http://devtyr.norberteder.com/post/Lose-Kommunikation-zwischen-ViewModels.aspx]Den Text zum Link bitte hier eingeben...[/url]
Amin 15.02.2011

Stelle deine Mvvm-Frage jetzt!