Martin Fowler démontrant clairement:
La superposition est l'une des techniques les plus courantes utilisées par les concepteurs de logiciels pour séparer un système logiciel complexe. Vous le voyez dans les architectures de machines, où les couches descendent d'un langage de programmation avec des appels de système d'exploitation dans les pilotes de périphériques et les jeux d'instructions CPU, et dans les portes logiques à l'intérieur des puces. La mise en réseau a FTP en couches sur TCP, qui est sur IP, qui est sur Ethernet.
En pensant à un système en termes de couches, vous imaginez les principaux sous-systèmes du logiciel disposés sous une forme de gâteau de couches, où chaque couche repose sur une couche inférieure. Dans ce schéma, la couche supérieure utilise divers services définis par la couche inférieure, mais la couche inférieure ne connaît pas la couche supérieure. De plus, chaque couche cache généralement ses couches inférieures aux couches supérieures, donc la couche 4 utilise les services de la couche 3, qui utilise les services de la couche 2, mais la couche 4 ne connaît pas la couche 2. (Toutes les architectures de couches ne sont pas opaques comme celle-ci , mais la plupart sont - ou plutôt la plupart sont pour la plupart opaques.)
La décomposition d'un système en couches présente un certain nombre d'avantages importants.
• Vous pouvez comprendre une seule couche comme un tout cohérent sans en savoir beaucoup sur les autres couches. Vous pouvez comprendre comment créer un service FTP au-dessus de TCP sans connaître les détails du fonctionnement d'Ethernet.
• Vous pouvez remplacer les couches par des implémentations alternatives des mêmes services de base. Un service FTP peut fonctionner sans modification via Ethernet, PPP ou tout autre équipement utilisé par une entreprise de câblodistribution.
• Vous minimisez les dépendances entre les couches. Si le câblodistributeur change son système de transmission physique, à condition qu'il fasse fonctionner IP, nous n'avons pas à modifier notre service FTP.
• Les calques sont de bons endroits pour la normalisation. TCP et IP sont des standards car ils définissent le fonctionnement de leurs couches.
• Une fois que vous avez créé une couche, vous pouvez l'utiliser pour de nombreux services de niveau supérieur. Ainsi, TCP / IP est utilisé par FTP, telnet, SSH et HTTP. Sinon, tous ces protocoles de niveau supérieur devraient écrire leurs propres protocoles de niveau inférieur. De la bibliothèque de Kyle Geoffrey Passarelli
La superposition est une technique importante, mais il y a des inconvénients.
• Les couches encapsulent bien certaines choses, mais pas toutes. En conséquence, vous obtenez parfois des modifications en cascade. L'exemple classique de cela dans une application d'entreprise en couches est l'ajout d'un champ qui doit s'afficher sur l'interface utilisateur, doit être dans la base de données et doit donc être ajouté à chaque couche intermédiaire.
• Des couches supplémentaires peuvent nuire aux performances. À chaque couche, les choses doivent généralement être transformées d'une représentation à une autre. Cependant, l'encapsulation d'une fonction sous-jacente vous donne souvent des gains d'efficacité qui font plus que compenser. Une couche qui contrôle les transactions peut être optimisée et accélérera ensuite tout. Mais la partie la plus difficile d'une architecture en couches est de décider quelles couches avoir et quelle devrait être la responsabilité de chaque couche.