Schichtenarchitektur
aus Wikipedia, der freien Enzyklopädie
| Gesichtet | ||
Dies ist die letzte gesichtete Version,
(zeige alle), freigegeben am 24. Mai 2008.
|
| Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung. |
Eine Schichtenarchitektur oder Schichtenmodell ist ein häufig angewandtes Strukturierungsprinzip für die Architektur eines Softwaresystems. Dabei werden einzelne Aspekte des Softwaresystems konzeptionell einer Schicht (engl. tier oder layer) zugeordnet. Die erlaubten Abhängigkeitsbeziehungen zwischen den Aspekten werden bei einer Schichtenarchitektur dahingehend eingeschränkt, das Aspekte einer „höheren“ Schicht nur solche „tieferer“ Schichten verwenden dürfen. Ein System mit Schichtenarchitektur bezeichnet man auch als mehrschichtig.
Die den Schichten zugeordneten Aspekte können dabei je nach Art des Systems oder Detaillierungsgrad der Betrachtung z. B. Funktionalitäten, Komponenten oder Klassen sein.
Inhaltsverzeichnis |
[Bearbeiten] Vorteile
Durch eine Schichtenarchitektur wird die Komplexität der Abhängigkeiten innerhalb des Systems reduziert. Insbesondere werden durch sie Zyklen im Abhängigkeitsgraphen vermieden. Dies hat Vorteile sowohl für das Verständnis wie für die Wartung des Systems.
[Bearbeiten] Klassifikationen
Bei einer linearen Schichtenarchitektur dürfen keine Schichten übersprungen werden. Liegt hingegen eine Schichtenarchitektur mit strikter Ordnung zugrunde ist es möglich, einzelne Schichten zu überspringen.
Oftmals werden Schichtenarchitekturen nach der Anzahl der verwendeten Schichten unterteilt. Bei Anwendungssystemen sind dabei verschiedene Anwendungsfall-abhängige Schichtenarchitekturen gebräuchlich.
[Bearbeiten] Schichtenarchitekturen nach Anzahl Schichten
[Bearbeiten] Zwei-Schichten-Architektur
Die zweischichtige Architektur (englisch two tier architecture) ist eine Client-Server-Architektur, die softwareseitig als zweischichtiges System aufgebaut ist. Die Rechenkapazität wird dabei weitestgehend auf die Client-Rechner ausgelagert, um den Server zu entlasten.
Traditionell kommt ein Fat-Client und ein Fat-Server zum Einsatz. Auf dem Server läuft eine Datenbankanwendung. Die Clients übernehmen dabei die Logik und die Darstellung der Benutzerschnittstelle.
[Bearbeiten] Drei-Schichten-Architektur
Die dreischichtige Architektur (englisch three tier architecture) ist eine Client-Server-Architektur, die softwareseitig drei Schichten hat. Im Gegensatz zur zweischichtigen Architektur, bei der die Rechenkapazität weitestgehend auf die Client-Rechner ausgelagert wird um den Server zu entlasten, existiert bei der dreischichtigen Architektur noch eine zusätzliche Schicht, die Logikschicht, die die Datenverarbeitung vornimmt.
Man unterscheidet dabei:
- Präsentationsschicht (client tier) – Diese, auch Front-End bezeichnet, ist für die Repräsentation der Daten, Benutzereingaben und die Benutzerschnittstelle verantwortlich.
- Logikschicht (application-server tier, Businessschicht, Middle Tier oder Enterprise Tier) – Sie beinhaltet alle Verarbeitungsmechanismen. Hier ist die Anwendungslogik vereint.
- Datenhaltungsschicht (data-server tier, back end) – Sie enthält die Datenbank und ist verantwortlich für das Speichern und Laden von Daten.
Mehrschichtige Systemarchitekturen wie die dreischichtige Architektur sind gut skalierbar, da die einzelnen Schichten logisch voneinander getrennt sind. So kann z. B. die Datenschicht auf einem zentralen Datenbank-Server laufen, die Logikschicht auf Workgroup-Servern, und die Präsentationsschicht befindet sich auf der jeweiligen Workstation des Benutzers.
Diese Architektur bietet vor allem Vorteile bei der Entwicklung und Wartung, da man die Funktionalität der einzelnen Schichten relativ einfach austauschen kann, ohne die anderen auch mit ändern zu müssen. Typischerweise werden vor allem größere Business-Anwendungen als dreischichtige Systeme entworfen.
Ein Beispiel für eine Drei-Schichten-Architektur ist z. B. Citrix: Interaktion: Client; Funktion: Citrix Server; Daten: Datenbankserver.
Die Logikschicht kann auch wiederum aus mehreren Schichten bestehen. Man spricht dann von einer N-schichtigen-Architektur.
[Bearbeiten] Fünf-Schichten-Architektur
Die mehrschichtige Architektur (engl. multitier architecture) ist eine bestimmte Form einer Anwendungsarchitektur.
Bei dieser Art der Anwendungsarchitektur wird das Anwendungsprogramm in mehrere diskrete Komponenten aufgeteilt. Meist wird eine Drei-Schichten-Architektur (engl. three tier) angewendet, bei der die Applikation in Datenbank, Enterprise-Anwendungslogik und Präsentation (Web-Oberfläche, externe Schnittstelle oder Client) eingeteilt wird. Jede dieser Komponenten kann auf einem eigenen Computer laufen.
Es wird auch von der N-schichtigen Architektur gesprochen, und dies kann vom Prinzip her beliebig weit geführt werden.
[Bearbeiten] Weitere Schichten
Neben den oben genannten Schichten werden in verschiedenen Quellen andere Aufteilungen herangezogen. Grundsätzlich gibt es fünf mögliche Ebenen, die mit den oben genannten zum Teil korrespondieren:
- Präsentation
- Steuerung
- Anwendung
- Datenverwaltung
- Datenhaltung
Das Three-Tier-Modell wird dann wie folgt beschrieben:
- Präsentation
- Funktion
- Daten
[Bearbeiten] Unterschiedliche Aufteilung
Zwischen Client und Server gibt es verschiedene Möglichkeiten zur Verteilung der Schichten. Grundsätzlich gilt: Je höher (näher an der Präsentationsschicht) die Schicht ist, desto eher wird sie von einem Client bearbeitet. Je tiefer (näher an der Datenschicht) die Schicht ist, desto eher ist sie Aufgabe eines Servers.
[Bearbeiten] Klassische Schichten innerhalb einer mehrschichtigen Architektur
[Bearbeiten] Präsentationsschicht
Die Präsentationsschicht dient der Darstellung der Inhalte und der Entgegennahme von Benutzereingaben. Für die Darstellung der Inhalte existieren zwei Alternativen:
- Man setzt auf den Internetbrowser als Thin Client und stellt die Inhalte und Formulare in XHTML, XML und anderen, für das WWW geschaffenen Sprachen dar, nutzt also eine klassische „Webanwendung“.
- Man produziert eine eigene grafische Benutzeroberfläche als Fat-Client.
Für den Datenaustausch zwischen Präsentationsschicht und Geschäftslogikschicht gibt es ebenfalls mehrere Alternativen:
[Bearbeiten] Geschäftslogikschicht
Die Geschäftslogikschicht (auch Verarbeitungsschicht, Anwendungslogikschicht, Application Layer oder Middle Tier) realisiert das eigentliche Geschäftsmodell, indem die am Geschäftsmodell beteiligten Geschäftsobjekte und Geschäftsprozesse implementiert werden.
Da Webbrowser besonders beliebte Thin-Clients für Application Server darstellen, sind die meisten Application Server entweder Ergänzungen zu Webservern (z. B. Perl oder PHP für Apache oder IIS) oder enthalten einen Webserver (z. B. Tomcat in JBoss, WebSphere oder WebLogic).
Für den Datenaustausch zwischen Geschäftslogikschicht und Datenhaltungsschicht werden Datenbankschnittstellen wie JDBC, ADO.NET, ODBC oder Perl-DBI sowie alternativ der direkte Zugriff auf das DBMS (Datenbank Management System) verwendet (z. B. bei PHP).
[Bearbeiten] Datenhaltungsschicht
Trotz objektorientierter Programmierung wird auch heute noch in der Regel ein relationales DBMS eingesetzt, um die Datenhaltung für Application Server zu realisieren. Häufig besteht dabei eine Eins-zu-Eins-Abbildung von Geschäftsobjekt-Klassen auf Tabellen bzw. Geschäftsobjekt-Instanzen auf Tabellenzeilen (Datensätze). Diese Abbildung wird als objektrelationale Abbildung (object-relational mapping, ORM) bezeichnet.
[Bearbeiten] Weitere Anwendungen von Schichtenarchitekturen
[Bearbeiten] Schichtenmodell bei Betriebssystemen
Ein Schichtenmodell, auch Schalenmodell genannt, ist eines von drei wesentlichen Architekturmodellen von Betriebssystemen. Neben dem Monolithischen Kernel und dem Mikrokernel gibt es das Schichtenmodell. Bei dem Schichtenmodell sind die verschiedenen Betriebssystemkomponenten wie Schalen aufeinander aufgebaut. Dies ist auch in der nebenstehenden Abbildung zu sehen.
Die Übergänge zwischen den Schichten werden von Schnittstellen gebildet, wobei die Übergänge sauber sein müssen, es gibt keine Sprünge (z. B. von einem Anwendungsprogramm direkt in die Datenstruktur). Die Kommunikation erfolgt über die Schnittstellen jeder einzelnen Zwischenschicht.
Allgemein kann man sagen, je näher eine Schicht an der Hardware, desto privilegierter ist diese bezüglich Schreib- und Leseberechtigungen. Der Übergang vom Kernel-Mode zum User-Mode kann unter Umständen schwer abzugrenzen sein.
[Bearbeiten] Siehe auch
- Applikationsserver
- Client-Server-Modell
- IT-Architektur
- Model-View-Controller
- Orchestrierung
- Serviceorientierte Architektur
- Verteiltes System
- Webservice

