Was ist N-Tier-Architektur?

193

Ich habe in letzter Zeit einige Stellenausschreibungen für Entwickler gesehen, die einen Satz enthalten, der mehr oder weniger so lautet: "Muss Erfahrung mit der N-Tier-Architektur haben" oder "Muss in der Lage sein, N-Tier-Apps zu entwickeln".

Dies führt mich zu der Frage, was ist N-Tier-Architektur? Wie sammelt man Erfahrungen damit?

Joshua Carmody
quelle
2
Interessant, dass in diesem anderen Beitrag auch gefragt wird, was N-Tier-Architektur ist, aber die Antworten sind völlig unterschiedlich. stackoverflow.com/questions/7271165/… . Es scheint, dass es eine N-Tier-Architektur für Software und eine N-Tier-Architektur für Hardware gibt.
Noremac

Antworten:

247

Wikipedia :

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

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

Alt-Text

Bearbeiten : Eine Implikation ist, dass die Präsentationsschicht und die Logikschicht (manchmal als Business Logic Layer bezeichnet) Maschinengrenzen "über das Kabel" überschreiten müssen, manchmal über ein unzuverlässiges, langsames und / oder unsicheres Netzwerk. Dies unterscheidet sich stark von einfachen Desktop-Anwendungen, bei denen sich die Daten auf demselben Computer befinden wie Dateien oder Webanwendungen, bei denen Sie direkt auf die Datenbank zugreifen können.

Für die n-Tier-Programmierung müssen Sie die Daten in einer transportablen Form namens "Dataset" verpacken und über das Kabel fliegen. Die DataSet- Klasse oder das Web Services-Protokoll von .NET wie SOAP sind nur einige dieser Versuche, Objekte über das Kabel zu fliegen.

Eugene Yokota
quelle
6
"3-Ebenen" und "N-Ebenen" gibt es einen Unterschied?
Chakrit
7
Es hängt davon ab, wie Sie "Ebenen" zählen (logisch, physisch usw.), aber Sie können leicht mehr als 3 Prozesse zum Schreiben einer App ausführen. Benutzeroberfläche, Benutzeroberflächenplattform (wie Eclipse RCP), Webdienste, BLL, DAL, Datenbank, Authentifizierungsdienste, Berichtsdienste, Analysedienste ...
Eugene Yokota
6
@chakrit: In meiner Zeit (ich bin alt) bezogen sich mehr als 2 Ebenen (Client-Server) automatisch auf n-Ebenen.
Eduardo Molteni
@EugeneYokota - es wird gesagt , dass Ebene darzustellen sind physikalische Abschnitte in der Architektur (die in einem Cluster kann oder kann nicht weiter patitioned wird, zum Beispiel), und Schichten auf die beziehen logische Gruppierung der Anwendungskomponenten.
Eliran Malka
Mir wurde etwas gesagt, das sehr ähnlich aussieht, aber mit den Ebenen Präsentationsebene - Serviceebene - Integration / Datenebene. Wissen Sie, ob dies nur unterschiedliche Wörter für dasselbe wie die oben gezeigte Architektur oder etwas anderes sind? Soweit ich weiß, scheinen sie gleich zu sein, aber ich möchte sicher gehen.
KayleighArianna
20

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

  • 3-Tier bedeutet Präsentationsschicht + Komponentenschicht + Datenzugriffsschicht.
  • N-Tier ist, wenn zusätzliche Schichten darüber hinaus hinzugefügt werden, normalerweise für zusätzliche Modularität, Konfigurierbarkeit oder Interoperabilität mit anderen Systemen.
tsilb
quelle
12
Wenn eine dieser Ebenen von einer entfernten Partei, beispielsweise einem Zahlungsabwickler, gehostet wird, ist diese Ebene möglicherweise nicht so "unnötig"
Zak
1
Hmm. Es gibt einen großen Unterschied zwischen "Ebenen" und "Diensten". N-Tier wird normalerweise verwendet, um anzugeben, dass für die angegebene Schicht alles darüber liegende durchlaufen werden muss, um auf Dienste niedrigerer Ebene zugreifen zu können. Wenn sie parallel sind, würde ich sie eher Dienste als Ebenen nennen.
Dak
Beim Aufbau des üblichen MCV (einer 3-Tier-Architektur) kann man sich dafür entscheiden, das MCV mit Doppeldeck-Schnittstellen zu implementieren, so dass man tatsächlich eine bestimmte Schicht ersetzen kann, ohne auch nur eine Codezeile ändern zu müssen. Wir sehen die Vorteile häufig, beispielsweise in Szenarien, in denen Sie mehr als eine Datenbank verwenden möchten (in diesem Fall haben Sie eine doppelte Schnittstelle zwischen der Steuerungs- und der Datenschicht). Wenn Sie es auf die Ansichtsebene (Präsentation) legen, können Sie (warten !!) die USER-Schnittstelle durch eine andere Maschine ersetzen und dadurch die ECHTE Eingabe automatisieren (!!!)
David Svarrer
15

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

1800 INFORMATIONEN
quelle
4

N-Tier-Datenanwendungen sind Datenanwendungen, die in mehrere Ebenen unterteilt sind. N-Tier-Anwendungen werden auch als "verteilte Anwendungen" und "mehrschichtige Anwendungen" bezeichnet und trennen die Verarbeitung in diskrete Ebenen, die zwischen dem Client und dem Server verteilt sind. 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. Der einfachste Weg, die verschiedenen Ebenen in einer n-Tier-Anwendung zu trennen, besteht darin, diskrete Projekte für jede Ebene zu erstellen, die Sie in Ihre Anwendung aufnehmen möchten. Beispielsweise kann die Präsentationsschicht eine Windows Forms-Anwendung sein, während die Datenzugriffslogik eine Klassenbibliothek sein kann, die sich in der mittleren Schicht befindet. Darüber hinaus kann die Präsentationsschicht über einen Dienst wie einen Dienst mit der Datenzugriffslogik in der mittleren Schicht kommunizieren. Das Aufteilen von Anwendungskomponenten in separate Ebenen erhöht die Wartbarkeit und Skalierbarkeit der Anwendung. Dies ermöglicht eine einfachere Einführung neuer Technologien, die auf eine einzelne Ebene angewendet werden können, ohne dass die gesamte Lösung neu gestaltet werden muss. Zusätzlich,

Entnommen von der Microsoft- Website .

Robert Rocha
quelle
4

Wenn ich die Frage verstehe, dann scheint es mir, dass der Fragesteller wirklich fragt: "OK, also 3-Tier ist gut verstanden, aber es scheint, dass es eine Mischung aus Hype, Verwirrung und Unsicherheit darüber gibt, was 4-Tier oder was ist Verallgemeinern Sie, N-Tier-Architekturen bedeuten. Also ... was ist eine Definition von N-Tier, die weithin verstanden und vereinbart wird? "

Es ist eigentlich eine ziemlich tiefe Frage, und um zu erklären, warum, muss ich etwas tiefer gehen. Trage es mit mir.

Die klassische dreistufige Architektur: Datenbank, "Geschäftslogik" und Präsentation ist ein guter Weg, um zu klären, wie das Prinzip der Trennung von Bedenken eingehalten werden kann. Das heißt, wenn ich ändern möchte, wie "das Unternehmen" Kunden bedienen möchte, sollte ich nicht das gesamte System durchsehen müssen, um herauszufinden, wie dies zu tun ist, und insbesondere sollten Entscheidungen, die geschäftliche Probleme betreffen, nicht verstreut sein wohl oder übel durch den Code.

Jetzt hat dieses Modell jahrzehntelang gute Dienste geleistet und ist das klassische Client-Server-Modell. Schneller Vorlauf zu Cloud-Angeboten, bei denen Webbrowser die Benutzeroberfläche für eine breite und physisch verteilte Gruppe von Benutzern darstellen und in der Regel Inhaltsverteilungsdienste hinzugefügt werden müssen, die nicht Teil der klassischen 3-Tier-Architektur sind (und die eigenständig verwaltet werden müssen).

Das Konzept verallgemeinert, wenn es um Dienste, Mikrodienste, die Verteilung von Daten und Berechnungen usw. geht. Ob etwas eine "Schicht" ist oder nicht, hängt weitgehend davon ab, ob die Schicht eine Schnittstelle und ein Bereitstellungsmodell für Dienste bereitstellt, die sich hinter (oder unter) der Schicht befinden. Ein Netzwerk zur Verteilung von Inhalten wäre also eine Schicht, ein Authentifizierungsdienst jedoch nicht.

Lesen Sie jetzt andere Beschreibungen von Beispielen für N-Tier-Architekturen unter Berücksichtigung dieses Konzepts, und Sie werden beginnen, das Problem zu verstehen. Weitere Perspektiven sind herstellerbasierte Ansätze (z. B. NGINX), inhaltsbewusste Load Balancer, Datenisolations- und Sicherheitsdienste (z. B. IBM Datapower), die einer bestimmten Architektur, Bereitstellung und Anwendungsfällen möglicherweise einen Mehrwert verleihen oder nicht .

Dak
quelle
3

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

GregD
quelle
3

N-Tier-Datenanwendungen sind Datenanwendungen, die in mehrere Ebenen unterteilt sind. N-Tier-Anwendungen werden auch als "verteilte Anwendungen" und "mehrschichtige Anwendungen" bezeichnet und trennen die Verarbeitung in diskrete Ebenen, die zwischen dem Client und dem Server verteilt sind. 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

olyv
quelle
3

Beim Aufbau des üblichen MCV (einer 3-Tier-Architektur) kann man sich dafür entscheiden, das MCV mit Doppeldeck-Schnittstellen zu implementieren, so dass man tatsächlich eine bestimmte Schicht ersetzen kann, ohne auch nur eine Codezeile ändern zu müssen.

Die Vorteile davon sehen wir häufig , beispielsweise in Szenarien, in denen Sie mehr als eine Datenbank verwenden möchten (in diesem Fall haben Sie eine doppelte Schnittstelle zwischen der Steuerungs- und der Datenschicht).

Wenn Sie es auf die Ansichtsebene (Präsentation) legen , können Sie (warten !!) die USER-Schnittstelle durch eine andere Maschine ersetzen und dadurch die REAL-Eingabe automatisieren (!!!) - und damit mühsame Usability-Tests von Tausenden durchführen Zeiten, in denen kein Benutzer immer wieder auf dieselben Dinge tippen und erneut tippen und erneut tippen muss.

Einige beschreiben eine solche 3-Tier-Architektur mit 1 oder 2 Doppelschnittstellen als 4-Tier oder 5-Tier- Architektur, was implizit die Doppelschnittstellen impliziert.

Andere Fälle umfassen (ohne darauf beschränkt zu sein) die Tatsache, dass Sie - im Falle von halb- oder vollständig replizierten Datenbanksystemen - praktisch in der Lage wären, eine der Datenbanken als "Master" zu betrachten, und dadurch eine Ebene hätten bestehend aus dem Master und einem weiteren bestehend aus der Slave-Datenbank.

Mobiles Beispiel

Daher hat Multi-Tier - oder N-Tier - in der Tat einige Interpretationen, während ich mich sicherlich an die 3-Tier + Extra-Ebenen halten würde, die aus dünnen Schnittstellenplatten bestehen, die dazwischen eingeklemmt sind, um diese Tier-Swaps zu ermöglichen, und in Bezug auf Beim Testen (insbesondere auf Mobilgeräten verwendet) können Sie jetzt Benutzertests für die reale Software ausführen, indem Sie das Tippen eines Benutzers auf eine Weise simulieren, die die Steuerlogik nicht von einem tatsächlichen Tippen des Benutzers unterscheiden kann. Dies ist bei der Simulation realer Benutzertests von größter Bedeutung , da Sie alle Eingaben von der Benutzer-OTA aufzeichnen und diese Eingabe dann bei Regressionstests wiederverwenden können.

David Svarrer
quelle
2

Wenn wir von Ebenen sprechen, sprechen wir im Allgemeinen von physischen 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 spricht die Geschäftsebene mit Mainframes (separater Prozess) und mit dem Reporting Service (separater Prozess). Diese Anwendung ist dann fünfstufig.

Daher ist der generische Name n-Tier.

Sandeep Jindal
quelle
2

von https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

Eine N-Tier-Architektur unterteilt Anwendungsreifen hauptsächlich in logische Reifen und physische Ebenen, und diese sind in Unterteile unterteilt. Geben Sie hier die Bildbeschreibung ein

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 zu einer anderen Schicht aufrufen oder asynchrones Messaging (Nachrichtenwarteschlange) verwenden. Obwohl jede Ebene in einer eigenen Ebene gehostet werden kann, ist dies nicht erforderlich. Möglicherweise werden mehrere Ebenen auf derselben Ebene gehostet. Das physische Trennen der Ebenen verbessert die Skalierbarkeit und Ausfallsicherheit, erhöht jedoch auch die Latenz durch die zusätzliche Netzwerkkommunikation.

Eine herkömmliche dreistufige Anwendung verfügt über eine Präsentationsebene, eine mittlere Ebene und eine Datenbankebene. Die mittlere Stufe ist optional. Komplexere Anwendungen können mehr als drei Ebenen haben. Das obige Diagramm zeigt eine Anwendung mit zwei mittleren Ebenen, die verschiedene Funktionsbereiche einschließen.

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

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 Architektur mit geschlossenen Schichten begrenzt die Abhängigkeiten zwischen Schichten. Es kann jedoch zu unnötigem Netzwerkverkehr kommen, wenn eine Schicht Anforderungen einfach an die nächste Schicht weiterleitet.

Manjitha Teshara
quelle
1

Eine N-Tier-Anwendung ist eine Anwendung, an der mehr als drei Komponenten beteiligt sind. Was sind diese Komponenten?

  • Zwischenspeicher
  • Nachrichtenwarteschlangen für asynchrones Verhalten
  • Load Balancer
  • Durchsuchen Sie Server zum Durchsuchen großer Datenmengen
  • Komponenten, die an der Verarbeitung großer Datenmengen beteiligt sind
  • Komponenten, auf denen heterogene Technologien ausgeführt werden, die allgemein als Webdienste usw. bekannt sind.

Alle sozialen Anwendungen wie Instagram, Facebook, große Industriedienste wie Uber, Airbnb, Online-Massive-Multiplayer-Spiele wie Pokemon Go und Anwendungen mit ausgefallenen Funktionen sind n-Tier-Anwendungen.

Sonniger Sultan
quelle
0

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.

Hamit YILDIRIM
quelle