Martin Fowler demonstriert deutlich:
Layering ist eine der häufigsten Techniken, mit denen Softwareentwickler ein kompliziertes Softwaresystem auseinander brechen. Sie sehen es in Maschinenarchitekturen, in denen Schichten von einer Programmiersprache mit Betriebssystemaufrufen in Gerätetreiber und CPU-Befehlssätze sowie in Logikgatter innerhalb von Chips absteigen. Das Netzwerk verfügt über eine FTP-Schicht über TCP, die über IP und über Ethernet liegt.
Wenn Sie sich ein System in Schichten vorstellen, stellen Sie sich die wichtigsten Subsysteme in der Software vor, die in einer Art Schichtkuchen angeordnet sind, wobei jede Schicht auf einer unteren Schicht ruht. In diesem Schema verwendet die höhere Schicht verschiedene Dienste, die durch die untere Schicht definiert sind, aber die untere Schicht kennt die höhere Schicht nicht. Darüber hinaus verbirgt jede Schicht normalerweise ihre unteren Schichten vor den darüber liegenden Schichten, sodass Schicht 4 die Dienste von Schicht 3 verwendet, die die Dienste von Schicht 2 nutzt, Schicht 4 jedoch Schicht 2 nicht kennt. (Nicht alle Schichtarchitekturen sind so undurchsichtig , aber die meisten sind - oder vielmehr die meisten sind meistens undurchsichtig.)
Das Aufteilen eines Systems in Schichten hat eine Reihe wichtiger Vorteile.
• Sie können eine einzelne Ebene als zusammenhängendes Ganzes verstehen, ohne viel über die anderen Ebenen zu wissen. Sie können verstehen, wie Sie einen FTP-Dienst auf TCP aufbauen, ohne die Details der Funktionsweise von Ethernet zu kennen.
• Sie können Ebenen durch alternative Implementierungen derselben Basisdienste ersetzen. Ein FTP-Dienst kann ohne Änderung über Ethernet, PPP oder was auch immer ein Kabelunternehmen verwendet, ausgeführt werden.
• Sie minimieren Abhängigkeiten zwischen Ebenen. Wenn das Kabelunternehmen sein physisches Übertragungssystem ändert, sofern IP funktioniert, müssen wir unseren FTP-Dienst nicht ändern.
• Ebenen eignen sich gut für die Standardisierung. TCP und IP sind Standards, da sie definieren, wie ihre Schichten funktionieren sollen.
• Sobald Sie eine Ebene erstellt haben, können Sie sie für viele übergeordnete Dienste verwenden. Daher wird TCP / IP von FTP, Telnet, SSH und HTTP verwendet. Andernfalls müssten alle diese Protokolle höherer Ebene ihre eigenen Protokolle niedrigerer Ebene schreiben. Aus der Bibliothek von Kyle Geoffrey Passarelli
Layering ist eine wichtige Technik, hat aber auch Nachteile.
• Ebenen kapseln einige, aber nicht alle Dinge gut. Infolgedessen erhalten Sie manchmal kaskadierende Änderungen. Das klassische Beispiel hierfür in einer mehrschichtigen Unternehmensanwendung ist das Hinzufügen eines Felds, das auf der Benutzeroberfläche angezeigt werden muss, sich in der Datenbank befinden muss und daher zu jeder dazwischen liegenden Schicht hinzugefügt werden muss.
• Zusätzliche Schichten können die Leistung beeinträchtigen. Auf jeder Ebene müssen Dinge normalerweise von einer Darstellung in eine andere transformiert werden. Die Kapselung einer zugrunde liegenden Funktion führt jedoch häufig zu Effizienzgewinnen, die mehr als kompensiert werden. Eine Ebene, die Transaktionen steuert, kann optimiert werden und beschleunigt dann alles. Der schwierigste Teil einer mehrschichtigen Architektur besteht jedoch darin, zu entscheiden, welche Schichten vorhanden sein sollen und welche Verantwortung die einzelnen Schichten tragen sollen.