Partage
  • Partager sur Facebook
  • Partager sur Twitter

Questions architecture projet C# wpf Prism MVVM

    26 novembre 2023 à 2:04:29

    Bonjour à tous,

    Je développe actuellement une application en C# wpf en utilisant le framework Prism dans le strict respect du pattern MVVM (ou du moins j'essaie :D).

    Je vais être assez honnête en disant que j'ai peu d'expérience avec ce pattern donc j'ai quelques questions sur l'architecture qui peuvent paraître bateau.

    L'application nécessite des référentiels de données pour fonctionner. Ils sont chargés via des fichiers csv ou xml ou des lectures directes dans une base de données via des classes de services. J'ai crée une interface appelée IRespositoryLoader qui met à disposition un jeu de fonctions et propriétés pour cela et chaque type de données (ou objet fonctionnel) dispose de sa classe service avec son interface qui va bien pour le découplage.

    Initialement j'avais stocké chaque référentiel de données (un objet de type List) dans sa classe service et il était disponible en statique dans l'application. C'était pas terrible alors j'ai maintenant des getter / setter sur mes référentiels qui sont maintenant privés.

    L'interface dont hérite toutes celles de mes services possèdes 2 fonctions (en réalité il y a toutes les variantes mais on va rester simple) GetRepository et SetRepository qui prennent un type T.

    1) Est-il pertinent de garder le type T et devoir faire le transcodage quand j'utilise mes fonctions ou pour (peut être) gagner en perf, créer ces fonctions dans chacun des interfaces de mes services mais cette fois ci avec les bons types d'entrée / sortie (en gros je ne casterai plus de l'objet source en T lors de mon setter et l'inverse avec le getter) ?

    2) L'application comporte des datagrid donc j'ai créé autant de modèles que de datagrid à remplir (chaque datagrid correspond à un objet fonctionnel donc ça a du sens). La première colonne du datagrid est une coche qui indique si la donnée est utilisée ou pas mais en soit elle ne fait en rien partie de mon modèle de données sur le plan de ma base de données (ce n'est pas un champ).

    Faut-il que je gère la logique de binding de cette coche dans le même modèle que mes données ou il faut que je crée autre chose pour être plus "propre' ?

    3) Un question cette fois ci en rapport avec Prism. On a la possibilité d'enregistrer dans le catalogue des services sous diverses formes. Pour mon appli, j'avoue avoir été tenté par déclarer tous mes services d'accès aux données via prism en singleton seulement, vue que mes services ont des références entre eux ben je ne sais pas si le singleton géré par Prism aurait fonctionné en place de celui que j'ai implémenté moi même via une classe Lazy. Si quelqu'un à une expérience là dessus, je suis preneur. De même pour les perf de la classe Lazy. Ou même sur la gestion des référentiel (stockage, utilisation, etc...).

    Merci d'avance pour vos lumières...

    -
    Edité par nimizrule 26 novembre 2023 à 2:06:11

    • Partager sur Facebook
    • Partager sur Twitter

    Questions architecture projet C# wpf Prism MVVM

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown