Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-12-2008 01:16:25

Eric
Nouveau membre
Date d'inscription: 15-12-2008
Messages: 2

Interet du MVC

Bonjour à tous

C'est mon premier post sur ce forum et désolé mais je vais etre un peu provoque ...

Voila je dirige le dev d'un assez grand site francais et nous prévoyons prochainement une refonte globale.
Du coup je demande à mon equipe de dev de faire des recherches pour me proposer un bon framework et des bonnes nouvelles methodes de dev.

L'un d'entre eux me dit "nous devons utiliser le MVC sur le prochain site". Je lui dit ok pas de problème explique moi les avantages de MVC pour nous ?
Et la il est un peu sec si ce n'est un "c'est la tendance du moment", alors je fais des recherches perso je troue pas mal de choses mais rien sur les véritable avantages du MVC.

Nous utilisons en ce moment du php avec un moteur de template donc nous séparons le code de la présentation et je ne vois pas d'avantage immédiat au MVC et surtout cela me parrait très complexe à mettre en oeuvre (et pas facile pour moi a comprendre )

Alors je sui sur que certain d'entre vous me trouverons et me démontrerons rapidement l'interet et les avantages du MVC

Merci d'avance

Eric

Hors ligne

 

#2 15-12-2008 09:31:52

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Interet du MVC

Bonjour,

Ce sujet est propice à discussion smile

Chacun trouve son intérêt dans différentes architectures.

Les architectures modulaires de type MVC répondent avant tout à une "convention" assez répandue.
Cela permet de structurer ses applications selon certaines règles et d'uniformiser les méthodes de développement entre les différents acteurs du projet.

Cette architecture pousse un peu plus loin l'idée de séparation des couches, en ajoutant la couche de données.

En gros, les "modèles" définissent les données (le plus souvent des tables et leurs relations en BDD, dans un monde idéal, un modèle = une table), les controlleurs sont chargés de récupérer les données et de les configurer pour les envoyer à la vue et enfin rendre cette dernière sur la sortie.

Zend utilise aussi des conventions de nommage intéressantes, ce qui permet de structurer "physiquement" son application de façon logique.

Première chose, on constate qu'il n'est ici pas du tout question de template. Certains framework, comme Zend, ajoute en plus cette notion en ajoutant un système de "layout" qui est plus ou moins apprécié (dans la plupart des cas, il est largement suffisant).

Répondre au modèle MVC ne remplace donc pas l'utilisation d'un moteur de template. Il existe d'ailleurs pas mal de ressources qui expliquent comment utiliser certains moteurs de templates avec Zend.

Il ne faut aussi pas confondre MVC et framework. Zend utilise et recommande une (leur) architecture de type MVC, mais ce n'est pas forcément lié.

Il est très difficile de déterminer les avantages de l'utilisation de ce type d'architecture, et encore plus quand on utilise un framework. Tout se confond.

Pour moi, la question est surtout de savoir ce qu'apporte un framework, le reste étant plus ou moins implicite.

C'est lorsqu'on rentre dans le vif du sujet et qu'on découvre toutes les possibilités qu'offrent un framework comme Zend que tout prend son sens.

Attention cependant, certaines connaissances sont quand même nécessaires pour bien aborder le sujet. Une certaine maitrise de la POO, et la compréhension de certaines notions comme les Design Patterns, les singleton, etc.

Lorsqu'on commence à bien comprendre tous les aspects qu'offre la POO dans PHP (car beaucoup de personnes ne voient pas l'intérêt au premier abord), et qu'on voit ce que proposent des sociétés comme Zend. On se rend compte qu'on est vraiment capable de proposer du pro, pour nos clients, mais aussi pour nous-même.

Si je dois donner quelques avantages, en séparant les deux problématiques, je dirais :

MVC :

- Architecture claire
- Projets bien plus faciles à coordonner entre les différents acteurs (codeur, monteur/intégrateur, etc.)
- Chaque partie est plus facile à maintenir indépendamment (modèles = données, controlleurs, et vues)

FRAMEWORK ZEND :

- Utilisation du modèle MVC
- Contrairement à ce que certains pensent, une bonne souplesse grâce à toutes les interfaces et les classes abstraites qui sont proposées
- Un projet Open Source, donc gratuit, proposé par une société sérieuse sous une licence qui assure sa pérennité
- Du php, mais PRO

Pour le reste, ça ne sert pas à grand chose d'entrer dans le détail, il faut s'y essayer pour comprendre soi-même les avantages et les inconvénients.

Pour conclure, je dirais à ceux qui hésitent de faire le test sur un projet (plus ou moins complexe), et je pense que suite à ça, la solution sera adoptée.


A+ benjamin.

Dernière modification par Delprog (15-12-2008 09:33:45)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 21-12-2008 16:03:13

ymortier
Nouveau membre
Date d'inscription: 21-12-2008
Messages: 2

Re: Interet du MVC

Bonjour

Tout d'abord, le MVC est loin d'être une "tendance". Ce modèle d'architecture a été conçu et implémenté pour la première fois dans les années 1980 avec le langage Smalltalk. Il est largement utilisé dans les applications JEE ou Java Desktop.

Le MVC est "juste" un modèle de conception qui sépare Données, Logique et Présentation. Il est donc tout à fait possible de l'implémenter sans l'aide d'un framework. Si ça se trouve, vous en faites sans le savoir !

L'intérêt d'utiliser un framework est la diminution du coût de la mise en place du modèle MVC. L'intérêt d'utiliser un Framework Open Source et largement utilisé avec une communauté active est :
- robustesse du framework (il est très éprouvé, et si la communauté le maintenant est active, les corrections d'anomalies sont rapides)
- facile de trouver des ressources opérationnelles (il est plus facile de trouver un développeur connaissant le Framework Zend qu'un développeur connaissant votre framework maison ^^)
- facile de trouver de la documentation

Après je ne nie pas qu'un Framework maison a également ces avantages. Pourquoi pas un Framework maison basé sur un/des frameworks existants ? wink

Pour ma part je n'imagine même pas implémenter une application (quelque soit la technologie utilisée) sans séparé les Données, la Logique et la Présentation. MVC et MVC2 sont des modèles éprouvés qui permettent cette séparation.

Donc l'intérêt du MVC ? Séparation des Données, la Logique et la Présentation (ce qui introduit de nouvelles possibilités, cf lien ci dessous).

Pour appuyer mes propos ; http://www.zdnet.fr/builder/architectur … -39000778c

Enfin, soit votre recherche a été trop succinte soit votre question n'est pas assez précise tant les documents sur le MVC sont nombreux sur le ouaibe !

Yann

Hors ligne

 

#4 22-12-2008 00:12:35

Eric
Nouveau membre
Date d'inscription: 15-12-2008
Messages: 2

Re: Interet du MVC

Merci pour ta réponse Yann

En fait je pense que ma question a été mal posée.

L'utilisation d'un framework et de MVC  sont deux choses bien distincts pour moi.

Nous séparons déja le code de la présentation en utilisant un moteur de template.

Pour moi nous avons bien une utilisation qui se rapproche du MVC actuellement avec le metier qui se situe dans nos classes, le process qui se trouve dans les autres fichiers php et la présentation dans le template. En partant de ce constat je ne vois pas du tout ce que peux nous apporter un model MVC qui se trouve dans un framework comme ZF. Je trouve sa manipulation bien plus complexe que ce que nous avosn aujourd'hui pour un gain que je n'arrive pas a identifier (pour nous en tout cas).

J'espère avoir été plus clair dans mon interrogation sur ce message

PS : ton article est très interessant

Eric

Hors ligne

 

#5 22-12-2008 06:40:45

ymortier
Nouveau membre
Date d'inscription: 21-12-2008
Messages: 2

Re: Interet du MVC

Bonjour

Petite précision : je ne suis pas l'auteur de l'article ! Mais il n'en reste pas moins intéressant big_smile

Pour information, je ne travaille pas du tout en PHP. Je maintiens seulement un projet Open Source qui s'en sers donc je m'intéresse énormément aux technologies tournant autour du PHP et, il faut l'avouer, PHP souffre d'une très mauvaise réputation alors que son modèle objet depuis la version 5 est suffisamment complet pour en faire un langage industriel (surtout que le langage PHP bénéficie d'avantages qu'on ne trouve pas dans un langage comme Java).

Pour revenir à votre problème. Si le framework apporte plus d'inconvénients que d'avantages, il est, bien sûr, conseillé de ne pas l'utiliser.

Je pense que ça résume bien smile.

Après si c'est juste un problème de compréhension du framework... enfin, pour ma part, j'ai toujours pensé qu'un projet pilote est nécessaire pour tester une technologie (et savoir si elle va nous servir). Le problème est que ça coûte des sous est que le retour sur investissement n'est pas garantit. Même si avec le framework Zend, le risque est minime ! (A mon humble avis)

Je viens de faire des recherches sur le web et il est vrai que ce n'est pas marrant de trouver des ressources qui expliquent le fonctionnement à un niveau abstrait. On trouve essentiellement des exemples de codes et, a moins d'avoir un interpréteur PHP intégré au cerveau, il n'est pas évident de voir les bénéfices de la mise en place du modèle MVC par l'intermédiaire d'un framework.

J'ai donc pris l'initiative - au combien dangereuse - de tenter de décrire le modèle MVC et son implémentation avec le Framework ZEND. Les exemples sont grossiers.

Tout d'abord, le modèle MVC tel qu'il est utilisé pour le Web (ou, en tout cas, tel que je l'utilise(ais, je ne fais plus de développement Web tongue) ) :

http://img211.imageshack.us/img211/337/webmvctl6.png

Voilà, un exemple très abstrait du déroulement des actions avec le modèle MVC.

Un modeste exemple concret : édition d'un compte.

http://img362.imageshack.us/img362/2503/editaccountmvcet4.png

Tada !

Donc, sans l'utilisation de framework voici, en gros, la charge de travail :
* Développement du Front Controller pour traiter chaque requête et dispatcher vers l'action adéquate.
* Développement de chaque action en utilisant une "API maison" (pour faciliter le travail du Front Controller)
* Développement du modèle et des accès en base de données
* Développement des vues HTML (dans votre cas, aidé par un moteur de templates)

Voyons maintenant le modèle MVC implémenté à l'aide du Zend Framework. IMPORTANT !! Je n'ai jamais écris d'applications avec le Zend Framework. Il s'agit, ici, que de théorie. Merci d'apporter des compléments ou de me corriger en cas d'erreur(s). Ou alors, confirmer mes propos pour rassurer les éventuels lecteurs (autant être honnête ^^). L'exemple utilise Zend_Db_Table comme modèle, mais nous aurions très bien pu faire un autre choix.

http://img376.imageshack.us/img376/7901/zendmvcat0.png

Ce cas montre l'exécution de l'action 'xxx' par le contrôleur nommé 'zend'

Le framework apporte :
* Un front controller largement configurable.
* Une API d'action pouvant manipuler la vue qui sera affichée et modifier/requêter le modèle.
* Une API de formulaire permettant de facilement initialisé les données à afficher, récupérer les données saisies, valider les données saisies...
* D'autres choses que je ne connais pas tongue (mais qu'on peut facilement trouver dans la documentation).
En d'autres termes, le développeur s'affranchit d'un tas de soucis technique et peut se concentrer sur le métier de l'application.
J'ai bien aimer cette introduction au framework Zend : http://g-rossolini.developpez.com/tutor … k/debuter/

Pour moi, utiliser un framework, c'est surtout pour gagner en :
* qualité : il y a très peu de chances qu'on fasse mieux en interne.
* productivité : le framework apporte des briques de bases de l'application.

Si on n'a aucun de ces deux avantages en utilisant le framework, autant s'en passer ! Mais, pour le coup, je pense que le jeu en vaut la chandelle. Si c'est pour de nouveau développement, autant évaluer sérieusement les deux points sus cités. Pour la migration d'une application existante qui est déjà conçue sur de bons patterns architecturaux, je n'aimerai pas devoir prendre une décision big_smile

Un autre lien : http://framework.zend.com/about/overview même si on se doute que ce n'est pas très objectif big_smile

Yann

Hors ligne

 

#6 27-12-2008 20:33:53

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Interet du MVC

Le MVC n'a rien à voir avec un framework.
Tu peux utiliser un framework sans pour autant faire du MVC, et ce même si ton framework prend en charge le MVC.
Inversement tu peux faire du MVC sans utiliser de framework.

L'intérêt du MVC est, au moins, double :
1) Cette architecture permet de dissocier clairement les traitements métiers, les traitements d'affichage et l'enchaînement des étapes.
2) Le MVC est largement documenté et utilisé sur un grand nombre de plateformes et de langages, et ce depuis plus de 20 ans, donc beaucoup de développeurs connaissent déjà et la charge de formation sera moindre pour intégrer de nouveaux informaticiens.

Il y aurait beaucoup d'autres choses à dire. Par exemple que le MVC avec plus de 20 ans de recul, repose sur des mécanismes parfaitement connu et maîtrisés qui rendent un peu absurde d'aller inventer un truc à sa sauce.
(sauf pet être sur des projets devant répondre à des besoins particuliers comme sur des systèmes embarqués par exemple, mais ça reste à voir...)

Enfin, le ZF qui permet de profiter de son intégration du MVC avec beaucoup de classes de bonnes qualités.
Le seul bémol...la doc, mais ça vient, doucement.

Hors ligne

 

#7 28-12-2008 09:36:48

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Interet du MVC

oui je peux ajouter que c'est une démarche qui veint assez naturellement
J'ai croisé un grand nombre de code (PHP) issu de partout.

et même s'il n'est pas formalisé ni explicite on voit très nettement dans beaucoup se dessiner le pattern MVC. beaucoup le font sans même savoir que MVC existe.

si on prend une démarche de débutant en php on commence par un script puis deux puis plusieurs. on vois alors apparaitre des fichiers de fonction ou de bloc de code, puis très souvent l'étape suivante c'est de placer le html dans des fichiers ou des fonction à part. puis pareil avec l base de donnée

et on en viens assez naturellement à une structure de script quasiment semblable. inculde d'un bloc pour la sécurité, include de la connexion lecture des paramètres, utilisation de fonction de traitement include d'un template ou de code phtml

à ce puis là le MVC n'est vraiment pas loin
et pourtant les personne qui font ça n'ont pour la plus part aucune idée de ce qu'est le MVC.

A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages