Vous êtes sur la page 1sur 19

Les principaux Framework appartient l'architecture MVC seulement. MVC est trs facile et simple mettre en uvre.

e. MVC signifie Model View Controller. Si vous avez une connaissance du concept alors seulement vous pouvez aller de l'avant avec l'architecture MVC. Quelques tapes simples que vous devez tre suivi. 1. Conserver le nom de la page principale index.php (par la page d'excution par dfaut) 2. crer deux dossiers le VUE et le MODEL. 3. Le VUE est un dossier qui contient tous les modles seulement. 4. MODLE est un dossier qui contient toutes les donnes de base des fonctions paramtre sage (comme INSERT, UPDATE, slectionner et supprimer). 5. Pour le contrleur, il faut crer un dossier, nommer comme CONTROLLER, vous devez aller chercher vos donnes partir de bases de donnes et montrer via un modle existant. Chaque site web a 2 choses importantes seulement, >> Rcuprer les donnes partir de bases de donnes >> Montrer que la conception de modle

Technologies utilises : Langages de programmation - C / C + +, PHP Plate-forme de dveloppement - Red Hat Linux 9 DOM programmation en C + + et PHP Architecture plug-in IDE dans la conception Dveloppement bas sur le Web en utilisant HTML et PHP Moteur PHP, le serveur web Apache PEAR :: SOAP pour PHP bote outils de services Web UML

Modle-Vue-Contrleur: Le Framework Struts est trs design pattern orient. Une fois que nous sommes familiers avec le modle, il est facile appliquer ses concepts divers projets. L'ensemble du Framework Struts est bas sur le Modle-Vue-Contrleur (MVC). Parfois, on peut aussi entendre ce dnomm l'approche Model 2, ou MVC2, mais nous allons l'appeler MVC. Le modle MVC est une faon de prendre une application et la brisa en trois parties distinctes:

1. modle 2. vue 3. contrleur Le motif lui-mme a t dvelopp l'origine pour travailler dans l'interface utilisateur graphique (GUI) d'espace, mais il est utilis avec succs dans de nombreuses applications Web fait la plupart. L'avantage d'utiliser le modle MVC est qu'il n'existe pas de modle d'affaires ou un traitement spcifique au sein de la prsentation, ou sur Affichage, composant lui-mme. L'inverse est galement vrai, c'est dire qu'il n'est pas logique de prsentation dans les couches du modle et d'affaires. Cela amliore composante rutiliser l et amliore galement la possibilit de changer les implmentations d'un calque avec un effet minimal sur les autres couches. Ceci est un point cl et l'un des principaux avantages de Struts. Une vue d'ensemble des composantes du modle MVC est illustre la figure ci-dessous:

MVC ? MVC signifie Model View Controller ou en franais Modle Vue Contrleur. Cest un paradigme de programmation qui vous aide mieux dissocier les diffrentes couches de votre projet.

Modle : le modle est lensemble des lments qui vous permettent de manipuler vos donnes (XML, SQL, etc.).

Vue : la vue est le rsultat final que vous voulez obtenir (la page web). Contrleur : le contrleur gre les diffrentes requtes. Cest le contrleur qui va rechercher ou mettre jour les donnes et qui les envois vers la vue.

Sur le schma ci-dessus un internaute se connecte sur un site web. Le contrleur est alors appel pour traiter la demande de linternaute. Pour cela, le contrleur utilise (dans certain cas) le modle sil y a des donnes manipuler. Ce dernier manipule les donnes dune base de donnes, dun fichier XML ou encore dun fichier Excel. Le contrleur renvoi ensuite les informations ncessaires la vue qui est affiche au client. MVC est trs souvent utilis et de nombreux Framework comme PHP Zend permettent de limplmenter facilement.

Les Framework pour les applications web


Les Framework de dveloppement web permettent gnralement une sparation logique d'une application selon le concept propos par le modle MVC (Modle/Vue/Contrleur). Le Framework le plus utilis dans cette catgorie est Struts. Certains diteurs proposent des Framework qui s'appuient sur un Framework open source et facilitent leur utilisation en proposant des fonctionnalits ddies dans leur IDE (Oracle ADF avec Jdeveloper, Beehive avec Weblogic Workshop, ...). L'utilisation d'un Framework web permet de faciliter le dveloppement et la maintenance volutive d'une application web. Les Framework utilisent ou peuvent tre complts par des moteurs de Template qui facilitent la gnration de page web partir de modles.

Les Framework les plus rcents (tel que Java Server Faces) mettent en uvre l'utilisation de composants ct serveur pour faciliter les dveloppements (modle vnementiel et dveloppement graphique)

L'architecture pour les applications web


Le modle MVC Le modle MVC (Model View Controler) a t initialement dvelopp pour le langage Smalltalk dans le but de mieux structurer une application avec une interface graphique. Ce modle est un concept d'architecture qui propose une sparation en trois entits des donnes, des traitements et de l'interface :

le Modle reprsente les donnes de l'application gnralement stockes dans une base de donnes la Vue correspond l'IHM (Interface Homme Machine) le Contrleur assure les changes entre la vue et le modle notamment grce des composants mtiers

Initialement utilis pour le dveloppement des interfaces graphiques, ce modle peut se transposer pour les applications web sous la forme d'une architecture dite 3-tiers : la vue est mise en uvre par des JSP, le contrleur est mis en uvre par des servlets et des Javabeans. Diffrent mcanismes peuvent tre utiliss pour accder aux donnes. L'utilisation du modle MVC rend un peu plus compliqu le dveloppement de l'application qui le met en uvre mais il permet une meilleure structuration de celle-ci.

Le modle MVC 1 et 2 (Model View Controller)


Ce n'est peut-tre pas le concept le plus important dans Spring, dans la mesure o il a t largement dmocratis par Struts. Cependant encore trop de programmeurs ont tendance mlanger toutes les couches, mettre des traitements mtiers dans la jsp, ou encore des servlets dans lesquelles ils mlangent allgrement html, javascript, mtier et bien d'autres choses. Etant donn que l'un des objectifs les plus importants de Spring est la sparation des couches, la partie MVC et le concept d'un point de vue gnral me semblent indispensables. Que vous utilisiez Spring, webworks, Struts ou autre chose, peu m'importe du moment que vous spariez les couches. Comme cit prcdemment l'objectif est de sparer les couches et les technologies. A cette fin, le paradigme se divise en trois parties:

Le modle (Model) : C'est la reprsentation des informations lies spcifiquement au domaine de l'application. C'est un autre nom pour dsigner la couche mtier. La couche mtier ou plutt la partie qui reprsente l'information en respectant une structure lie au domaine d'activit, celle qui effectue des calculs ou des traitements amenant une plus value sur l'information brute. Par exemple le calcul du total des taxes sur un prix hors taxe ou encore des vrifications telles que: Y a t-il encore des articles en stock avant d'autoriser une sortie de stock. La vue (View) : Cette couche ou ce module effectue le rendu de la couche mtier dans une forme qui est comprhensible par l'homme, par exemple une page html. Attention souvent le concept MVC est associ une application web mais ce n'est pas obligatoire: en effet le framework Swing qui permet de produire des interfaces utilisateurs "sous forme de clients lourds" permet galement d'implmenter MVC. Le contrleur (Controller) : Ce module organise la communication entre les deux premiers. Il invoquera une action dans la couche mtier (par exemple rcuprer les donnes d'un client) suite une action de l'utilisateur (cliquer sur le lien : voir dtails du client) et passera cette information la vue (jsp qui affiche les dtails).

La couche d'accs aux donnes est ignore ici parce que sous jacente la couche mtier. Alors par piti cessez de faire appel vos Data Source dans les jsp ou mme dans le contrleur. Tout d'abord cela vous permettra de pouvoir debugger et tester plus facilement le code en l'isolant de la partie affichage. En effet la plupart des bugs sont des problmes avec l'interface donc ce n'est pas la peine de compliquer encore la donne avec des bugs mtiers ou d'accs aux donnes. De plus le jour o votre patron vous demandera de rendre l'application compatible avec les tlphones portables vous n'aurez qu' remplacer la partie Vue par une vue qui supporte wml par exemple. Dans la suite de cet expos je partirai de l'architecture suivante:

Voyons l'interaction entre les diffrents composants dans le cadre du type 1.

Le problme de ce design pattern est la partie concernant les notifications de changement dans le modle, en effet si ce point ne pose pas de problme dans le cadre de swing par exemple, o les composants de la vue sont connects et capables d'intelligence il n'en est pas de mme pour les applications web. Dans le cadre d'une application web c'est le design pattern MVC2 qui est utilis car il ne ncessite pas l'emploi du design pattern observer (celle qui permet la notification sur les composants) qui observe le modle et permet la vue de ragir pour se mettre jour.

On remarque que c'est le contrleur qui devient le module central. De fait la vue peut prsent se contenter d'afficher sans aucune intelligence. Cependant mme si le design MVC permet de mieux sparer les couches, il ne faut pas oublier qu'il ne s'agit pas de la faon de procder la plus intuitive, elle induit donc d'investir du temps dans la rflexion sur la faon de sparer les diffrentes couches et technologies et surtout de bien rflchir dans quelle couche s'effectue quel traitement. De plus les Framework gnrent souvent plus de fichiers et naturellement plus de configuration. Ce surplus de complexit est cependant bien contrebalanc par la flexibilit suprieure, la plus grande fiabilit, une plus grande facilit pour tester et dbugger (puisque que l'on peut tester les bouts un un).

Modle-Vue-Contrleur (MVC)
Publi le 8 octobre 2009 par Thibaut

Le Modle-Vue-Contrleur ou MVC a pour objectif la sparation des couches et des techniques afin de structurer un projet de dveloppement informatique. Pour cela, le modle MVC est compos de trois parties :

Le modle reprsente lensemble des donnes et des traitements de votre application. Cest lensemble des classes, librairies et fonctions ncessaires au fonctionnement de votre application, que ce soit lenregistrement de vos donnes dans une base de donnes ou la

modification de fichiers. Dune manire plus gnrale, le modle dfinit le comportement gnral de lapplication dun point de vue mtier. On appelle galement cette partie la couche mtier de lapplication. La vue est linterface qui va interagir avec lutilisateur. Dans lapplication, cela se traduit par du HTML renvoy au navigateur. Dans la plupart des architectures MVC de type Web, lutilisation de Javascript ou de tout autre langage excut ct client est une entorse au modle MVC strict. Ainsi, il nest pas rare davoir du code excut pour la vrification de donnes avant lenvoi au contrleur. Linterface dispose dun ensemble dactions possibles se traduisant le plus souvent par une requte HTTP envoye au serveur. Le contrleur est le lien entre le modle et la vue. Cest lui qui est charg de traiter les diffrents vnements reus par la vue (des requtes http) et de les rediriger vers le traitement mtier adquate. Il ne ralise aucun traitement sur les donnes. Le cas chant, le contrleur rcupre les donnes retournes par le modle, se charge de les transfrer la vue avant de la renvoyer au client (navigateur).

Le modle MVC vient ainsi sintgrer au sein dune logique de sparation des couches applicatives. La partie contrleur de modle sinterface avec lapplication mtier qui repose le plus souvent sur une architecture 3-tiers

Exemple de modle MVC

Logique MVC dans le dveloppement web

Quand on dveloppe des applications lourdes et quon travaille en quipe, une organisation assez stricte du code savre rapidement indispensable. La logique MVC est un modle dorganisation bas sur 3 lments :

Modle, Vue et Contrleur.

Le modle est la partie qui soccupe des donnes. En dveloppement PHP/MySql, il est gnralement compos des classes reprsentant les tables de la base de donnes. Les vues sont les interfaces utilisateurs. Dans le cas du dveloppement web, ce seront toutes les sorties JS/XML/HTML. Et enfin les contrleurs sont le pont entre le modle et les vues. Ils reoivent les requtes de lutilisateurs et appellent les fonctions du modle et les vues en consquence.

Avec ce type dorganisation, on peut aisment partager le travail entre les designers, la base de donnes et lorganisation des pages.

De plus, une fois lapplication en place, il est facile de modifier un de ces lments sans avoir toucher aux autres. Et comme le code est rutilisable, il est trs facile et rapide dcrire de nouvelles pages. Si la logique MVC semble attirante, il faut quand mme se mfier et bien rflchir avant de lutiliser : Correspond elle vraiment mes besoins ? Toute lorganisation du code ncessite des traitements additionnels comme la transformation des donnes en objets et en tableaux. Cet ajout de code a pour consquence des pages plus lentes afficher (hors utilisation du cache) et une consommation de ressources plus importante. Avantages :

Sparation des comptences (design, base de donnes, application) Simplicit de mise jour Vitesse de cration de pages

Inconvnient :

Pages plus lentes afficher (hors cache) Plus de ressources consommes Dveloppement initial plus long

Le modle MVC est constitu des lments suivants : Modle : reprsente la couche mtier dune application. Vue : constitue les lments dinterface utilisateurs : pages web, contrles Web Contrleur : permet de piloter lapplication, il interprte les actions raliser et ordonne leur excution (lecture, traitement de donnes et mises jour). Ci-dessous un schma dtaillant la relation entre les diffrentes couches :

Bonnes pratiques

Pourquoi choisir ASP.NET MVC?

Un projet Web dvelopp avec ASP.NET MVC a pour avantage dtre bien structur en proposant une architecture qui fait une sparation nette entre la couche du rendu HTML et celle des donnes. Une telle architecture permet une meilleure testabilit de lapplication et la rend extensible plus facilement. En effet, lors de la cration dune application ASP.NET MVC un projet de test est gnr automatiquement. ASP.NET MVC met laccent sur le rfrencement naturel, une problmatique non ngligeable dans le monde du Web. Un site bien rfrenc par les moteurs de recherche amliore sa visibilit sur la toile et rduit ses cots publicitaires. ASP.NET MVC, offre par son systme de routage un mcanisme pour la gnration durl dcores. De plus, Microsoft met notre disposition un ensemble doutils et moyens pour amliorer la productivit dun projet MVC notamment avec NuGet ,le scaffolding / Template T4 pour la gnration de code et Razor le nouveau moteur de vue.
Bonnes pratiques

Dmarrer un projet web ASP.NET MVC est une tche assez simple nanmoins le dmarrer correctement en est une autre. Durant la session, une liste de recommandation a t fournie lors de la mise en place et dveloppement dune application web MVC :

Eviter de laisser la route par dfaut au niveau du fichier global.asax et ajouter des contraintes au niveau des routes en utilisant les expressions rgulires, des valeurs spcifiques afin de matriser les points daccs au site web. Respecter le design pattern MVC en gardant une sparation nette entre le modle de donnes et la vue. Une solution propose serait de crer un projet part pour la couche Business et accs aux donnes. Favoriser lutilisation des vues types Favoriser lutilisation des Data Annotation qui permettront de grer dune faon dclarative un ensemble daction comme la validation de donnes, Utiliser la validation des donnes et crer aussi ses propres validateurs Favoriser lutilisation des filtres qui va permettre le rajout dune faon dclarative dune fonctionnalit transverse lapplication comme par exemple lauthentification. Il existe 3 types de filtres : Autorisation Filter, Exception Filter, Action et Result Filter. A noter quil est possible de dfinir ses propres filtres. Crer ses propres HTML Helpers pour factoriser le code.

Exemple de structuration/architecture dun projet MVC


La deuxime partie de la session tait consacre la prsentation dun exemple sur une architecture type dans un projet. Bien sr, il ne faut pas appliquer la lettre ce qui est propos sachant que la dfinition de larchitecture dun projet dpend de plusieurs facteurs li au projet lui-mme. Je citerai ci-dessous les quelques points que jai pu noter :

Privilgier le design pattern SOLID Utilisation dun projet Bootstrapper pour la gestion de la partie configuration dune application

Sparation complte entre le code de linterface utilisateur (Vue) et le code fonctionnel en crant deux projets distincts Dcouplage fonctionnel en favorisant lutilisation des areas

Conclusion
Jai trouv cette session intressante mme si la deuxime partie de la session consacre larchitecture tait relativement courte et pas assez dtaille. Nanmoins, cette session ma donn une ide globale sur les points retenir lors du dveloppement dune application MVC notamment comment profiter des data Annotation pour grer tous les contrles transverses sur une fonctionnalit(validation des donnes , autorisations, authentification) sans pour autant polluer le code mtier. Avec ASP.NET MVC nous retrouvons les fondamentaux du dveloppements web. Nos vues sont plus simples et libres des contrles serveurs o la logique mtier et laffichage peuvent se mler. Nous avons ainsi une sparation nette entre la vue, charge uniquement de laffichage, le modle, responsable de la manipulation et traitement de donnes et le contrleur, qui gre les interactions entre la vue et le modle. La question qui reste cest quand privilgier lutilisation dune application ASP.NET MVC une application .NET WebForm ?

Pr requis Le contenu de cette page s'adresse aux dveloppeurs et aux architectes de solutions Web avec PHP5. La consultation du menu Conception de ce site est souhaitable pour comprendre certains aspects lis l'architecture et la conception. Rsum Le contenu de cette page comprend des bonnes pratiques pour raliser une application Web avec PHP5. Ces bonnes pratiques sont tires principalement de l'exprience de l'auteur. D'abord il est prsent l'architecture MVC qui fait introduire deux types de classes Controller : Front Controller et Use case Controller, puis, les couches View et DAO. Ensuite, il est expos une manire de dvelopper chaque couche avec PHP conformment aux modles de spcifications UML. Introduction Dans le cas d'une application Web dveloppe avec PHP 5, l'architecture MVC met en jeu trois couches principales: Couche Controller Elle contient, dune part, des classes de type UsecaseController. Ces classes contiennent les mthodes de traitements mtiers. D'autre part, une classe dite Front Controller qui assure la rponse une requte en dlguant le traitement au UsecaseController adquat. Couche DAO Elle assure le mapping objet relationnel (gnralement ascendant). Elle contient deux types de classes. D'une part les classes DAO contenant les appels SQL et, d'autre part, les classes VO qui ne sont autres que les objets mtiers. Couche View Elle regroupe l'ensemble des contrles graphiques (IHM). Elle contient deux types de fichiers. D'une part, les classes View et d'autre part, les fichiers PHP Tpl dits Template. Une classe View contient les attributs et le constructeur ncessaires pour renvoyer les informations

suffisantes une IHM donne. D'autre part, Une Tpl ou Template est un fichier PHP qui contient le code HTML ainsi que du code ct client (JavaScript). Architecture MVC avec PHP 5 L'architecture MVC d'une application web avec PHP5 se prsente comme dans la figure cidessous:

Commentaire: La couche Controller est reprsente par la couleur Jaune, DAO par l 'Orange et View par le Bleu clair . Le processus MVC 2 est dcrit selon les oprations suivantes: 1. La page index.php possde des liens de type "include" avec toutes les autres classes et elle est la seule interagir avec l'utilisateur. Elle dlgue la requte de l'utilisateur une instance de type FrontController. 2. En fonction du UseCase et de l'action de l'utilisateur, l'instance FrontController dlgue le traitement l'instance de type UsecaseController adquate

(EnregistreVenteController par exemple). 3. l'instance de type UsecaseController dlgue le traitement une instance de type DAO qui excute les requtes SQL et renvoie un objet (ou tableau d'objets ) de type VO. 4. Puis, l'instance de type UsecaseController instancie la classe View adquate avec les paramtre VO (retourns) , session et requte. 5. Enfin, la classe View effectue un appel au contrle Tpl ou Template adquat et le contenu est affich dans index.php par l'instance de FrontController.

L'architecture MVC est l'architecture de rfrence utilise au cours de l'exprience de l'auteur dans le dveloppement avec PHP.

Couche Model (DAO) Dans notre cas on utilisera uniquement le Mapping Ascendant.

Pour PHP et dans le cas de ce type de mapping, la couche Model ou DAO contient essentiellement deux catgories de classes: Classes DAO Classes contenant l'implmentation de l'excution des requtes SQL. Gnralement, les mthodes d'une classe DAO renvoient des objets de types VO. Noter comme bonne pratique l'opportunit offerte par l'hritage partir d'une classe abstraite DAO. Cette classe abstraite va contenir l'implmentation de la connexion et la dconnection de la base de donnes, l'excution des commandes update et toutes autres oprations communes. Cette bonne pratique nous permettra de grer certains aspects communs un seul endroit du code. Classes VO (Visual Object) Classe mtier relatives au modle de domaine. Couche Controller Elle contient gnralement deux types de classes: La Classe Front Controller Cette classe reprsente une sorte d'annuaire pour dlguer les traitements. En effet, en fonction du Use case et de l'action renvoys par la requte de l'utilisateur, une instance de cette classe se charge de dlguer le traitement l'instance du

type UsecaseController adquat. Les Classes UsecaseController Aussitt appele par une instance de type Front Controller, l'instance de type UsecaseController se charge de dlguer le traitement la classe DAO adquate et

d'instancier la classe View. Noter comme bonne pratique l'opportunit offerte par l'hritage partir d'une classe UsecaseController qui permet de partager certains aspects communs tels que les traitements des dates, les tlchargements de fichiers...etc. Couche View La couche View contient deux types de fichiers PHP: Classes View Ces classes ont les attributs et les constructeurs ncessaires pour renvoyer les informations suffisantes aux fichiers Tpl ou Template pour construire l'IHM adquate. Fichier Tpl ou Template Fichiers PHP contenant du code html et du code ct client (JavaScript). Elles reprsentent les interfaces IHM de l'application. Mots Cls DAO : Data Access Object Front Controller : Classe de type Controller qui joue le rle d'annuaire de traitements IHM : Interface Homme Machine MVC2 : Model View Controller 2, pattern d'architecture, voir les menus PHP et j2EE du menu Dveloppement Pattern d'Architecture : Motif selon lequel l'application Web est implmente Template : Fichiers PHP contenant du code html et JavaScript UsecaseController : Type de classes prenant en charge les traitements mtiers VO : Visual Object, objet Mtier

Architecture globale d'une application MVC

Prsentation d'un Contrleur Le contrleur en l'organe de contrle du systme. Il a en charge d'analyse des demandes clientes et l'orchestration des appels aux modles et aux vues ncessaires la fourniture de la rponse attendues. Il doit aussi effectuer le choix des appels et l'ordre de ceci. Dans Code Igniter, un contrleur est une classe PHP hritant des proprits de la clase Controler.

Prsentation d'un modle Le Modle est l'organe de rcupration et de slection des donnes pertinentes pour rpondre la demande. Son rle consiste rcuprer, filtrer, modifier les donnes afin de fournir un sous ensemble de donne pertinent pour la rponse.

Dans Code Igniter, un contrleur est une classe PHP hritant des proprits de la clase Model.

Prsentation d'une vue La Vue est l'organe en charge de produire la prsentation des rsultats en fonction de donnes qui lui sont fournies. Pour cela la vue s'appuie gnralement sur des Template ou modle de rponse auquel elle intgre les donnes afin de composer le rsultat final.

Dans le cas de Code Igniter, les templates sont des fichiers PHP contenant du code de gnration d'affichage uniquement