Architecture en couches et hexagonale
L'architecture en couches et sa règle de dépendance, puis l'architecture hexagonale : domaine au centre, ports, adaptateurs primaires et secondaires, et inversion des dépendances.
- 22 cartes
- 3 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
Quelques cartes du deck
Architecture en couches : de quoi s'agit-il ?
Voir la réponse
Organisation d'un logiciel en strates empilées, présentation, application, domaine, persistance, où chaque strate ne s'appuie que sur celles qui sont en dessous.
On peut remplacer une strate sans toucher à celles du dessus : changer la base de données ne doit pas obliger à réécrire les écrans.
Dans cette classe du domaine, quelle ligne rompt l'architecture hexagonale ?
```java
package fr.iut.commande.domaine;
import java.sql.Connection;
import java.util.List;
public class Commande {
private final List<Ligne> lignes;
public void enregistrer(Connection connexion) {
connexion.prepareStatement("INSERT INTO commande VALUES (?)");
}
}`import java.sql.Connection;package fr.iut.commande.domaine;private final List<Ligne> lignes;import java.util.List;
Voir la réponse
import java.sql.Connection;Une liste de la bibliothèque standard ne lie le domaine à aucune technologie, mais
java.sql.Connectionest un type technique (JDBC) : le domaine dépend maintenant de la base. Il doit déclarer un port, par exempleDepotCommande, que la persistance implémentera.Dans une architecture en couches classique, les dépendances vont toujours … : la présentation appelle l'application, qui appelle le domaine.
Voir la réponse
Dans une architecture en couches classique, les dépendances vont toujours vers le bas : la présentation appelle l'application, qui appelle le domaine.
Dans la variante stricte, une couche ne parle qu'à la couche immédiatement inférieure ; dans la variante souple, elle peut aussi sauter une couche.
Règle de dépendance : de quoi s'agit-il ?
Voir la réponse
Contrainte selon laquelle une strate d'un logiciel ne peut dépendre que de celles situées sous elle, jamais de celles situées au-dessus.
Si le domaine importait une classe de l'écran, on ne pourrait plus le tester ni le réutiliser sans embarquer l'interface : une seule dépendance montante suffit à ruiner le découpage.
Dans une architecture hexagonale, dans quel sens va la dépendance entre
DepotCommandeSqletDepotCommande(l'interface du domaine) ?DepotCommandedépend deDepotCommandeSqlDepotCommandeSqldépend deDepotCommande- Les deux dépendent l'une de l'autre
- Aucune dépendance : une interface n'a pas de lien avec ses implémentations
Voir la réponse
DepotCommandeSqldépend deDepotCommandeUne classe qui implémente une interface dépend de cette interface. Comme l'interface est dans le domaine, la dépendance technique pointe vers le domaine, et non l'inverse.