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?
architecture
n-tier-architecture
multi-tier
Joshua Carmody
quelle
quelle
Antworten:
Wikipedia :
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.
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.
quelle
Es basiert darauf, wie Sie die Präsentationsschicht von der Kerngeschäftslogik und dem Datenzugriff ( Wikipedia ) trennen.
quelle
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".
quelle
Entnommen von der Microsoft- Website .
quelle
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 .
quelle
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.
quelle
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
quelle
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.
quelle
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.
Daher ist der generische Name n-Tier.
quelle
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.
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:
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.
quelle
Eine N-Tier-Anwendung ist eine Anwendung, an der mehr als drei Komponenten beteiligt sind. Was sind diese Komponenten?
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.
quelle
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.
quelle