Architecture - En Couches
Une architecture en couches ou multiniveau est une architecture classique, souvent utilisée pour créer des applications d'entreprise. Elle est constituée de plusieurs couches ou niveaux (souvent trois, parfois plus) qui forment l'application. Chaque couche a des responsabilités distinctes.
On parle alors de Séparation de Responsabilités
.
Le terme Séparation de Responsabilités fait référence au processus de décompostion des fonctionnalités en de petits morceaux interconnectées de sorte qu'une fonctionne puisse être optilisée indépendament des autres.
Pour appliquer le principe de Séparation de Responsabilités, on fait un découpage en Couches.
D'où le nom de l'Architecture en Couches
.
Quels sont les composants de l'architcture en couche ?
L'architecture en couche se décline en 3 parties (Couches)
- La couche de présentation : c’est l’interface utilisateur, le front.
- La couche métier : elle gère les règles fonctionnelles.
- La couche d’accès aux données: elle parle avec la base de données.
Dans l'architecture en couches, l'on parle aussi d'applications 2-tiers, 3-tiers ou n-tiers qui nous permet de séparer physiquement les composant de l'application.
Chaque tier contient 2 ou 3 couches.
Pour application 2-ters, nous avons l'application et la base de données qui seront hébergées sur des servers différents.
Dans le tier application
, nous allons faire notre découpage en 3 couches (UI & Présentation, Business et Data Access).
Couche métier
La couche Métier (Business) définit les limites d'une application et son ensemble d'opérations disponibles d'un point de vue interaction avec la couche client (Présentation). Il en capsule la lgique métiers et les régles de gestion, controle les transactions et coordonne les réponses dans l'implémentation des ses opérations.
Couche Accès au données
La couche d'accès au données assure la communication avec la base de données via le pattern repository. Pour se faire nous allons utiliser O/RM (Object Relationnal Mapper) ppur fire le mapping entre le monde transactionnel et Object.
Couche présenation
La couche présentation est l'interface de communication de l'application. Elle peut rapidement définir complexe à gérer. C'est pour qui il faut faire les bons choix dès le début en choisissant un pattern comme MVC (Model View Controller) qui pose un cadre et une structure qui permettra de garder le contrôle à mésure que l'application grossi.
Le pattern MVC est composé de 3 Objects où chacun est responsable d'une fonction spécifique dans le contexte de l'interface utilisateur.
-
Controller
Intercepte les requêtes utilisateurs et interagit avec le Model et ou la View. -
Model
Porte les données et s'assure que les objets soient informés en cas de changement -
View
Represente graphiquement le moè§me. Il est responsable de son affichage à l'appelant.
Dans le cadre du MVC, quand une requête utilisateur arrive, elle prise en charge par le controlleur qui s'appuie ensuite sur un service métier pour tainter la demande. Puis crée une instance d'une vue spécifique et y injecte le modèle. Cette vue est rendu enfin avec le modèle sous forme HTML à l'appelant.
Exemple
Par exemple, la structure organisationnelle d'une application donnerait ceci:
Dans la solution MyApp, nous créons 4 librairies:
- MyApp.Api
- MyApp.Application
- MyApp.Domain
- MyApp.Infrastructure
Dans MyApp.Api nous implémentons le pattern MVC. On peut voir les dossiers Controllers
, Model
et Views
.
Dans Application, nous créyons un Dossiers services pour un mettre logique métiers
Dans Domain, on position les entités
et enfin dans Infrastructure, on crée dossier repositories pour implémentation notre logique d'accès aux données.
Biensûr qu'en fonctionne de la nature du projets d'autres dossiers pourront être créés. Sans oublier la 5 librairies pour les tests unitaires.
Conclusion
En résumé, nous voyons que la séparation des responsabilités permet de faciliter la compréhensionet et le design du système. Ce qui nous offre les avantages tels que:
- Robustesse
- Adaptabilité
- Maintenabilité
- Reutilisabité
Il faut dire que tous les projets professionels de nos jours suivent cette structure organisationnelle donc n'hésitez pas à l'architecture en couche dans vos solutions.