web-dev-qa-db-de.com

Was ist N-Tier-Architektur?

Ich habe in letzter Zeit einige Stellenausschreibungen von Entwicklern gesehen, die einen Satz enthalten, der ungefähr so ​​lautet: "Muss Erfahrung mit N-Tier-Architektur haben" oder "Muss in der Lage sein, N-Tier-Apps zu entwickeln".

Dies veranlasst mich zu fragen, was N-Tier-Architektur ist. Wie sammelt man Erfahrungen damit?

188
Joshua Carmody

Wikipedia :

In der Softwareentwicklung ist die mehrschichtige Architektur (häufig als n-Schicht-Architektur bezeichnet) eine Client-Server-Architektur, bei der die Präsentation, die Anwendungsverarbeitung und das Datenmanagement logisch getrennte Prozesse sind. Beispielsweise verwendet eine Anwendung, die Middleware zum Verarbeiten von Datenanforderungen zwischen einem Benutzer und einer Datenbank verwendet, eine mehrschichtige Architektur. Die am weitesten verbreitete Verwendung von "mehrschichtiger Architektur" bezieht sich auf dreischichtige Architektur.

Es ist fraglich, was als "Ebenen" gilt, aber meiner Meinung nach muss es zumindest die Prozessgrenze überschreiten. Oder es heißt Schichten. Es muss sich jedoch nicht in physisch unterschiedlichen Maschinen befinden. Obwohl ich es nicht empfehle, können Sie can logische Ebene und Datenbank auf derselben Box hosten.

alt text

Bearbeiten : Eine Implikation ist, dass die Präsentationsebene und die Logikebene (manchmal als Business Logic Layer bezeichnet) Maschinengrenzen "über die Leitung" hinweg manchmal über unzuverlässig überschreiten müssen , langsames und/oder unsicheres Netzwerk. Dies unterscheidet sich stark von einfachen Desktopanwendungen, bei denen die Daten auf demselben Computer wie Dateien oder Webanwendungen gespeichert sind, auf denen Sie die Datenbank direkt aufrufen können.

Für die n-Tier-Programmierung müssen Sie die Daten in einer Art transportabler Form, die als "Datensatz" bezeichnet wird, packen und über die Leitung fliegen. Die .NET-Klasse DataSet oder das Web Services-Protokoll SOAP sind nur einige dieser Versuche, Objekte über die Leitung zu fliegen.

244
Eugene Yokota

Es basiert darauf, wie Sie die Präsentationsschicht von der Kerngeschäftslogik und dem Datenzugriff trennen ( Wikipedia )

-Tier bedeutet Präsentationsebene + Komponentenebene + Datenzugriffsebene. N-Tier bedeutet, dass nicht mehr benötigte Ebenen hinzugefügt werden und es mit einem Schlagwort versehen ist, sodass es nicht so aussieht, als wären Ihre Architekten ein Haufen Crack-Affen. Ich sage dies basierend auf der N-Tier-Architektur, mit der ich arbeiten muss.

22
tsilb

Es ist ein Schlagwort, das sich auf Dinge wie die normale Webarchitektur mit z. B. Javascript - ASP.Net - Middleware - Datenbankebene bezieht. Jedes dieser Dinge ist eine "Stufe".

16

N-Tier-Datenanwendungen sind Datenanwendungen, die in mehrere Ebenen unterteilt sind. N-Tier-Anwendungen werden auch als "verteilte Anwendungen" und "mehrschichtige Anwendungen" bezeichnet und unterteilen die Verarbeitung in separate Ebenen, die zwischen dem Client und dem Server verteilt werden. Wenn Sie Anwendungen entwickeln, die auf Daten zugreifen, sollten Sie eine klare Trennung zwischen den verschiedenen Ebenen haben, aus denen die Anwendung besteht.

Eine typische n-Tier-Anwendung umfasst eine Präsentationsschicht, eine mittlere Schicht und eine Datenschicht. Die einfachste Möglichkeit, die verschiedenen Ebenen in einer N-Tier-Anwendung zu trennen, besteht darin, für jede Ebene, die Sie in Ihre Anwendung aufnehmen möchten, separate Projekte zu erstellen. Die Präsentationsebene kann beispielsweise eine Windows Forms-Anwendung sein, während die Datenzugriffslogik eine Klassenbibliothek in der mittleren Ebene sein kann. Darüber hinaus kann die Präsentationsschicht über einen Dienst, beispielsweise einen Dienst, mit der Datenzugriffslogik in der mittleren Schicht kommunizieren. Die Trennung von Anwendungskomponenten in separate Ebenen erhöht die Wartbarkeit und Skalierbarkeit der Anwendung. Dies wird erreicht, indem die Übernahme neuer Technologien erleichtert wird, die auf eine einzelne Ebene angewendet werden können, ohne dass die gesamte Lösung neu entworfen werden muss. Darüber hinaus speichern n-Tier-Anwendungen in der Regel vertrauliche Informationen in der mittleren Schicht, wodurch die Isolation von der Präsentationsschicht erhalten bleibt.

Entnommen von Microsoft Website .

4
Robert Rocha

Bei der Erstellung des üblichen MCV (eine 3-Ebenen-Architektur) kann man beschließen, das MCV mit Doppeldeck-Schnittstellen zu implementieren, so dass man tatsächlich eine bestimmte Ebene ersetzen kann, ohne auch nur eine Zeile von ändern zu müssen Code.

Wir sehen oft die Vorteile davon, zum Beispiel in Szenarien, in denen Sie in der Lage sein möchten, mehr als eine Datenbank zu verwenden (in diesem Fall haben Sie eine doppelte Schnittstelle zwischen der Steuerungs- und der Datenschicht).

Wenn Sie es auf die View-Ebene legen (Präsentation), dann können Sie (festhalten !!) die USER-Schnittstelle durch eine andere Maschine ersetzen und dadurch die REAL-Eingabe automatisieren (!!!) - und Sie können Führen Sie dabei Tausende von Malen langwierige Usability-Tests durch, ohne dass ein Benutzer immer wieder dieselben Dinge antippen und erneut antippen und erneut antippen muss.

Einige beschreiben eine solche -stufige Architektur mit 1 oder 2 Doppelschnittstellen als 4-stufige oder 5-stufige Architektur, die implizit die Doppelschnittstelle impliziert. Schnittstellen.

Andere Fälle beinhalten (sind aber nicht beschränkt auf) die Tatsache, dass Sie - im Falle von halb- oder vollständig replizierten Datenbanksystemen - praktisch eine der Datenbanken als "Master" betrachten könnten und dadurch eine Schicht hätten bestehend aus dem Master und einem weiteren bestehend aus der Slave-Datenbank.

Mobiles Beispiel

daher mehrschichtig - oder n-schichtig - hat in der Tat einige Interpretationen, wohingegen ich mich sicherlich an die 3-schichtigen + zusätzlichen Schichten halten würde, die aus dünnen Schnittstellenplatten bestehen, die dazwischen eingeklemmt sind, um die Schicht zu ermöglichen -swaps und in Bezug auf Tests (insbesondere auf Mobilgeräten) können Sie jetzt Benutzertests für die reale Software ausführen, indem Sie das Antippen eines Benutzers simulieren auf eine Weise, die die Steuerlogik nicht von einer realen unterscheiden kann Benutzer tippen. Dies ist für Simulation realer Benutzertests von größter Bedeutung, da Sie alle Eingaben von der OTA des Benutzers aufzeichnen und diese dann bei Regressionstests wiederverwenden können.

3
David Svarrer

N-Tier-Datenanwendungen sind Datenanwendungen, die in mehrere Ebenen unterteilt sind. N-Tier-Anwendungen, die auch als "verteilte Anwendungen" und "Mehrschichtanwendungen" bezeichnet werden, unterteilen die Verarbeitung in separate Ebenen, die zwischen dem Client und dem Server verteilt werden. Wenn Sie Anwendungen entwickeln, die auf Daten zugreifen, sollten Sie eine klare Trennung zwischen den verschiedenen Ebenen haben, aus denen die Anwendung besteht.

Und so weiter in http://msdn.Microsoft.com/en-us/library/bb384398.aspx

3
olyv

Ich verstehe, dass N-Tier Geschäftslogik, Clientzugriff und Daten mithilfe separater physischer Maschinen voneinander trennt. Die Theorie ist, dass einer von ihnen unabhängig von den anderen aktualisiert werden kann.

3
GregD

Wenn wir von Ebenen sprechen, sprechen wir im Allgemeinen von physikalischen Prozessen (mit unterschiedlichem Speicherplatz).

Wenn also Ebenen einer Anwendung in unterschiedlichen Prozessen bereitgestellt werden, sind diese unterschiedlichen Prozesse unterschiedliche Ebenen.

Beispiel: In einer dreistufigen Anwendung wird die Business-Schicht mit Mainframes (separater Prozess) und mit Reporting Service (separater Prozess) gesprochen. Diese Anwendung ist dann fünfstufig.

Daher ist der generische Name n-Tier.

2
Sandeep Jindal

from https://docs.Microsoft.com/en-us/Azure/architecture/guide/architecture-styles/n-tier

Eine N-Tier-Architektur unterteilt einen Anwendungsreifen in logische Reifen und physische Schichten sind hauptsächlich in Unterteile unterteilt. enter image description here

Ebenen sind eine Möglichkeit, Verantwortlichkeiten zu trennen und Abhängigkeiten zu verwalten. Jede Schicht hat eine spezifische Verantwortung. Eine höhere Schicht kann Dienste in einer niedrigeren Schicht verwenden, aber nicht umgekehrt.

Ebenen sind physisch getrennt und werden auf separaten Computern ausgeführt. Eine Schicht kann direkt eine andere Schicht anrufen oder asynchrones Messaging (Nachrichtenwarteschlange) verwenden. Obwohl jede Ebene möglicherweise in einer eigenen Ebene gehostet wird, ist dies nicht erforderlich. Möglicherweise werden mehrere Ebenen auf derselben Ebene gehostet. Die physische Trennung der Ebenen verbessert die Skalierbarkeit und Ausfallsicherheit, erhöht jedoch auch die Latenz aufgrund der zusätzlichen Netzwerkkommunikation.

Eine herkömmliche dreischichtige Anwendung verfügt über eine Präsentationsschicht, eine mittlere Schicht und eine Datenbankschicht. Die mittlere Stufe ist optional. Komplexere Anwendungen können mehr als drei Ebenen haben. Das obige Diagramm zeigt eine Anwendung mit zwei mittleren Ebenen, in denen verschiedene Funktionsbereiche zusammengefasst sind.

Eine N-Tier-Anwendung kann eine Closed-Layer-Architektur oder eine Open-Layer-Architektur haben:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

Eine geschlossene Ebenenarchitektur begrenzt die Abhängigkeiten zwischen den Ebenen. Es kann jedoch zu unnötigem Netzwerkverkehr kommen, wenn eine Ebene Anforderungen einfach an die nächste Ebene weiterleitet.

2

Martin Fowler demonstriert deutlich:

Layering ist eine der häufigsten Techniken, mit denen Softwareentwickler ein kompliziertes Softwaresystem aufteilen. Sie sehen es in Maschinenarchitekturen, in denen Schichten aus einer Programmiersprache mit Betriebssystemaufrufen in Gerätetreiber und CPU-Befehlssätze und in Logikgatter in Chips absteigen. Beim Netzwerk wird FTP auf TCP und IP auf Ethernet aufgeschichtet.

Wenn Sie sich ein System in Schichten vorstellen, stellen Sie sich die wichtigsten Subsysteme in der Software vor, die in Form eines Schichtkuchens angeordnet sind, wobei jede Schicht auf einer unteren Schicht ruht. In diesem Schema verwendet die höhere Schicht verschiedene Dienste, die durch die niedrigere Schicht definiert sind, aber die niedrigere 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 verwenden, Schicht 4 jedoch Schicht 2 nicht kennt. (Nicht alle Schichtarchitekturen sind so undurchsichtig , aber die meisten sind - oder besser gesagt, die meisten sind meist 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 über TCP erstellen, 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, müssen wir unseren FTP-Dienst nicht ändern, sofern IP funktioniert.

• Ebenen sind gute Orte für die Standardisierung. TCP und IP sind Standards, da sie definieren, wie ihre Layer funktionieren sollen.

• Sobald Sie einen Layer erstellt haben, können Sie ihn 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

Schichtung ist eine wichtige Technik, aber es gibt auch Nachteile.

• Ebenen kapseln einige, aber nicht alle Dinge gut. Infolgedessen kommt es manchmal zu kaskadierenden Änderungen. Das klassische Beispiel in einer mehrschichtigen Unternehmensanwendung ist das Hinzufügen eines Felds, das auf der Benutzeroberfläche angezeigt werden muss, in der Datenbank vorhanden sein 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 die Dinge normalerweise von einer Darstellung in eine andere umgewandelt werden. Die Einkapselung einer zugrunde liegenden Funktion führt jedoch häufig zu Effizienzgewinnen, die mehr als kompensieren. Eine Ebene, die Transaktionen steuert, kann optimiert werden und beschleunigt dann alles. Das Schwierigste an einer geschichteten Architektur ist jedoch, zu entscheiden, welche Ebenen vorhanden sein sollen und welche Verantwortung die einzelnen Ebenen tragen sollen.

0
Hamit YILDIRIM