Aller au contenu principal

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.

Layers

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).

n-tiers

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.

MVC

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.

Sequence

Exemple

Par exemple, la structure organisationnelle d'une application donnerait ceci:

Sequence

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.