Frage

Ich bin hier sehr skeptisch gegenüber dem Design meiner Anwendung .....

Hier ist das Diagramm für meine Anwendung

Diagramm meiner 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 ....

War es hilfreich?

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 und FileView zusammenstellen und SearchModel, SearchViewModel und SearchView 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top