Conception d'une application MVVM [fermé]
-
27-10-2019 - |
Question
Je suis ici très sceptique quant à la conception de ma demande .....
Voici le diagramme pour mon application
est ce droit ?? ot je dois changer quelque chose ...
Je vais le diagramme .... donner des détails:
Bibliothèque commune: Il contient des classes ErrorCodes, classes utilitaires etc
Enregistreur: cadre Logging
Exception Handling: cadre pour la gestion des exceptions
Voir: Contient: tous les différents XAML pour les vues comme UserControls, Windows, popups
ViewModel. Contient ViewModels pour les vues de Differents
Modèle: Contient contient les différentes couches comme ... couche d'affaires, données Couche d'accès etc
couche entité: Contient l'entité des objets comme des employés, l'entreprise etc ...
boîte de fichier: Son préciser lecture / écriture à partir d'un fichier / base de données ....
La solution
Il est difficile de dire ce que vous essayez de faire avec votre question, mais à mon avis, les couches MVVM devrait ressembler à ceci:
-
Modèle : Les données brutes et la validation des données brutes. Peut-être un
INotifyPropertyChanged
aussi bien, mais rien d'autre -
ViewModel : Business Logic, l'accès aux données, validation avancée en fonction des règles d'affaires, etc
-
Vues : couche d'interface utilisateur Jolie qui permet aux utilisateurs d'interagir avec les ViewModels. Rien d'autre.
Par exemple, un modèle peut avoir une propriété File
, mais il ne devrait pas être chargé de montrer la boîte de dialogue de fichier, enregistrer le fichier sur la base de données, ou de vérifier que le fichier a une extension .pdf. Ce genre de choses est le travail du ViewModel.
Modifier
Je vois la mise à jour que vous avez fait à votre question. Il est un début OK, mais voici les questions que j'ai avec lui:
-
Vos modèles doivent être des objets de données brutes. Ils ne doivent pas contenir quoi que ce soit plus avancé que quelque chose comme la validation de la longueur d'une propriété.
-
Je ne recommanderais pas honnêtement séparer les vues, les modèles et ViewModels en 3 couches distinctes. Je l'ai fait une fois et il est avéré être un cauchemar de maintenance. Maintenant, je mets tous les objets liés ensemble. Par exemple, je mettrais
FileModel
,FileViewModel
etFileView
ensemble, etSearchModel
,SearchViewModel
etSearchView
ensemble -
Je voudrais créer une couche d'accès aux données qui serait chargé de faire tout lecture / écriture des données vers / à partir de la base de données (je suppose que cela pourrait être votre « entité couche »).
-
Pour les petits projets, j'ai tendance à utiliser mon entité Objets comme mes modèles, de sorte que les modèles font partie de ma couche DAL, bien que je sais que ce ne soit pas recommandé.
-
Ne pas oublier, avec MVVM vos ViewModels sont votre application, pas vos vues. Le point de vue doit refléter ce qui est dans le ViewModel, et non vice versa.