Frage

Ich habe in letzter Zeit einige Stellenausschreibungen für Entwickler gesehen, die einen Satz enthielten, der ungefähr so ​​lautete:„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?

War es hilfreich?

Lösung

Wikipedia :

  

In der Software-Engineering, Multi-Tier   Architektur (oft bezeichnet als   n-Schicht-Architektur) ist ein   Client-Server-Architektur, bei der,   die Präsentation, die Anwendung   Verarbeitung und die Datenverwaltung sind   logisch getrennte Prozesse. Zum   beispielsweise eine Anwendung, die verwendet   Middleware-Servicedatenanfragen   zwischen einem Benutzer und einer Datenbank beschäftigt   Multi-Tier-Architektur. Am meisten   weit verbreitete Verwendung von „Multi-Tiere   Architektur“bezieht sich auf dreistufiges   Architektur.

Es ist fraglich, was als „Stufe“, zählt aber meiner Meinung nach muss es zumindest, um die Prozessgrenze überquert. Sonst ist es Schichten genannt. Aber es muss nicht in physisch verschiedenen Maschinen sein. Obwohl ich es nicht empfehlen, Sie können Host logische Ebene und Datenbank auf dem gleichen Feld.

alt text

Bearbeiten : Eine Folge ist, dass Präsentationsschicht und die Logikebene (manchmal Business-Logik-Schicht genannt) muss Maschine Grenzen „über den Draht“ überquert manchmal über unzuverlässigen, langsam und / oder unsicheres Netzwerk . Das ist sehr verschieden von der einfachen Desktop-Anwendung, wo die Daten auf der gleichen Maschine wie Dateien oder Web Application lebt, wo Sie direkt auf die Datenbank treffen kann.

Für n-Tier-Programmierung, müssen Sie die Daten in einer Art transportierbar Form verpacken als „Daten-Set“ und sie über den Draht fliegen. .NET DataSet Klasse oder Web-Services-Protokoll wie SOAP solchen Versuch wenige sind, um Objekte über den Draht zu fliegen.

Andere Tipps

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

3-tier bedeutet Präsentationsschicht + Bauteilschicht + Datenzugriffsschicht. N-Tier ist, wenn unnötige Schichten jenseits dieser drei hinzugefügt werden, und es ist mit einem Schlagwort markiert, damit es nicht scheint, wie Ihre Architekten ein Haufen Riss Affen sind. Ich sage das, basierend auf der N-Tier-Architektur Ich habe mit zu arbeiten.

Es ist ein Schlagwort, das wie die normale Web-Architektur mit beispielsweise Javascript, um die Dinge bezieht sich - ASP.Net - Middleware - Datenbankschicht. Jedes dieser Dinge ist ein „Tier“.

  

N-Tier-Datenanwendungen sind Datenanwendungen, die in getrennten   mehrere Ebenen. Auch „verteilte Anwendungen“ und „Multitier genannt   Anwendungen“, n-Tier-Anwendungen getrennte Verarbeitung in diskreten   Stufen, die zwischen dem Client und dem Server verteilt sind. Wenn du   Entwicklung von Anwendungen, die Daten zugreifen wollen, sollten Sie eine klare haben   Trennung zwischen den verschiedenen Ebenen, die die Anwendung bilden.

     

Eine typische n-Tier-Anwendung enthält eine Präsentationsschicht, eine mittlere   Tier und eine Datenebene. Der einfachste Weg, um die verschiedenen Ebenen zu trennen   in einer n-Ebenen-Anwendung ist für jedes einzelne Projekte Tier zu erstellen   dass Sie in Ihrer Anwendung enthalten. Zum Beispiel kann die   Präsentationsebene könnte ein Windows Forms-Anwendung sein, während der   Datenzugriffslogik könnte eine Klassenbibliothek in der mittleren Ebene befindet.   Darüber hinaus kann die Präsentationsschicht mit den Daten kommunizieren   Zugriffslogik in der mittleren Ebene durch einen Dienst wie ein Dienst.   Trennen Anwendungskomponenten in getrennte Ebenen erhöht die   Wartbarkeit und Skalierbarkeit der Anwendung. Es tut dies durch   ermöglicht einfachere Einführung neuer Technologien, die eine angewendet werden kann   einreihige ohne die Notwendigkeit, die gesamte Lösung neu zu gestalten. Im   Zusätzlich, n-Tier-Anwendungen speichern typischerweise sensible Informationen in   die mittlere Ebene, die Isolation von der Präsentationsebene hält.

Genommen von Microsoft Website .

Wenn ich die Frage verstehe, dann scheint es mir, dass die Fragesteller wirklich fragen: „OK, also 3-Tier ist gut verstanden, aber es scheint, dass es eine Mischung aus Hype, Verwirrung und Unsicherheit um dem, was 4-Tier oder zu verallgemeinern, N-Tier-Architekturen bedeuten. Also ... was ist eine Definition von N-Tiere, die weithin bekannt ist und vereinbart? "

Es ist eigentlich eine ziemlich tiefe Frage, und zu erklären, warum, ich brauche ein wenig tiefer zu gehen. Bär mit mir.

Die klassische 3-Tier-Architektur: Datenbank „Business-Logik“ und die Präsentation ist ein guter Weg, zu klären, wie das Prinzip der Trennung von Bedenken zu ehren. Das heißt, wenn ich ändern will, wie „das Unternehmen“, um Service-Kunden will, soll ich nicht durch das gesamte System aussehen muß, um herauszufinden, wie dies zu tun, und insbesondere Entscheidungen betriebswirtschaftliche Fragen nicht zerstreut werden sollen nolens volens durch den Code.

Nun diente dieses Modell auch für Jahrzehnte, und es ist der klassische ‚Client-Server‘ -Modell. Schneller Vorlauf Angebote Wolke, wo Web-Browser die Benutzeroberfläche für eine breite und physikalisch verteilten Gruppe von Benutzern sind, und man in der Regel endet mit Content Distribution Services hinzufügen, die nicht Teil der klassischen 3-Tier-Architektur (und die müssen in ihrem eigenen Recht verwaltet werden).

Das Konzept verallgemeinert, wenn es um Dienstleistungen geht, Mikro-Dienste, wie die Daten und die Berechnung verteilt sind und so weiter. Unabhängig davon, ob etwas ist ein ‚Tier‘ kommt weitgehend auf, ob die Ebene bietet eine Schnittstelle und Deployment-Modell auf Dienste, die hinter (oder unter) der Reihe sind. So ein Inhaltsverteilungsnetz würde ein Tier, sondern ein Authentifizierungsdienst wäre nicht.

Nun gehen und andere Beschreibungen von Beispielen für N-Tier-Architekturen mit diesem Konzept im Kopf lesen, und Sie werden beginnen, um das Problem zu verstehen. Andere Perspektiven sind herstellerbasierte Ansätze (zB NGINX), Content-Aware Loadbalancer, Datenisolierung und Sicherheitsdienste (zB IBM Datapower), von denen alle kann oder nicht Wert hinzufügen zu einer Architektur, Bereitstellung und Anwendungsfälle.

Es ist mein Verständnis, dass N-Tier-Geschäftslogik trennt, Client-Zugriff und Daten voneinander getrennte physische Maschinen. Die Theorie ist, dass einer von ihnen kann unabhängig von den anderen aktualisiert werden.

N-Tier-Datenanwendungen sind Anwendungen, die Daten in mehrere Ebenen getrennt sind. Auch „distributed applications“ und „mehrstufiger Anwendungen“ genannt n-Tier-Anwendungen getrennte Verarbeitung in diskrete Stufen, die zwischen dem Client und dem Server verteilt sind. Wenn Sie Anwendungen entwickeln, die Daten zugreifen wollen, sollten Sie eine klare Trennung zwischen den verschiedenen Ebenen haben, die die Anwendung bilden.

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

Bei der Konstruktion die übliche MCV (eine 3-Tier-Architektur) ein entscheiden kann, das MCV mit Doppeldeck-Schnittstellen zu implementieren, so dass man in der Tat eine bestimmte Stufe ersetzen kann, ohne auch nur zu modifizieren eine Codezeile.

Wir sehen oft die Vorteile dieses , zum Beispiel in Szenarien, in denen Sie in der Lage sein wollen, mehr als eine Datenbank zu verwenden (in diesem Fall haben Sie eine Doppel Schnittstelle zwischen der Steuerung und Daten- Schichten).

Wenn Sie es auf der View-Schicht setzen (Präsentation), dann können Sie (festhalten !!) mit einer anderen Maschine der Benutzeroberfläche ersetzen, um dadurch automatisiert REAL Eingang (!!!) - und Sie können dadurch langwierige Usability-Tests tausende Male ausgeführt werden, ohne dass Benutzer tippen und mit neu tippen und wieder neu tippen die gleichen Dinge immer und immer wieder.

Einige beschreiben solche 3-Tier-Architektur mit 1 oder 2 Doppel-Schnittstellen wie 4-Tier oder 5-Tier Architektur, implizit impliziert die Doppel Schnittstellen.

Andere Fälle umfassen (sind aber nicht beschränkt auf) die Tatsache, dass man - im Falle von halb oder-voll replizierten Datenbank-Systeme praktisch eine gute Wahl wäre in der Lage der Datenbanken als „Master“, und damit würden Sie eine Stufe, bestehend aus Master und einem weiteren umfasst die Slave-Datenbank.

Mobil Beispiel

Daher Multi-Tier - oder N-Tier - in der Tat einige Interpretationen hat, während ich sicherlich auf die 3-Tier + zusätzliche Ebene, bestehend aus dünnen Interface-Disketten eingekeilt zwischen kleben würde ermöglichen, dass die Tier-Swaps, und im Hinblick auf die Prüfung (vor allem auf mobilen Geräten verwendet wird), können Sie jetzt Anwendertests auf der realen Software laufen, von ein Benutzer simulieren tippen in einer Weise, die die Steuerlogik kann nicht unterscheiden, von einem echten Benutzer schneidend. Das ist fast von größter Bedeutung in real Benutzertests simulieren , dass können Sie alle Eingaben von den Benutzern OTA aufzeichnen und dann den gleichen Eingang wieder verwenden, wenn Regressionstests zu tun.

Wenn wir von Tiers sprechen, reden wir generell physikalischer Prozesse (verschiedenen Speicherraum aufweist).

So im Fall, Schichten einer Anwendung in verschiedenen Prozessen eingesetzt werden, werden diese verschiedenen Prozesse verschiedene Ebene sein.

  

Z. B, In einer 3-Tier-Anwendung, Business-Tier spricht mit Mainframes (separatem Prozess) und spricht mit Reporting Service (separater Prozess), dann würde die Anwendung 5 Tier sein.

Daher ist der generische Name ist n-tier.

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

Eine N-Tier-Architektur teilt ein Anwendungsreifen hinein logische ReifenUnd physische Ebenen hauptsächlich und sie sind 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 einer niedrigeren Schicht nutzen, aber nicht umgekehrt.

Die Ebenen sind physisch getrennt und laufen auf separaten Maschinen.Eine Ebene kann eine andere Ebene direkt aufrufen oder asynchrone Nachrichtenübermittlung (Nachrichtenwarteschlange) verwenden.Obwohl jede Ebene möglicherweise in einer eigenen Ebene gehostet wird, ist dies nicht erforderlich.Auf derselben Ebene können mehrere Ebenen gehostet werden.Die physische Trennung der Ebenen verbessert die Skalierbarkeit und Ausfallsicherheit, erhöht aber auch die Latenz durch die zusätzliche Netzwerkkommunikation.

Eine herkömmliche dreischichtige Anwendung besteht aus einer Präsentationsschicht, einer mittleren Schicht und einer Datenbankschicht.Die mittlere Ebene ist optional.Komplexere Anwendungen können mehr als drei Ebenen haben.Das obige Diagramm zeigt eine Anwendung mit zwei mittleren Ebenen, die verschiedene Funktionsbereiche kapseln.

Eine N-Tier-Anwendung kann eine Architektur mit geschlossener Schicht oder eine Architektur mit offener Schicht 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 Schichtarchitektur begrenzt die Abhängigkeiten zwischen Schichten.Allerdings kann es zu unnötigem Netzwerkverkehr kommen, wenn eine Schicht Anforderungen einfach an die nächste Schicht weiterleitet.

Martin Fowler was deutlich zeigt:

Layering ist eines der am häufigsten verwendeten Techniken, die Software-Designer verwenden, um bricht ein kompliziertes Software-System auseinander. Sie sehen es in Maschinenarchitekturen, wo Schichten stammen von einer Programmiersprache mit Betriebssystemaufrufen in Gerätetreiber und CPU-Befehlssätze und in Logikgatter innerhalb Chips. Networking hat FTP auf TCP schichtet, die auf IP ist, das auf Anfang der Ethernet.

Wenn in Bezug auf die Schichten eines Systems denken, stellen Sie die wichtigsten Subsysteme in der Software, die in irgendeiner Form von Schichtkuchen angeordnet ist, wobei jede Schicht ruht auf einer unteren Schicht. In diesem Schema nutzt die höhere Schicht verschiedene Dienste definiert durch die untere Schicht, aber die untere Schicht der höheren Schicht nicht bewusst. Ferner, in der Regel jede Schicht versteckt seine unteren Schichten aus den obigen Schichten, so 4 Schicht nutzt die Dienste der Schicht 3, die die Dienste der Schicht 2, aber Schicht 4 verwendet weiß nichts von Schicht 2 (Nicht alle Schichtarchitekturen wie diese undurchsichtig sind, aber die meisten sind oder vielmehr die meisten sind meist undurchsichtig.)

Das Aufbrechen eines Systems in Schichten hat eine Reihe wichtiger Vorteile.

• Sie können eine einzelne Schicht als kohärentes Ganzes verstehen, ohne zu wissen viel über die anderen Schichten. Sie wissen, wie ein FTP-Dienst bauen auf TCP ohne die Details, wie Ethernet-Werke zu kennen.

• Sie können ersetzen Schichten mit alternativen Implementierungen der gleichen Grundversorgung. Ein FTP-Dienst ohne Änderung über Ethernet laufen kann, PPP, oder was auch immer eine Kabelgesellschaft verwendet.

• Sie minimieren Abhängigkeiten zwischen den Schichten. Wenn die Kabel-Unternehmen ändert sein physikalisches Übertragungssystem, vorausgesetzt, sie IP-Arbeit zu machen, haben wir nicht haben auf unseren FTP-Dienst zu ändern.

• Ebenen machen gute Plätze für die Standardisierung. TCP und IP sind Standards weil sie definieren, wie sollten ihre Schichten arbeiten.

• Wenn Sie eine Schicht aufgebaut haben, können Sie es für viele geordnete Dienste nutzen können. Somit wird TCP / IP per FTP, Telnet, SSH und HTTP verwendet. Ansonsten alle diese höhere Protokolle müssten ihre eigenen untergeordneten Protokolle schreiben. Von der Bibliothek von Kyle Geoffrey Passarelli

Layering ist eine wichtige Technik, aber es gibt Nachteile.

• Ebene einige kapseln, aber nicht alle, die Dinge gut. Als Ergebnis erhalten Sie manchmal erhalten kaskadierende Änderungen. Das klassische Beispiel für diesen in einem geschichteten Unternehmen Anwendung fügt ein Feld, das auf der Benutzeroberfläche angezeigt werden muss, muss sein in der Datenbank, und somit muss zwischen jeder Schicht hinzugefügt werden.

• Extra-Schichten können die Leistung beeinträchtigen. In jeder Schicht Dinge müssen in der Regel zu wird von einer Darstellung in einer anderen transformiert. Allerdings ist die Verkapselung die mit einer Funktion verknüpft gibt oft Sie Effizienzgewinne, dass mehr als kompensieren. Eine Schicht, die Transaktionen steuert werden kann, optimiert und wird dann alles schneller machen. Aber der schwierigste Teil einer geschichteten Architektur ist zu entscheiden, welche Schichten zu haben, und was die Verantwortung der einzelnen Schicht sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top