Design einer MVVM-Anwendung [geschlossen]
-
27-10-2019 - |
Frage
Ich bin hier sehr skeptisch gegenüber dem Design meiner Anwendung .....
Hier ist das Diagramm für meine Anwendung
ist das richtig?Ich muss nichts ändern ...
Ich werde das Diagramm ausarbeiten ....:
Allgemeine Bibliothek: Enthält Klassen ErrorCodes, Utility-Klassen usw.
Logger: Logging Framework
Ausnahmebehandlung: Framework für die Behandlung von Ausnahmen
Ansicht: Enthält: Alle verschiedenen XAMLs für Ansichten wie UserControls, Windows, Popups
ViewModel: Enthält ViewModels für die unterschiedlichen Ansichten.
Modell: Enthält die verschiedenen Ebenen wie ... Geschäftsschicht, Datenzugriffsebene usw.
Entitätsebene: Enthält die Entitätsobjekte wie Mitarbeiter, Unternehmen usw.
Dateibox: Geben Sie das Lesen / Schreiben aus einer Datei / Datenbank an ....
Lösung
Es ist schwer zu sagen, was Sie mit Ihrer Frage anfangen wollen, aber meiner Meinung nach sollten MVVM-Ebenen folgendermaßen aussehen:
-
Modell : Rohdaten und Rohdatenvalidierung. Vielleicht auch ein
INotifyPropertyChanged
, aber sonst nichts -
ViewModel : Geschäftslogik, Datenzugriff, erweiterte Validierung basierend auf Geschäftsregeln usw.
-
Ansichten : Hübsche UI-Ebene, mit der Benutzer mit den ViewModels interagieren können. Sonst nichts.
Ein Modell verfügt möglicherweise über eine
File
-Eigenschaft, sollte jedoch nicht dafür verantwortlich sein, das Dateidialogfeld anzuzeigen, die Datei in der Datenbank zu speichern oder zu überprüfen, ob die Datei die Erweiterung .pdf hat. Solche Sachen sind die Aufgabe des ViewModel.Bearbeiten
Ich sehe das Update, das Sie an Ihrer Frage vorgenommen haben. Es ist ein guter Anfang, aber hier sind die Probleme, die ich damit habe:
-
Ihre Modelle sollten Rohdatenobjekte sein. Sie sollten nichts Fortgeschritteneres enthalten als die Überprüfung der Länge einer Eigenschaft.
-
Ich würde ehrlich gesagt nicht empfehlen, die Ansichten, Modelle und Ansichtsmodelle in drei separate Ebenen zu unterteilen. Ich habe das einmal gemacht und es stellte sich heraus, dass es ein Alptraum für die Instandhaltung war. Jetzt setze ich alle verwandten Objekte zusammen. Zum Beispiel würde ich
FileModel
,FileViewModel
undFileView
zusammenstellen undSearchModel
,SearchViewModel
undSearchView
zusammenfügen -
Ich würde eine Datenzugriffsschicht erstellen, die für das Lesen / Schreiben aller Daten in / aus der Datenbank verantwortlich ist (ich nehme an, dies könnte Ihre "Entitätsschicht" sein).
-
Bei kleinen Projekten verwende ich meine Entitätsobjekte in der Regel als Modelle, sodass die Modelle Teil meiner DAL-Ebene werden, obwohl ich weiß, dass dies nicht empfohlen wird.
-
Vergessen Sie nicht, mit MVVM sind Ihre ViewModels Ihre Anwendung, nicht Ihre Ansichten. Die Ansicht sollte den Inhalt des ViewModel widerspiegeln und nicht umgekehrt.
-