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

C# Discussion :

Utilisation pattern MVC en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut Utilisation pattern MVC en C#
    Bonjour,

    J’essaye d’implémenter le pattern MVC en C#.
    Après plusieurs lectures j’ai créé mes 3 projets (Control, Model, et View = GUI)



    Pour apprendre j’ai fait : une WinForm du GUI contient un DataGridView, qui est censé afficher et rafraichir les données qui proviennent d’une base de données SQLite. J’ai codé les opérations connect/deconnect/insert/update/delete propre à la base SQLite dans le projet Model (Database.cs).
    Mais maintenant, je suis bloqué : dans quelle partie dois-je lancer la connexion à la base ? Comment est-ce que la form va-t-elle se rafraichir dès que ma base sql est modifiée ? J’ai lu que c’était le Model qui déclenchait la mise à jour du GUI. Comment faire cela ?

    Merci bcp.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Personnellement, je trouve que le modele View Presenter est amplement suffisant. Ceux qui veulent me contredire sont les bienvenus.

    Ton viewer doit exposer des methodes de Rafraichissement :
    OnConnected()
    OnAnswer(object datas);
    etc...
    Pour que le présenter puisse lui ordonner de modififer son affichage à chaque evenements.

    Ton présenteur lui s'abonne aux evenements de ta base, qu'il relaye au viewer en ne lui donnant que les infos relatives à l'affichage.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut
    Salut,
    Merci pour ta réponse.

    J'ai avancé un peu (finalement). En fait l'utilise le MVC car sur la base décrite précédemment je vais ajouter pas mal de chose, et à force ca sera plus souple à maintenir.
    Quel est l'avantage du MVP par rapport au MVC ?

    J'ai une question plus précise désormais :
    Une fois que le Modèle a modifié la base de données, il envoie un event au Controller pour lui signaler de mettre à jour la listview Winform.
    Mon problème est : comment, depuis mon Controller, je peux interagir avec ma listview ? En gros j'ai ma fonction Form1.UpdateListViewData() qui doit etre appelé depuis ma classe Controller.cs, mais je sais pas comment faire ?

    Merci !


    edit: mon nouveau model :


  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    je ne connais pas le pattern avec le controller, mais quelque chose me choque malgres tout :

    Pourquoi ta classe controlleur est dans ta dll UI?
    On dirait que ca casse tout l'interret de la chose : pouvoir changer d'interface graphique sans probleme de dépendance.

    Car aujourd'hui c'est une windowsForm, demain ca sera peut etre une page web, que deviendra alors ton controleur?

    Un petit tuto du site qui peut etre te fera voir la chose sous un autre angle :

    http://jab.developpez.com/tutoriels/dotnet/mvppattern/

    C'est d'ailleur par ce tuto que j'ai appris le pattern, merci à son auteur au passage.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    Pourquoi ta classe controlleur est dans ta dll UI?
    En fait je voulais 'rapprocher' le Controller de l'UI, afin de pouvoir accéder à ma winform.. en vain !

    Je suis bloqué quoi

    Je vais regarder ton site merci. Mais le problème sera toujours d'accéder à la Form en cours depuis une autre classe pour rafraichir les infos..

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    donc mes craintes etaient justifiés.

    C'est justement tout l'interret du pattern que de casser la dépendance.

    Ton controleur ne doit en aucun cas savoir comment fonctionne ta form, tout ce qu'il doit connaitre, c'est quelques methodes publiques pour dire à ta form de faire telle ou telle action visuelle.

    Et inversement, ta form ne doit pas savoir ce que fait Controleur, tout ce qu'elle doit connaitre c'est quelques methodes pour lui dire que l'utilisateur a cliqué sur tel ou tel bouton.

    Tout ceci se fait normalement par le biais d'interfaces :

    MesInterfaces.dll :
    IControler
    IViewer

    Controleur.dll:
    Controleur implémentant IControler

    GUI.dll:
    Viewer implémentant IViewer et prennant un IControler comme argument dans son constructeur pour pouvoir parler "à l'aveugle" au controleur.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Tutoriel : Implémentation du pattern MVC
    Par Ricky81 dans le forum MVC
    Réponses: 0
    Dernier message: 11/02/2008, 09h51
  3. Problème d'accessibilité avec le design patterns MVC
    Par radical_bombtracks dans le forum JSF
    Réponses: 5
    Dernier message: 24/07/2007, 13h15
  4. Faut-il combiner Spring avec Struts ou utiliser Spring MVC ?
    Par micanti dans le forum Frameworks Web
    Réponses: 3
    Dernier message: 23/04/2007, 16h31
  5. Pattern MVC et barre de progression
    Par Tiberizz dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 05/12/2006, 18h44

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