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

MVC Discussion :

Comment utiliser concrêtement le design pattern MVC ?


Sujet :

MVC

  1. #1
    Membre à l'essai

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 5
    Points : 12
    Points
    12
    Par défaut Comment utiliser concrêtement le design pattern MVC ?
    bonjour,

    je m'intérèsse à l'architecture MVC (modèle-vue-controleur) mais je n'ai trouvé que peu de docs.
    Je suis donc à la recherche de liens ou bouquins qui expliqueraient en détail le procédé.

    Prenons un cas concret : un client se connecte sur le web et voit toutes ses commandes.

    dans ce cas, si j'ai bien compris :

    * une vue permet de saisir de login/password du client
    * le contrôleur fait appel à la fonction du modèle qui valide la connexion
    * en fonction de cette validation le contrôleur dirige le client ou non vers la vue qui liste ses commandes

    c'est la ou ca se gâte :

    * le modèle fournit alors la liste des commandes au contrôleur
    * qui appelle la vue adéquate avec cette liste en paramètre?

    le problème c'est sous quelle forme est transmise la liste des commandes à la vue par le contrôleur. Si on veut garantir une indépendance de la vue par rapport au modèle je dirai au format XML mais ca risque d'alourdir les choses non?

    ou alors j'ai rien compris, c'est possible aussi...

    merci de m'éclairer

  2. #2
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    Je travaille avec un framework de présentation MVC développé en interne par ma société. Voici comment on procède

    Le controlleur fonctionne comme une machine à état : en fonction de la page courante, de l'action choisie et de son résultat, le controlleur redirige la requête vers une autre url (une autre page).

    La plupart du temps en java les vues sont représentée par une page jsp qui fait appel à un objet java intermédiaire mis à disposition par le controlleur, représentant l'image en mémoire des données du formulaire.

    il est pratique d'associer un objet UI (l'objet intermédiaire) à chaque formulaire ou groupe de formulaire intervenant dans le même processus (modification page 1 à N / recapitulatif/ confirmation). L'objet UI est chargé par le controlleur en fonction de la page à afficher. Il est donc pratique de définir un fichier de correspondance entre UI et page jsp.

    Ainsi une page JSP ne connait que son UI, celui-ci étant mis à jour par le controlleur suivant l'action demandée sur le modèle.

    Il est aussi intéressant de définir un fichier de description des actions possible à partir de chaque vue. On y indique la page de redirection appelée par défaut et en cas d'erreur.

    NB : le framework Struts (Apache) est un bon exemple d'architecture MVC orientée web. De plus il est gratuit.
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Attention Struts est basé sur MVC2.

    La différence entre mvc et mvc2 est le nombre controleurs.
    Autant que de fonctionnalités pour mvc et 1 seul pour mvc2.

    D'autres framework existent :
    Turbine, Cocoon........

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 81
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    le problème c'est sous quelle forme est transmise la liste des commandes à la vue par le contrôleur. Si on veut garantir une indépendance de la vue par rapport au modèle je dirai au format XML mais ca risque d'alourdir les choses non?

    ou alors j'ai rien compris, c'est possible aussi...

    merci de m'éclairer
    Quels langage et technologie utilises-tu ? JSP, PHP, ASP ?

    Voilà le fonctionnement d'un MVC type :
    - modèle : formulaire HTML à remplir
    - contrôleur : validation du formulaire (vérification du nom d'utilisateur et mot de passe)
    - si le form est valide, une session utilisateur est créée :
    - vue : affichage des commandes en utilisant les données de la session en cours (id ou nom d'utilisateur)
    - si le form n'est pas valide :
    - modèle : affichage du formulaire HTML à remplir avec une partie des champs préremplis (ceux qui sont valides)

    Ma solution c'est d'utiliser un objet MVC qui est capable de se construire (modéle), se contrôler (contrôle) et de s'afficher (vue).

    Dans ton cas il y a un mvc_login et un mvc_commande. Le premier s'occupe de la gestion des sessions utilisateurs et le second s'occupe de la gestion des commandes. L'information que tu passes de l'un à l'autre dépend de ta techno, dans le cas de PHP je créé une session. Chose que tu peux faire dans tous les langages : ASP, JSP...

    mvc_login :
    + construire : tous les champs sont vides par défaut mais il peut se reconstruire à partir des données soumises par le formulaire (en cas d'erreur)
    + contrôler : validation du form
    + afficher : afficher le form une fois qu'il est construit

    Le mvc_login ne fait appel à mvc_commande qu'en cas de validation du formulaire. Dans le cas contraire on reste au niveau du mvc_login (re-construire).

    Pour ta question concernant le XML il suffit d'utiliser un template comme Smarty pour PHP. Je suis certain qu'il doit y avoir des templates XML. Par contre niveau performance je pense que ça n'est pas optimum car un moteur de template est déjà très gourmand et un moteur en XML doit être encore plus lent, en effet le template XML se fond dans du HTML/XHTML et donc le parsing du template en est ralenti, il tombe à chaque fois sur des tags HTML/XHTML/XML... Enfin ça dépend de l'implémentation après. Les moteurs de temp utilisent généralement des tags spéciaux comme $$ ou ##, c'est le cas de Dreamweaver par exemple. Pour des questions de performances j'intègre directement mon template dans mon mvc. Après quand on bosse à plusieurs il vaut mieux implémenter des interfaces entres les différents composants du mvc, on se retrouve avec 3 objets au lieu d'1. Il faut aussi séparer le mvc de son template pour qu'un designer puisse le retravailler si nécessaire.

    Attention Struts est basé sur MVC2.

    La différence entre mvc et mvc2 est le nombre controleurs.
    Autant que de fonctionnalités pour mvc et 1 seul pour mvc2.

    D'autres framework existent :
    Turbine, Cocoon........
    Si je me souviens bien le MVC est un framework emprunté à l'industrie/mécanique. Durant mes études d'info je ne me souviens pas en avoir entendu trop parlé. Je trouve ça étrange qu'il n'y ait pas vraiment de référence en la matière. J'ai seulement trouvé 1 ebook sur Amazon : A More Dynamic MVC through ASP.NET and XSLT par Paul Boal. Il coût 8$ donc si vous voulez une petite lecture pour ce soir .

    Pour en revenir au framework j'étudie Fusebox pour PHP en ce moment. Je l'ai découvert après avoir moi-même développé un MVC pour une application PHP sur laquelle je travaille. Un peu comme toi pour ton entreprise.

    Sinon il existe bien etendu le Framework .NET mais je ne le connais pas suffisamment pour vous en dire plus. Il existe de très nombreux ouvrages sur le sujet pour ceux que ça intéressent. Pour Java j'ai seulement entendu parler de Struts (http://jakarta.apache.org/struts/).

    En fait chaque langage ou techno a son framework :
    - ColdFusion : Fusebox
    - WebObjects (Mac) qui est un serveur d'app
    - Java : Struts/Tomcat
    - .NET (Windows)
    ...

    JM. Molina

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut

    Le modèle MVC est un modèle d'architecture qui repose de séparer les données, les traitement et la présentation. Ce modèle peut se révéler lourd à mettre en place. Ceci à cause de la multitude de contrôleurs à implémenter car chaque vue possède son propre contrôleur. Tandis que dans le modèle MVC2, le servlet est unique en classe et en instance.Il prend en charge une partie du contrôle de l'application.
    http://j2ee-firststep.blogspot.com/ voila ce lien pour plus d'informations sur les deux modèles.
    Merci.

Discussions similaires

  1. Design Pattern MVC en Java
    Par JCD21 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 02/03/2012, 13h10
  2. Réponses: 0
    Dernier message: 28/11/2011, 10h34
  3. Utilisation judicieuse du design pattern Factory
    Par Agoudard dans le forum C++
    Réponses: 12
    Dernier message: 17/01/2011, 22h37
  4. 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
  5. [GRASP] Est-ce que j'utilise correctement les design pattern?
    Par Tourix dans le forum Design Patterns
    Réponses: 7
    Dernier message: 21/06/2006, 18h27

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