SUPPORT DE COURS LICENCE GENIE LOGICIEL
COURS DE PROMMATION WEB
(Programmation Web PHP structurés et performants)
PAR M. DONGMO YVAN BERTHOLD
CHAPITRE I
INTRODUCTION AU WEB
INTRODUCTION
Les pages dynamiques et l’accès aux bases de données sont des technologies indispensables au
développement d’un site web. Les sites web utilisant les pages dynamiques et les bases de
données règnent aujourd’hui en maitre sur internet. Il n’est plus imaginable de développer un site
sans faire appel à ces technologies et aux possibilités et de personnalisation qu’elles permettent.
Ce chapitre présente et explique la notion de client/serveur et le concept du Web, ainsi que les
pages dynamiques.
I. PRESENTATION DE CLIENT /SERVEUR
Le mode client/serveur est un mode de fonctionnement dissymétrique dans lequel deux logiciels
différents sont nécessaire pour permettre les communications : un logiciel serveur et un logiciel
client, nécessaire sur toutes machines.
1) Définition
Un environnement client/serveur désigne un mode de communication à travers un réseau
informatique entre plusieurs logiciels.
Un logiciel client et un logiciel serveur sont reliés par un réseau informatique. Le logiciel client
peut envoyer une requête au logiciel serveur.
2) Le client serveur pour web
Dans le cas qui nous intéresse ; c’est-à-dire le web, le client est un navigateur de tels logiciels
existent pour tous les systèmes d’exploitation :
Les sites web sont héberges sur des serveurs dédies qui sont nommés serveurs web. A l’heure
actuelle ; le logiciel le plus répondu est APACHE http server ; et bien sûr il existe d’autres
serveurs web.
Le navigateur émet une requête http vers un serveur web afin d’obtenir la page web désirée
Le serveur envoie les données demandées par le client ; si celui –ci est autorisé à accéder au
document. Le navigateur interprète les instructions de mise en page contenus dans les données
envoyées par le serveur.
3) Fonctionnement d’un système client/serveur
Un system client /serveur fonctionne selon le schéma suivant :
Figure I .1 : Fonctionnement de system client /serveur
Le client émet une requête vers le serveur grâce à son adresse IP et le port ; qui désigne un
service particulier du serveur.
Le serveur reçoit la demande et répond à l’aide de l’adresse de la machine client et son port
4) L’architecteur system client/serveur
De nombreuses applications fonctionnent selon un environnement client/serveur. Cela signifie
que des machines clients (des machines faisant partie du réseau) contactent un serveur, une
machine généralement très puissante en termes de capacité d’entrée-sortie, qui leur fournit des
services. Ces services sont des programmes fournissant des données-t-elle que l’heure ; des
fichiers, une connexion, etc.
Les services sont exploités par des programmes, appelés programmes client, s’exécutant sur les
machines clients. On parle ainsi de client (client FTP, client de messagerie, etc.) lorsque l’on
désigne un programme tournant sur une machine cliente, capable de traiter des informations qu’il
récupère auprès du serveur (dans le cas du client FTP il s’agit de fichier ; tandis que pour le
client de messagerie il s’agit de courrier électronique).
Présentation de l’architecteur à 2 niveaux
L'architecture à deux niveaux (aussi appelée architecture 2-tier, tier signifiant rangée en anglais)
caractérise les systèmes clients/serveurs pour lesquels le client demande une ressource et le
serveur la lui fournit directement, en utilisant ses propres ressources. Cela signifie que le serveur
ne fait pas appel à une autre application afin de fournir une partie du service.
Figure I.2 l’architecteur à 2 niveaux
Présentation de l’architecteur à 3 niveaux
Dans l'architecture à 3 niveaux (appelée architecture 3-tier), il existe un niveau intermédiaire,
c'est-à-dire que l'on a généralement une architecture partagée entre :
Un client, c'est-à-dire l'ordinateur demandeur des ressources, équipée d'une interface utilisateur
(généralement un navigateur web) chargée de la présentation ;
Le serveur d'application (appelé également middleware), chargé de fournir la ressource mais
faisant appel à un autre serveur
Le serveur des données, fournissant au serveur d'application les données dont il a besoin.
Figure I.3 l’architecteur à 3 niveaux
Etant donné l'emploi massif du terme d'architecture à 3 niveaux, celui-ci peut parfois désigner
aussi les architectures suivantes :
Partage l'application entre client, serveur intermédiaire, et serveur d'entreprise ;
Partage l'application entre client, serveur d'application, et serveur de données d'entreprise.
Présentation de l’architecteur à N niveaux
L'architecture 3 niveaux permet de spécialiser les serveurs dans une tache précise : avantage de
flexibilité, de sécurité et de performance. L'architecture peut être étendue sur un nombre de
niveaux plus important : on parle dans ce cas d'architecture à N niveaux (ou multi-tier).
Figure 1_2 l’architecteur à
N niveaux
Avantages de l'architecture client-serveur
✓ Des ressources centralisées : Toutes les données sont centralisées sur un seul serveur, ce
qui simplifie les contrôles de sécurité, l'administration, la mise à jour des données et des
logiciels.
Les technologies supportant l'architecture client-serveur sont plus matures que les autres.
La complexité du traitement et la puissance de calculs sont à la charge d’où des serveurs, les
utilisateurs utilisant simplement un client léger sur un ordinateur terminal qui peut être simplifié
au maximum.
✓ Recherche d'information : les serveurs étant centralisés, cette architecture est
particulièrement adaptée et véloce pour retrouver et comparer de vaste quantité d'informations
(moteur de recherche sur le Web), ce qui semble être rédhibitoire pour le P2P beaucoup plus
lent, à l'image de Free net.
Inconvénients de l'architecture client-serveur
Si trop des clients veulent communiquer avec le serveur au même moment, ce dernier risque de
ne pas supporter la charge (alors que les réseaux pair-à-pair fonctionnent mieux en ajoutant de
nouveaux participants).
Si le serveur n'est plus disponible, plus aucun des clients ne fonctionne (le réseau pair-à-pair
continue à fonctionner, même si plusieurs participants quittent le réseau).
Les coûts de mise en place et de maintenance peuvent être élevés.
En aucun cas les clients ne peuvent communiquer entre eux, entrainant une asymétrie de
l'information au profit des serveurs.
II. PRESENTATION DU WEB
Le World Wide est Web est rapidement devenu le service le plus utilisé sur l'Internet. Il a conçu
le Hypertext Markup Language (HTML) à partir d'un autre format utilisé pour les documents
appelé le SGML. Le WWW fonctionne en utilisant le concept d'hypertexte. À l'intérieur d'une
page, il y a des mots clés ou des images qui ont des liens qui, lorsque vous cliquez dessus, vous
amènent à une autre page Web.
1) Historique d’Internet
L'Internet est un système de communication qui permet aux ordinateurs autour du monde de
communiquer et de s'échanger de l'information entre eux.
Internet est né en 1969 sous l'impulsion du département américain de la défense (DOD).
Le réseau, qui s'appelait alors ARPANET, devait assurer les échanges d'informations
électroniques entre les centres névralgiques américains dans le contexte de la guerre froide.
Le cahier de charge établi par le DOD imposait que le réseau puisse poursuivre ses activités en
cas d'attaque nucléaire soviétique.
Si l'un ou plusieurs des sites et lignes de connexion venait à être détruit, les messages
parviendraient à leur destinataire par des itinéraires alternatifs.
Un grand nombre de centres de recherche, militaires, publics et privés prirent part à ce projet. Il
était normal que leurs réseaux internes fussent les premiers reliés à Internet.
C'est pourquoi, dès sa création, Internet sera un méta-réseau, un réseau de réseaux qui va peu à
peu relier la communauté scientifique et universitaire mondiale
Internet arrive en Europe en 1982.
L'année 1984 est une année charnière : Internet perd son caractère militaire.
Son financement n'est plus assuré par le DARPA mais par un organisme scientifique civil créé
deux ans plus tard :
La National Science Foundation (NSF).
Sa facilité d'utilisation contribue grandement à d'populariser les autoroutes de l'information
World Wide Web apparaît l'année suivante.
Depuis la chute du mur de Berlin en 1989, Internet s'est largement ouvert au grand public et à
l'exploitation commerciale.
2) Le WEB
Dans les années 90, un nouveau service de l'Internet est apparu : le World Wide Web, la toile
d'araignée mondiale, encore désignée par l'acronyme WWW ou le diminutif Web. C'est ce
service qui assure un certain succès à l'Internet. L'idée est de lire des hyperdocuments à l'aide
d'un navigateur.
Un hyperdocument est un document électronique contenant des images, du son, du texte, parfois
des petits morceaux de programme, mais surtout des liens vers d'autres hyperdocuments : des
liens hypertextes. Ces liens apparaissent dans un style qui les distinguent, et une simple action de
la souris sur un lien suffit à ouvrir le document lié. Les documents peuvent se trouver sur
n'importe quelle machine (serveur) de l'Internet à des endroits parfois très éloignés et c'est ce qui
donne l'impression à l'utilisateur de naviguer sur le réseau.
Le navigateur est l'outil qui permet de lire les hyper documents. On l'appelle aussi browser et les
deux plus connus aujourd'hui sont MicroSoft Internet Explorer (MSIE) et Netscape. Au début
conçu pour ne lire que les hyper documents, le navigateur intègre aujourd'hui tous les services de
l'Internet (e-mail, ftp,)
Le navigateur désigne par une adresse URL (Uniform Resource Locator), les adresses complètes
de l'Internet. C'est une adresse qui contient à la fois le nom d'une machine mais aussi le nom du
service demandé, le nom d'un document, ...
Un autre standard incontournable de l'Internet est HTML (HyperText Markup Language). C'est
le langage qui permet d'écrire des hyperdocuments de façon descriptive à l'aide de marqueurs.
3) Standards du web
Le web repose trois standards : les URL, http ET HTML, hypertext
URL
Une URL (Uniform Resource Locator) est une simple ligne de texte qui permet de retrouver une
ressource (texte, image, musique, vidéo, programme...) sur internet. Il s'agit d'une chaîne de
caractères ASCII imprimables qui se décompose en cinq parties :
✓ Le nom du protocole : c'est-à-dire en quelque sorte le langage utilisé pour communiquer
sur le réseau. Le protocole le plus largement utilisé est le protocole HTTP (HyperText Transfer
Protocol), le protocole permettant d'échanger des pages Web au format HTML. De nombreux
autres protocoles sont toutefois utilisables (FTP, News,Mailto,Gopher,...)
✓ Identifiant et mot de passe : permet de spécifier les paramètres d'accès à un serveur
sécurisé. Cette option est déconseillée car le mot de passe est visible dans l'URL
✓ Le nom du serveur : Il s'agit d'un nom de domaine de l'ordinateur hébergeant la
ressource demandée. Notez qu'il est possible d'utiliser l'adresse IP du serveur, ce qui rend par
contre l'URL moins lisible.
✓ Le numéro de port : il s'agit d'un numéro associé à un service permettant au serveur de
savoir quel type de ressource est demandée. Le port associé par défaut au protocole est le port
numéro 80. Ainsi, lorsque le service Web du serveur est associé au numéro de port 80, le numéro
de port est facultatif
✓ Le chemin d'accès à la ressource : Cette dernière partie permet au serveur de connaître
l'emplacement auquel la ressource est située, c'est-à-dire de manière générale l'emplacement
(répertoire) et le nom du fichier demandé
Une URL a donc la structure suivante :
Protocole Mot de passe (facultatif) Nom du serveur Port(facultatifsi 80) Chemin
http:// user:password@ [Link] :80 /glossair/glossair.php3
Protocole http
L'HTTP (Hypertext Transfer Protocol) est le protocole de transport utilisé par les navigateurs
Web (Firefox, Internet Explorer...) et les serveurs Web (Apache, IIS...) pour communiquer entre
eux. C'est lui qui est utilisé par exemple pour obtenir un fichier HTML, une image, poster un
formulaire Internet. Il est donc au cœur de l'Internet. Techniquement c'est un protocole texte
(donc lisible en clair) s'appuyant les protocoles plus bas-niveau TCP/ IP.
Avec HTTP la communication entre un navigateur et un serveur Web est finalement assez
simple. En voici le déroulé :
Une URL telle que [Link] est donnée au Navigateur par un
internaute.
Le navigateur en extrait le nom de domaine '[Link]' et à partir de cette information
sait comment trouver le serveur Web distant (grâce à
Une opération dite de DNS look up qui résout un nom de domaine en une adresse IP), à partir de
là une connexion (basée sur les protocoles TCP/IP) est établie entre le navigateur et le serveur
Web distant.
Une requête HTTP demandant la ressource '/[Link]' est alors transmise par le navigateur, le
serveur Web trouve la ressource correspondante et en renvoie le contenu dans une réponse http,
le navigateur est désormais capable d'afficher le fichier HTML à l'internaute
Pages web dynamique
Le principe d'un page dynamique est d'être construite à la demande (à la volée) par le serveur
(côté serveur), en fonction de critères spécifiques. La présentation et le contenu affichés peuvent
ainsi être personnalisés de manière interactive, en fonction des produits, des internautes, des
langues, etc.
On reconnaît facilement un page dynamique grâce à l'URL qui s'affiche dans le navigateur web
de l’utilisateur :
➢ Page statique : affiche la page [Link], stockée telle quelle sur le serveur,
➢ Page dynamique : affiche la page [Link] en demandant au serveur d'afficher le
contenu de cette page en français.
Alors que les pages statiques font appel au html, langage de description de données, les pages
dynamiques sont mises en œuvre grâce à un langage de programmation. Grâce à lui, on pourra
disposer d'instructions conditionnelles, des boucles et des fonctions de traitement complexes. Le
langage de programmation variera en fonction de la technologie retenue (PHP, ASP, Java, etc.).
Hypertexte
Le système hypertext est un système contenant des nœuds liés entre eux par des hypertextes est
donc un document qui contient des hyperliens et des nœuds. Un nœud est « une unité minimale
d’information », notion assez floue qui signifie simplement que l’information d’un nœud sera
toujours présentée entière
Lorsque les nœuds ne sont pas uniquement textuels ; mais aussi audiovisuels ; on peut parler de
système et de document hypermedias.
4) Les technologies dynamiques du coté serveur
Le serveur web est un ensemble ordinateur/logiciel paramétré pour pouvoir traiter certains types
de pages et notamment celles qui contiennent des instructions de programmation. Il reconnaît ces
pages grâce à l'URL qu'il reçoit, effectue les traitements demandés et transmet le résultat au
format html au browser de l'internaute.
PHP
PHP est un langage de programmation informatique essentiellement utilisé pour produire à la
volée des pages web dynamiques, PHP s’est imposé comme le langage de référence sur le web
en raison de sa simplicité, de sa gratuité et de son origine de logiciel libre.
Il très puissant, rapide et principalement exécuté par le compilateur PHP.
Un script PHP est multiplateforme, très bon support des bases de données (Oracle, Microsoft,
MySQL).
MYSQL
MySQL (My Structured Query Language) est un Système de Gestion des Bases des données
(SGBD) Open Source très rapide, robuste et multiutilisateur. Le serveur MySQL supporte le
langage de requêtes SQL, langage standard de choix des SGBD modernes. Il est facilement
accessible en réseaux et supporte des connexions sécurisées grâce au protocole SSL. La
portabilité du serveur MySQL lui permet de s'exécuter sur toutes les plateformes et d'être intégré
à plusieurs serveurs web.
CHAPITRE II
LES DESIGN PATTERNS (Patron de conception)
INTRODUCTION
Les Design Patterns (DP) sont des architectures de classes permettant d’apporter une solution à
des problèmes fréquemment rencontrés lors des phases d’analyse et de conception
d’applications.
Ces solutions sont facilement adaptables (donc réutilisables), elles sont utilisables sans aucun
risque dans la grande majorité des langages de programmation orientés objet.
Les Design Patterns ont une architecture facilement compréhensible et identifiables pour un
programmeur (améliore la communication). Ayant pour objectif, de ne pas réinventer la roue.
Les Design Patterns ne sont donc pas vraiment une solution miracle pour les problèmes, mais ce
sont plutôt des méthodes de résolutions. C’est comme une formule mathématique, c’est la
solution mais encore faut-il l’appliquer au bon moment avec les bonnes variables.
Ce travail a été initié dans la thèse de doctorat d’E. Gamma et finalisé par “The Gang of Four”
dans un ouvrage qui fait référence à 23 designs patterns classifiés en 3 groupes d’après leur rôle.
I. Les patterns créateurs
Ils ciblent la construction des objets (« aider » new, clone).
1) Singleton
Un singleton est une classe qui ne produit qu’une seule instance, et cette dernière est accessible
de partout. Pour cela, il faut que la construction d’une nouvelle instance grâce à l’opérateur new
soit interdite. La solution est de rendre le constructeur de la classe privée. Il est utilisé
généralement pour récupérer l’objet de connexion à la base de données existante.
2) Prototype
Le prototype est le pattern qui va vous permettre de créer des copies exactes d’objets sans même
connaître leurs types. C’est donc une extension du constructeur par copie pour pouvoir travailler
avec du polymorphisme. Son usage est pour la génération automatique de classes et clonage
d’objets.
3) Abstract Factory
Il permet la création de familles d’objets apparentés ou interdépendants (parfois équivalent à
Prototype)
4) Builder
Lorsque la création d’un objet est complexe et indépendante des parties qui compose l’objet -
exemple : Convertisseur de texte.
5) Factory
Il permet de déléguer l’instanciation des objets aux sous-classes.
II. Patterns structuraux
Ils travaillent sur des aspects statiques, à « l’extérieur » des classes (notamment extensibilité). Ils
sont les patterns qui concernent des problèmes d’assemblage d’objets et de structure de code. Ils
décrivent les moyens de composer des objets pour réaliser de nouvelles fonctionnalités.
1) Composite
Il représente des structures d’arbres, ou compositions récursives. Il permet de traiter de la même
manière un objet ou une collection d’objets.
2) Facade
Il consiste à donner une interface unifiée et haut niveau à un sous-système composé de plusieurs
interfaces et objets aux interactions complexes. Typiquement, la façade peut répondre à des
requêtes de l’utilisateur en appelant des méthodes de divers objets du sous-système. L’utilisateur
appelle alors des méthodes de la façade sans se soucier du travail effectué par le sous-système.
3) Bridge
Il permet le découplage entre une abstraction et une implémentation. Exemple : création de
fenêtre indépendamment de la plate-forme.
4) Adapter
Il convertit l’interface d’une classe en une autre répondant aux attentes du client, soit par
composition soit par héritage multiple.
5) Decorator
Il ajoute dynamiquement des caractéristiques (ou des comportements) à un objet (une classe).
6) Proxy
Il intercepte les requêtes vers un objet et instancie celui-ci quand il est réellement nécessaire.
7) Flyweight
Il crée un objet partagé et susceptible d’être utilisé par plusieurs contextes simultanément.
III. Patterns comportementaux
Travaillent sur des aspects dynamiques, à « l’intérieur » des classes (parfois même des
instances).
1) Observer
Il permet de définir une dépendance entre plusieurs objets, telle que, lorsqu’un des objets (le
sujet) change d’état (modification de certains de ses attributs), les autres objets (observers) en
soit avertis immédiatement.
2) Visitor
Il permet d’ajouter des traitements à une classe sans avoir à la modifier.
Exemple : Les classes ElementA et ElementB dérivent de ElementAbstrait, on ajoute des
fonctionnalités spécifiques sans perdre l’avantage d’une interface commune bien définie et du
polymorphisme.
3) Strategy
Il permet de combiner les traitements ajoutés, en évitant l’explosion du nombre de classes même
si on combine les traitements par héritage.
Comme autres nous avons pattern : Iterator, Interpreter, Command, Mediator, Template, State,
Memento, Template
CHAPITRE III
L’architecture MVC
Le patron modèle-vue-contrôleur (en abrégé MVC, de l'anglais model-view-controller), tout
comme les patrons modèle-vue-présentation ou Présentation, abstraction, contrôle, est un modèle
destiné à répondre aux besoins des applications interactives en séparant les problématiques liées
aux différents composants au sein de leur architecture respective.
Ce paradigme regroupe les fonctions nécessaires en trois catégories :
• Un modèle (modèle de données) ;
• Une vue (présentation, interface utilisateur) ;
• Un contrôleur (logique de contrôle, gestion des événements, synchronisation).
I. FONCTIONNEMENT DE L’ARCHITECTURE MVC
Il y a des problèmes en programmation qui reviennent tellement souvent qu'on a créé toute une
série de bonnes pratiques que l'on a réunies sous le nom de design patterns. Un des plus célèbres
design patterns s'appelle MVC (Modèle - Vue - Contrôleur). Le pattern MVC permet de bien
organiser son code source. Il va nous aider à savoir quels fichiers créer, mais surtout à définir
leur rôle. Le but de MVC est justement de séparer la logique du code en trois parties que l'on
retrouve dans des fichiers distincts :
• Modèle : cette partie gère les données du site. Son rôle est d'aller récupérer les
informations « brutes » dans la base de données, de les organiser et de les assembler pour
qu'elles puissent ensuite être traitées par le contrôleur. On y trouve donc les requêtes
SQL. Parfois, les données ne sont pas stockées dans une base de données. C'est plus rare,
mais on peut être amené à aller chercher des données dans des fichiers. Dans ce cas, le
rôle du modèle est de faire les opérations d'ouverture, de lecture et d'écriture de fichiers
(fonctions fopen, fgets, etc.).
• Vue : cette partie se concentre sur l'affichage. Elle ne fait presque aucun calcul et se
contente de récupérer des variables pour savoir ce qu'elle doit afficher. On y trouve
essentiellement du code HTML mais aussi quelques boucles et conditions PHP très
simples, pour afficher par exemple la liste des messages des forums.
• Contrôleur : cette partie gère la logique du code qui prend des décisions. C'est en quelque
sorte l'intermédiaire entre le modèle et la vue : le contrôleur va demander au modèle les
données, les analyser, prendre des décisions et renvoyer le texte à afficher à la vue. Le
contrôleur contient exclusivement du PHP. C'est notamment lui qui détermine si le
visiteur a le droit de voir la page ou non (gestion des droits d'accès).
La figure suivante schématise le rôle de chacun de ces éléments.
Il est important de bien comprendre comment ces éléments s'agencent et communiquent entre
eux.
Il faut tout d'abord retenir que le contrôleur est le chef d'orchestre : c'est lui qui reçoit la requête
du visiteur et qui contacte d'autres fichiers (le modèle et la vue) pour échanger des informations
avec eux.
Le fichier du contrôleur demande les données au modèle sans se soucier de la façon dont celui-ci
va les récupérer. Par exemple : « Donne-moi la liste des 30 derniers messages du forum no 5 ».
Le modèle traduit cette demande en une requête SQL, récupère les informations et les renvoie au
contrôleur.
Une fois les données récupérées, le contrôleur les transmet à la vue qui se chargera d'afficher la
liste des messages.
Dans les cas les plus simples, le contrôleur sert seulement à faire la jonction entre le modèle et la
vue. Mais le rôle du contrôleur ne se limite pas à cela : s'il y a des calculs ou des vérifications
d'autorisations à faire, des images à miniaturiser, c'est lui qui s'en chargera.
Concrètement, le visiteur demandera la page au contrôleur et c'est la vue qui lui sera retournée,
comme schématisé sur la figure suivante. Bien entendu, tout cela est transparent pour lui, il ne
voit pas tout ce qui se passe sur le serveur.
II. Les frameworks MVC
L'organisation en fichiers proposée n'est qu'une façon de faire parmi beaucoup d'autres. L'idéal
serait de créer le site en se basant sur un framework PHP de qualité (mais cela demandera du
temps, car il faut apprendre à se servir du framework en question !). Un framework est un
ensemble de bibliothèques, une sorte de kit prêt à l'emploi pour créer plus rapidement un site
web, tout en respectant des règles de qualité.
Voici quelques frameworks PHP célèbres :
• Laravel
• Symfony
• CodeIgniter
• CakePHP
• Jelix
• Zend Framework.
Ils sont tous basés sur une architecture MVC et proposent en outre de nombreux outils pour
faciliter le développement d'un site web. Ces frameworks ont prouvé leur robustesse et leur
sérieux, ce qui en fait des outils de choix pour concevoir des sites de qualité professionnelle.
Nous travaillerons pour ce cours avec le framework Symfony. Afin d’exploiter l’architecture
MVC proposé par ce framework.
III. Différence avec l'architecture trois tiers
L'architecture trois tiers est un modèle en couches, c'est-à-dire, que chaque couche communique
seulement avec ses couches adjacentes (supérieures et inférieures) et le flux de contrôle traverse
le système de haut en bas ; les couches supérieures contrôlent les couches inférieures, c'est-à-
dire, que les couches supérieures sont toujours sources d'interaction (clients) alors que les
couches inférieures ne font que répondre à des requêtes (serveurs).
Dans le modèle MVC, il est généralement admis que la vue puisse consulter directement le
modèle (lecture) sans passer par le contrôleur. Par contre, elle doit nécessairement passer par le
contrôleur pour effectuer une modification (écriture). Ici, le flux de contrôle est inversé par
rapport au modèle en couches, le contrôleur peut alors envoyer des requêtes à toutes les vues de
manière qu'elles se mettent à jour.
Dans l'architecture trois tiers, si une vue modifie les données, toutes les vues concernées par la
modification doivent être mises à jour, d'où l'utilité de l'utilisation du MVC au niveau de la
couche de présentation. La couche de présentation permet donc d'établir des règles du type «
mettre à jour les vues concernant X si Y ou Z sont modifiés ». Mais ces règles deviennent
rapidement trop nombreuses et ingérables si les relations logiques sont trop élevées. Dans ce cas,
un simple rafraîchissement des vues à intervalle régulier permet de surmonter aisément ce
problème. Il s'agit d'ailleurs de la solution la plus répandue en architecture trois tiers, l'utilisation
du MVC étant moderne et encore marginale.
1) Définition et concepts
Son nom provient de l'anglais tier signifiant étage ou niveau. Il s'agit d'un modèle logique
d'architecture applicative qui vise à modéliser une application comme un empilement de trois
couches logicielles (étages, niveaux, tiers ou strates) dont le rôle est clairement défini :
• La présentation des données : correspondant à l'affichage, la restitution sur le poste de
travail, le dialogue avec l'utilisateur ;
• Le traitement métier des données : correspondant à la mise en œuvre de l'ensemble des
règles de gestion et de la logique applicative ;
• L'accès aux données persistantes : correspondant aux données qui sont destinées à être
conservées sur la durée, voire de manière définitive.
Dans cette approche, les couches communiquent entre elles au travers d'un « modèle d'échange
», et chacune d'entre elles propose un ensemble de services rendus. Les services d'une couche
sont mis à disposition de la couche supérieure. On s'interdit par conséquent qu'une couche
invoque les services d'une couche plus basse que la couche immédiatement inférieure ou plus
haute que la couche immédiatement supérieure (chaque couche ne communique qu'avec ses
voisins immédiats).
Le rôle de chacune des couches et leur interface de communication étant bien définis, les
fonctionnalités de chacune d'entre elles peuvent évoluer sans induire de changement dans les
autres couches. Cependant, une nouvelle fonctionnalité de l'application peut avoir des
répercussions dans plusieurs d'entre elles. Il est donc essentiel de définir un modèle d'échange
assez souple, pour permettre une maintenance aisée de l'application.
Ce modèle d'architecture 3-tiers a pour objectif de répondre aux préoccupations suivantes :
• Allègement du poste de travail client (notamment vis-à-vis des architectures classiques
client-serveur de données – typiques des applications dans un contexte Oracle/Unix) ;
• Prise en compte de l'hétérogénéité des plates-formes (serveurs, clients, langages, etc.) ;
• Introduction de clients dits « légers » (plus liée aux technologies Intranet/HTML qu'au 3-
tiers proprement dit) ;
• Amélioration de la sécurité des données, en supprimant le lien entre le client et les
données. Le serveur a pour tâche, en plus des traitements purement métiers, de vérifier
l'intégrité et la validité des données avant de les envoyer dans la couche de données.
• Rupture du lien de propriété exclusive entre application et données. Dans ce modèle, la
base de données peut être plus facilement normalisée et intégrée à un entrepôt de
données.
• Et enfin, meilleure répartition de la charge entre différents serveurs d'application.
Précédemment, dans les architectures client-serveur classiques, les couches présentation
et traitement étaient trop souvent imbriquées. Ce qui posait des problèmes à chaque fois
que l'on voulait modifier l'interface homme-machine du système.
2) Les trois couches
❖ Couche présentation
Elle correspond à la partie de l'application visible et interactive avec les utilisateurs. On parle
d'interface homme machine. En informatique, elle peut être réalisée par une application
graphique ou textuelle (WPF). Elle peut aussi être représentée en HTML pour être exploitée par
un navigateur web ou en WML pour être utilisée par un téléphone portable.
On conçoit facilement que cette interface peut prendre de multiples facettes sans changer la
finalité de l'application. Dans le cas d'un système de distributeurs de billets, l'automate peut être
différent d'une banque à l'autre, mais les fonctionnalités offertes sont similaires et les services
identiques (fournir des billets, donner un extrait de compte, etc.).
Toujours dans le secteur bancaire, une même fonctionnalité métier (par exemple, la commande
d'un nouveau chéquier) pourra prendre différentes formes de présentation selon qu'elle se
déroule sur Internet, sur un distributeur automatique de billets ou sur l'écran d'un chargé de
clientèle en agence.
La couche présentation relaie les requêtes de l'utilisateur à destination de la couche métier, et en
retour lui présente les informations renvoyées par les traitements de cette couche. Il s'agit donc
ici d'un assemblage de services métiers et applicatifs offerts par la couche inférieure.
❖ Couche métier ou business (second niveau)
Elle correspond à la partie fonctionnelle de l'application, celle qui implémente la « logique», et
qui décrit les opérations que l'application opère sur les données en fonction des requêtes des
utilisateurs, effectuées au travers de la couche présentation.
Les différentes règles de gestion et de contrôle du système sont mises en œuvre dans cette
couche.
La couche métier offre des services applicatifs et métier2 à la couche présentation. Pour fournir
ces services, elle s'appuie, le cas échéant, sur les données du système, accessibles au travers des
services de la couche inférieure. En retour, elle renvoie à la couche présentation les résultats
qu'elle a calculés.
❖ Couche accès aux données (troisième niveau)
Elle consiste en la partie gérant l'accès aux données du système. Ces données peuvent être
propres au système, ou gérées par un autre système. La couche métier n'a pas à s'adapter à ces
deux cas, ils sont transparents pour elle, et elle accède aux données de manière uniforme
(couplage faible).