IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Cohabitation MVVM et Entity Framework


Sujet :

Windows Presentation Foundation

  1. #1
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut Cohabitation MVVM et Entity Framework
    Bonjour,

    Après un long moment d'hésitation, je me suis finalement décidé à me mettre à WPF . J'ai lu un certains nombre de cours et ai finalement décidé d'aborder mon nouveau projet avec un environnement technique composé comme suit:

    • WPF
    • MVVM (avec MVVM Light)
    • Entity Framework (pour le DAL)
    • SQL Server 2012
    • WCF Data Service
    • C#

    J'aurai à gérer 2 chaînes de connexion: une sur une base de données que j’appellerai SharedDatabase (10 tables au total dont 6 ayant environs 3 millions de lignes chacune) et une autre MainDatabase (52 tables au total).
    Voici en simplifié le scénario. Je dois mettre en place une couche service (WCF Data Service) qui recevra en paramètre un numéro saisi et retournera un jeu d’enregistrements au programme appelant.
    Si le numéro passé en paramètre existe, dans le SharedDatabase, un traitement est effectué et les autres données saisies par le user seront enregistrées dans la MainDatabase. Sinon, le numéro sera d’abord enregistré dans le SharedDatabase avant que les autres données saisies ne soient enregistrées dans le MainDatabase.

    J'ai déjà eu à utiliser EF dans deux projets assez costauds, je maîtrise donc un peu EF. Mais mon inquiétude se trouve dans la cohabitation entre MVVM et EF. Vu le scénario à gérer, ce choix technique est-il judicieux? Quels sont les pièges à éviter? Que me conseillerez-vous pour avoir une structure souple, mais testable, facile à maintenir et à faire évoluer.

    Merci d'avance pour vos apports. N'hésitez surtout pas à me demander plus de détails si nécessaire.
    N'oubliez pas le tag et

  2. #2
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Dans le scénario que tu décrit seul le service est utilise, peut tu préciser a quelle moment intervient WPF ? Est-ce dans une application cliente qui consome ton service WCF ?

  3. #3
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut
    Citation Envoyé par champsy_dev Voir le message
    Dans le scénario que tu décrit seul le service est utilise, peut tu préciser a quelle moment intervient WPF ? Est-ce dans une application cliente qui consome ton service WCF ?
    Tout à fait; je dois attaquer le service WCF Data avec WPF. Le client WPF devra utiliser le service pour retourner les données venant de la base de données SharedDatabase. Cependant, le service n'interviendra pas dans l'enregistrement des données dans le MainDatabase. Pour ce scénario, le client WPF devra exploiter l'edmx. Merci.
    N'oubliez pas le tag et

  4. #4
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Si il n'y as aucune modification de donnée (Insert/Update/Delete) de la part de ton service (donc pas de validation), je dirais qu'il n'est pas nécessaire d'ajouter une couche métier.

    Dans ton cas je créerais simplement un ViewModel par type d'entité de ton DbContext SharedDataBase dont le modèle seras une entité du même type (paramètre dans le constructeur du ViewModel).
    Un petit service (au sens service .net pas un service WCF bien sur, en gros une classe static ,un Singleton, ...) capable d'instancier des ViewModels à partir de résultat de Query Entity et le tour est jouée.

    Voir si tu est extrémiste te servir directement des entités comme ViewModel, si il n'y as pas d'opération de modification de donnée tu n'as même pas à implémenter INotifyPropertyChange, c'est moins propre mais sa fait mon de code à maintenir, dès fois il faut faire des choix.

    En revanche je me pose la question pourquoi un accès via un service pour la lecture et un autre accès pour l’écriture directement en SQL même si se sont deux bases de données différente ... mais tu as certainement une bonne raison

  5. #5
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut
    Citation Envoyé par champsy_dev Voir le message
    Si il n'y as aucune modification de donnée (Insert/Update/Delete) de la part de ton service (donc pas de validation), je dirais qu'il n'est pas nécessaire d'ajouter une couche métier.
    Comme je l'avais expliqué, il y aura une insertion de données via le service WCF dans le cas où le numéro saisi ne figure dans la SharedDatabase. C'est la seule opération de modification devant être effectuée par le service WCF.

    Citation Envoyé par champsy_dev Voir le message
    En revanche je me pose la question pourquoi un accès via un service pour la lecture et un autre accès pour l’écriture directement en SQL même si se sont deux bases de données différente ... mais tu as certainement une bonne raison
    En fait, le WCF Data Service (branché sur la SharedDatabase) mets à disposition des données venant d'une autre source mais dont j'ai besoin pour les traitements au niveau de la base MainDatabase. Plus tard, le service servira aussi à trois autres applications: une en Windev, une en VB.Net et une autre en PHP. Mais seul le client que je mettrai en place en WPF sera autorisé à effectuer l'opération d'insertion de données via le SharedDatabase.
    Mais, le gros des traitements se fera sur la base MainDatabase: des opérations CRUD, édtions de rapports statistiques, etc.
    Je ne sais si j'ai été assez clair ; autrement, n'hésites surtout pas à me demander plus d'info.

    Merci pour tes apports.
    N'oubliez pas le tag et

Discussions similaires

  1. MVVM et Ado.net entity framework
    Par overci dans le forum Silverlight
    Réponses: 0
    Dernier message: 30/04/2014, 18h34
  2. Design Pattern mvvm et Entity Framework
    Par Yamour dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 03/02/2014, 17h24
  3. Réponses: 4
    Dernier message: 28/03/2013, 13h26
  4. Réponses: 2
    Dernier message: 18/02/2012, 21h46
  5. Faire cohabiter plusieurs versions du framework ?
    Par Bleuarff dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 14/03/2007, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo