Architecture Hexagonale

Introduit par Alistair Cockburn, ce pattern d’architecture aussi connu sous le nom de Port & Adapters Architecture place le métier au centre de l’architecture.

L'architecture hexagonale, ou architecture à base de ports et d'adaptateurs, est un patron d'architecture utilisé dans le domaine de la conception des logiciels. Elle vise à créer des systèmes à base de composants d'application qui sont faiblement couplés et qui peuvent être facilement connectés à leur environnement logiciel au moyen de ports et d'adaptateurs. Ces composants sont modulaires et interchangeables ce qui renforce la cohérence des traitements et facilite l'automatisation des tests.

L'intention originelle etait de 

Permettre à une application d’être pilotée aussi bien par des utilisateurs que par des programmes, des tests automatisés ou des scripts batchs, et d’être développée et testée en isolation de ses éventuels systèmes d’exécution et bases de données.

L'architecture hexagonale décompose un système en plusieurs composants interchangeables et faiblement couplés, tels le noyau de l'application, la base de données, l'interface utilisateur, les scripts de test ou encore les interfaces avec d'autres systèmes.

Ports

Chaque composant est connecté aux autres par l'intermédiaire de « ports » qui représentent un canal de communication. La communication via ces ports suit un protocole qui dépend de l'objectif de l'interaction. Les ports et les protocoles définissent une interface de programmation applicative (API) abstraite, qui peut être mise en œuvre par tout moyen technique approprié (par exemple : invocation de méthodes dans un langage orienté objet, appels de procédure distante ou encore services Web).

La granularité des ports et leur nombre n'est pas contraint :

  • un seul port pourrait, dans certains cas, être suffisant (par exemple, dans le cas d'un simple consommateur de service);
  • En général, il existe des ports pour les sources d'événements (interface utilisateur, alimentation automatique), les notifications (notifications sortantes), la base de données (afin d'interfacer le composant avec un SGBD approprié) et pour l'administration (pour contrôler le composant);
  • dans un cas extrême, il pourrait y avoir un port différent pour chaque cas d'utilisation, si nécessaire.

Adaptateurs

Les adaptateurs forment le ciment entre les composants et avec le monde extérieur. Ils adaptent les échanges entre le monde extérieur et leur port, ce dernier traduisant des exigences internes au composant d’application. Il peut y avoir plusieurs adaptateurs pour un même port, par exemple lorsque les données peuvent être fournies par un utilisateur via une interface graphique ou une interface de ligne de commande, ou envoyées par une source de données automatisée ou des scripts de test.

On trouve 2 types d'adaptateurs; les primaires qui déterminent l'utilisation de la logique métier et les secondaires qui permettent le fonctionnement de cette logique.

Les Couches Logicielles

Couche Applicative

Cette couche agit comme une façade pour exposer les fonctionnalités de l'application aux utilisateurs ou aux autres systèmes. Les services applicatifs fournissent une interface pour exécuter des opérations sur les entités métier. Ils orchestrent les différentes étapes nécessaires pour satisfaire une demande et appliquent les règles métier appropriées.

Couche Domaine

Cette couche représente le cœur de l'application. Elle contient les entités métier, les règles de domaine et la logique métier. Les entités métier sont des objets qui encapsulent les données et les comportements du domaine. Les règles de domaine sont des contraintes et des invariants qui définissent le comportement attendu de l'application. La logique métier implémente les cas d'utilisation spécifiques de l'application.

Couche Infrastructure

Cette couche fournit les composants techniques nécessaires à l'exécution de l'application. Cela peut inclure des bases de données, des services externes, des frameworks et des bibliothèques. Les détails d'implémentation spécifiques, tels que la persistance des données, la gestion des transactions et les appels réseau, sont gérés dans cette couche.


Commentaires

Posts les plus consultés de ce blog

Sécurité des Applications

Principes de la Programmation Orientée Objet

Principe de Responsabilité Unique