13 chapitres4 h 3 minIntermédiaire
Architectures applicatives et MVC
Cours architecture MVC du BTS SIO SLAM : MVC en PHP, Express et C#, couches, injection de dépendances, 3 tiers, SPA + API, exercices corrigés.
Par Josselyn C., prof de BTS SIO. Mis à jour le .
L'essentiel
L'architecture d'une application, c'est la façon dont son code est découpé en parties, ce que fait chacune et comment elles communiquent. Le découpage le plus connu est MVC (modèle, vue, contrôleur) : le modèle gère les données, la vue les affiche, le contrôleur reçoit les actions de l'utilisateur et fait le lien. Autour de MVC, tu rencontreras les couches (présentation, service, accès aux données), le pattern Repository, l'injection de dépendances, les architectures 3 tiers, les applications « front React + API Node.js » et, plus loin, les microservices.
Au BTS SIO, c'est un savoir du bloc 2 SLAM : le référentiel demande de « participer à la conception de l'architecture d'une solution applicative ». À l'E6, la commission écrit un besoin d'évolution sur ton application : tu dois situer la modification dans ton architecture, puis trouver le bon fichier en quelques secondes pendant l'heure de réalisation. À l'E7, les sujets te font lire du code rangé en couches : savoir où se trouvent le contrôle d'accès ou la requête SQL te fait gagner du temps.
À la fin de ce cours, tu sauras :
- expliquer MVC et suivre le trajet d'une requête dans une application ;
- organiser une application en MVC en PHP sans framework, en Node.js avec Express et en C# avec WinForms ;
- séparer présentation, règles de gestion et accès aux données, et tester les règles sans base de données grâce à l'injection de dépendances ;
- distinguer client-serveur, 2 tiers, 3 tiers, SPA + API, monolithe et microservices, et choisir ce qui convient à un projet ;
- documenter une architecture avec le modèle C4 et un diagramme de déploiement ;
- choisir et défendre l'architecture de tes réalisations d'E6.
Avant ce cours. Tu dois savoir écrire une classe et un objet (programmation orientée objet), écrire une requête SELECT et INSERT (SQL) et avoir écrit un premier programme dans au moins un des langages du cours : PHP et PDO, Node.js ou C# et WinForms. Les chapitres 1, 2, 9, 11 et 12 se lisent sans programmer. Les chapitres 3, 4 et 5 montrent le même exemple dans les trois langages : lis d'abord celui que tu pratiques.
Les versions. Le code est écrit pour PHP 8.4 ou 8.5 avec PDO, Node.js 24 ou 26 (les deux LTS les plus récentes en novembre 2026 ; la 26 est la LTS active) avec Express 5 et mysql2, React 19, et .NET 10 (LTS) avec C# 14 et MySqlConnector. La base est MySQL 8.4. Aucun framework PHP n'est utilisé : tout se fait en PHP natif, pour que tu voies chaque pièce de l'architecture.
Le fil rouge. Tous les exemples portent sur ResaSalles, l'application de réservation de salles de réunion de Brévent Industrie, une PME de 120 salariés (entreprise fictive). Un salarié choisit une salle, un créneau et un nombre de participants ; l'application refuse une réservation dans le passé, de plus de 4 heures, pour plus de personnes que la salle n'en accueille, ou qui chevauche une réservation existante. C'est le genre de réalisation que tu peux présenter à l'E6 : des données, des règles de gestion, plusieurs façons d'y accéder.
La base contient trois tables :
salle (id, nom, capacite, visio)
employe (id, nom, prenom, email, role)
reservation (id, #salle_id, #employe_id, debut, fin, objet, participants)
Comment travailler. Le code Node.js et C# du cours a été exécuté (Node.js 24, .NET 10) ; le code PHP a été relu ligne à ligne. Recopie-le dans ton propre projet plutôt que de le lire seulement : une architecture se comprend en déplaçant du code d'un fichier à l'autre. Chaque chapitre se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.
| Ton objectif | Chapitres à travailler en priorité |
|---|---|
| Comprendre MVC pour la première fois | 1, 2, puis 3, 4 ou 5 selon ton langage |
| Ranger le code de ta réalisation E6 | 2, 6, 7 et 13 |
| Préparer les questions d'architecture de l'E6 | 9, 10, 12 et 13 |
| Lire du code en couches à l'E7 | 2, 6 et 7 |
| Culture générale d'architecture (veille, poursuite d'études) | 8, 10 et 11 |
Sommaire
Architecture MVC
0 chapitre sur 13
- Chapitre 1 : Architecture logicielle : pourquoi séparer les responsabilités14 min
- Chapitre 2 : Le modèle MVC : modèle, vue, contrôleur16 min
- Chapitre 3 : MVC en PHP sans framework, avec PDO29 min
- Chapitre 4 : MVC avec Node.js et Express20 min
- Chapitre 5 : MVC en C# WinForms24 min
- Chapitre 6 : Architecture en couches : présentation, métier, données30 min
- Chapitre 7 : Pattern Repository, DAO et injection de dépendances26 min
- Chapitre 8 : Architecture hexagonale et clean architecture : aperçu12 min
- Chapitre 9 : Architecture client-serveur, 2 tiers, 3 tiers et n-tiers12 min
- Chapitre 10 : Architecture API + SPA : React, Node.js et client lourd20 min
- Chapitre 11 : Monolithe, microservices et serverless10 min
- Chapitre 12 : Documenter une architecture : modèle C4 et diagramme de déploiement12 min
- Chapitre 13 : Choisir l'architecture de ton projet E616 min
Questions fréquentes
C'est quoi l'architecture MVC ?
MVC (modèle-vue-contrôleur) est une façon d'organiser le code d'une application en trois rôles. Le modèle gère les données et les règles, la vue affiche, le contrôleur reçoit les actions de l'utilisateur, appelle le modèle et choisit la vue. Elle sert à séparer l'affichage de la logique, pour que le code soit plus facile à lire, à tester et à faire évoluer (chapitre 2).
MVC est-il un design pattern ou une architecture ?
Les deux réponses se rencontrent. MVC est né comme patron de conception pour organiser des interfaces graphiques à l'échelle de quelques classes ; il structure aujourd'hui des applications web entières, d'où le nom de patron d'architecture. À l'examen, l'important est d'expliquer ce qu'il sépare et pourquoi.
Quelle est la différence entre MVC et l'architecture 3 tiers ?
MVC organise le code en rôles (modèle, vue, contrôleur) ; l'architecture 3 tiers répartit l'exécution sur trois niveaux qui communiquent par le réseau (client, serveur d'application, base de données). Une application peut être les deux à la fois : une API Express organisée en MVC, appelée par un navigateur et reliée à MySQL, est en 3 tiers (chapitre 9).
Où mettre la logique métier dans une application MVC ?
Dans le modèle, jamais dans la vue, le moins possible dans le contrôleur. Dans une application qui grandit, on la place dans une couche service (ReservationService) appelée par le contrôleur, et on laisse le SQL dans des Repository. Le contrôleur reste mince : il lit la requête, appelle le service et répond (chapitre 6).
Peut-on faire du MVC en PHP sans framework ?
Oui. Il suffit d'un contrôleur frontal (public/index.php) qui reçoit toutes les requêtes et appelle la bonne action, de classes contrôleurs, de modèles qui exécutent le SQL avec PDO et des requêtes préparées, et de vues PHP qui échappent les données avec htmlspecialchars. C'est la meilleure façon de comprendre ce que fait un framework (chapitre 3).
React, c'est du MVC ?
Pas au sens strict. React découpe l'interface en composants qui reçoivent des données, gèrent un état et décrivent leur affichage : un composant mélange volontairement un peu de vue et un peu de contrôleur. Dans une application React + API, le découpage MVC se retrouve à l'échelle de l'ensemble : React est la présentation, l'API contient contrôleurs, services et accès aux données (chapitre 10).
Quelle est la différence entre un DAO et un Repository ?
Les deux isolent l'accès aux données dans des classes dédiées. Le DAO est plus proche de la table, avec des opérations CRUD (insert, findById) ; le Repository présente les données comme une collection d'objets métier, avec des méthodes qui parlent la langue du métier (existeChevauchement). Dans les projets réels, la frontière est floue (chapitre 7).
C'est quoi l'injection de dépendances, en simple ?
C'est le fait de donner à une classe les objets dont elle a besoin, le plus souvent par son constructeur, au lieu qu'elle les crée elle-même avec new. Le service de réservation reçoit son Repository au lieu de créer une connexion MySQL : on peut lui donner un faux Repository en mémoire pour le tester sans base, ou un autre pour changer de stockage.
Faut-il utiliser des microservices pour un projet de BTS SIO ?
Presque jamais. Les microservices répondent aux besoins de grandes organisations (plusieurs équipes, charges très différentes) et coûtent cher en exploitation. Pour un binôme et une application de gestion, un monolithe organisé en couches est plus simple à développer, à démarrer le jour de l'épreuve et à défendre (chapitre 11).
L'architecture est-elle évaluée à l'E6 ou à l'E7 ?
Surtout à l'E6 SLAM : « participer à la conception de l'architecture d'une solution applicative » est une compétence du bloc 2, et l'environnement exigé impose plusieurs situations d'exécution et des appels à des services distants. La commission attend un schéma de ton architecture et des choix justifiés. À l'écrit E7, l'architecture sert à lire le code des sujets : savoir dans quelle couche chercher une faille fait gagner du temps (chapitre 13).