Was ist der Unterschied zwischen "Ebenen" und "Ebenen"?

214

Was ist der Unterschied zwischen "Ebenen" und "Ebenen"?

Cretzel
quelle
3
Fast jeder, den ich in der Software-Welt getroffen habe, verwendet diese beiden Begriffe synonym, als ob sie genau gleich wären.
RBT

Antworten:

260

Logische Ebenen sind lediglich eine Möglichkeit, Ihren Code zu organisieren. Typische Ebenen sind Präsentation, Geschäft und Daten - genau wie beim herkömmlichen dreistufigen Modell. Aber wenn wir über Ebenen sprechen, sprechen wir nur über die logische Organisation von Code. In keiner Weise wird impliziert, dass diese Schichten auf verschiedenen Computern oder in verschiedenen Prozessen auf einem einzelnen Computer oder sogar in einem einzelnen Prozess auf einem einzelnen Computer ausgeführt werden können. Wir diskutieren lediglich eine Möglichkeit, einen Code in eine Reihe von Ebenen zu organisieren, die durch eine bestimmte Funktion definiert sind.

Bei physischen Ebenen geht es jedoch nur darum, wo der Code ausgeführt wird. Insbesondere sind Ebenen Orte, an denen Ebenen bereitgestellt werden und an denen Ebenen ausgeführt werden. Mit anderen Worten, Ebenen sind die physische Bereitstellung von Ebenen.

Quelle: Rockford Lhotka, Sollten alle Apps n-Tier sein?

Panos
quelle
43

Lesen Sie den Beitrag von Scott Hanselman zu diesem Thema: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

Denken Sie jedoch daran, dass in "Scott World" (was hoffentlich auch Ihre Welt ist :)) eine "Ebene" eine Bereitstellungseinheit ist, während eine "Ebene" eine logische Trennung der Verantwortung innerhalb des Codes ist. Sie können sagen, Sie haben ein "3-Tier" -System, aber Sie können es auf einem Laptop ausführen. Sie können sagen, Sie haben ein "3-Layer" -System, aber nur ASP.NET-Seiten, die mit einer Datenbank kommunizieren. Präzision hat Kraft, Freunde.

Josh
quelle
36

Ebenen beziehen sich auf die logische Trennung von Code. Mithilfe logischer Ebenen können Sie Ihren Code besser organisieren. Beispielsweise kann eine Anwendung die folgenden Ebenen haben.

1) Präsentationsschicht oder UI-Schicht 2) Geschäftsschicht oder Geschäftslogikschicht 3) Datenzugriffsschicht oder Datenschicht

Die oben genannten drei Ebenen befinden sich in ihren eigenen Projekten, können 3 Projekte oder sogar mehr sein. Wenn wir die Projekte kompilieren, erhalten wir die entsprechende Layer-DLL. Wir haben jetzt 3 DLLs.

Abhängig davon, wie wir unsere Anwendung bereitstellen, können wir 1 bis 3 Ebenen haben. Da wir jetzt 3 DLLs haben, haben wir nur 1 physische Schicht, aber 3 logische Schichten, wenn wir alle DLLs auf demselben Computer bereitstellen.

Wenn wir jede DLL auf einem separaten Computer bereitstellen, haben wir 3 Ebenen und 3 Ebenen.

Ebenen sind also eine logische Trennung und Ebenen sind eine physikalische Trennung. Wir können auch sagen, dass Ebenen die physische Bereitstellung von Ebenen sind.

Satish
quelle
Was ich aus Ihrer Antwort verstanden habe, ist, dass wir 3 Layer (DLL) auf drei verschiedenen Servern bereitstellen können. Richtig ? Können Sie mir bitte sagen, wie ich die Business Logic-Schicht auf der Präsentationsschicht referenzieren kann?
Mazhar Khan
@ MazharKhan Vielleicht möchten Sie einen Service verwenden, um die Business-Layer-Funktionalität der Präsentations-Schicht zugänglich zu machen
Amit Saxena
32

Warum immer versuchen, komplexe Wörter zu verwenden?

Eine Ebene = ein Teil Ihres Codes . Wenn Ihre Anwendung ein Kuchen ist, ist dies ein Stück.

Eine Schicht = eine physische Maschine , ein Server.

Eine Ebene hostet eine oder mehrere Ebenen.


Beispiel für Schichten:

  • Präsentationsschicht = normalerweise der gesamte Code, der sich auf die Benutzeroberfläche bezieht
  • Datenzugriffsschicht = der gesamte Code, der sich auf Ihren Datenbankzugriff bezieht

Stufe:

Ihr Code wird auf einem Server gehostet = Ihr Code wird auf einer Ebene gehostet.

Ihr Code wird auf 2 Servern gehostet = Ihr Code wird auf 2 Ebenen gehostet.

Zum Beispiel ein Computer, auf dem die Website selbst gehostet wird (Präsentationsschicht), ein anderer Computer, auf dem der sicherheitsrelevantere Code (echter Geschäftscode - Geschäftsschicht, Datenbankzugriffsschicht usw.) sicherer gehostet wird.


Die Implementierung einer Schichtarchitektur bietet so viele Vorteile. Dies ist schwierig und die ordnungsgemäße Implementierung einer mehrschichtigen Anwendung benötigt Zeit. Wenn Sie welche haben, schauen Sie sich diesen Beitrag von Microsoft an: http://msdn.microsoft.com/en-gb/library/ee658109.aspx

Andrew
quelle
13

Ich habe eine Definition gefunden, die besagt, dass Ebenen eine logische Trennung und Ebenen eine physische Trennung sind.

Cretzel
quelle
10
  1. Im Klartext Tierbezieht sich das auf "jeweils in einer Reihe von Reihen oder Ebenen einer übereinander angeordneten Struktur", während sich das Layerauf "ein Blatt, eine Menge oder eine Dicke des Materials, typischerweise eines von mehreren, bezieht, das eine Oberfläche oder einen Körper bedeckt ".

  2. Tier ist eine physische Einheit , in der der Code / Prozess ausgeführt wird. ZB: Client, Anwendungsserver, Datenbankserver;

    Layer ist eine logische Einheit , wie man den Code organisiert. ZB: Präsentation (Ansicht), Controller, Modelle, Repository, Datenzugriff.

  3. Ebenen repräsentieren die physische Trennung der Präsentation, des Geschäfts, der Dienste und der Datenfunktionalität Ihres Designs über separate Computer und Systeme.

    Ebenen sind die logischen Gruppierungen der Softwarekomponenten, aus denen die Anwendung oder der Dienst besteht. Sie helfen bei der Unterscheidung zwischen den verschiedenen Arten von Aufgaben, die von den Komponenten ausgeführt werden, und erleichtern die Erstellung eines Designs, das die Wiederverwendbarkeit von Komponenten unterstützt. Jede logische Schicht enthält eine Reihe von diskreten Komponententypen, die in Unterschichten gruppiert sind, wobei jede Unterschicht einen bestimmten Aufgabentyp ausführt.

Das zweistufige Muster repräsentiert einen Client und einen Server.

In diesem Szenario befinden sich Client und Server möglicherweise auf demselben Computer oder auf zwei verschiedenen Computern. Die folgende Abbildung zeigt ein allgemeines Webanwendungsszenario, in dem der Client mit einem Webserver auf der Clientebene interagiert. Diese Schicht enthält die Präsentationsschichtlogik und alle erforderlichen Geschäftsschichtlogiken. Die Webanwendung kommuniziert mit einem separaten Computer, auf dem sich die Datenbankebene befindet, die die Datenschichtlogik enthält.

Ebenen gegen Ebenen

Vorteile von Ebenen und Ebenen:

  • Mithilfe von Layering können Sie die Wartbarkeit des Codes maximieren, die Funktionsweise der Anwendung bei unterschiedlicher Bereitstellung optimieren und eine klare Abgrenzung zwischen Standorten vornehmen, an denen bestimmte Technologie- oder Entwurfsentscheidungen getroffen werden müssen.

  • Das Platzieren Ihrer Ebenen auf separaten physischen Ebenen kann die Leistung verbessern, indem die Last auf mehrere Server verteilt wird. Es kann auch zur Sicherheit beitragen, indem empfindlichere Komponenten und Schichten in verschiedenen Netzwerken oder im Internet gegenüber einem Intranet getrennt werden.

Eine 1-Tier-Anwendung kann eine 3-Layer-Anwendung sein.

TryinHard
quelle
6

Ja, meine lieben Freunde haben es richtig gesagt. Die Schicht ist eine logische Partition der Anwendung, während die Schicht eine physische Partition der Systemschicht ist. Die Partition hängt von der Schichtpartition ab. Genau wie eine Anwendung, die auf einem einzelnen Computer ausgeführt wird, jedoch einer dreischichtigen Architektur folgt, können wir sagen, dass eine schichtweise Architektur in einer Schichtarchitektur vorhanden sein könnte. Kurz gesagt, eine 3-Schicht-Architektur kann in einer einzelnen Maschine implementiert werden, dann können wir sagen, dass es sich um eine 1-Schicht-Architektur handelt. Wenn wir jede Schicht auf einem separaten Computer implementieren, wird sie als 3-Tier-Architektur bezeichnet. Eine Ebene kann möglicherweise auch mehrere Ebenen ausführen. In der Schichtarchitektur bezogene Komponente, um einfach miteinander zu kommunizieren.
Genau wie wir der unten angegebenen Architektur folgen

  1. Präsentationsfolie
  2. Geschäftslogikschicht
  3. Datenzugriffsschicht

Ein Client könnte mit der "Präsentationsschicht" interagieren, greift jedoch aus Sicherheitsgründen auf die öffentliche Komponente der untergeordneten Schicht (wie die öffentliche Komponente der Geschäftslogikschicht) zur "Geschäftslogikschicht" zu.
F * Warum verwenden wir Layer-Architektur? Denn wenn wir Layer-Architektur implementieren, erhöhen wir unsere Anwendungseffizienz wie

==> Sicherheit

==> Verwaltbarkeit

==> Skalierbarkeit

andere Bedürfnisse wie nach der Entwicklung der Anwendung müssen wir DBMS ändern oder Geschäftslogik usw. ändern, dann ist es für alle notwendig.

F * Warum verwenden wir Tier-Architektur?

Da die physische Implementierung jeder Schicht eine bessere Effizienz bietet, können wir ohne Schichtarchitektur keine Ebenenarchitektur implementieren. Eine separate Maschine zum Implementieren einer separaten Ebene und einer separaten Ebene implementiert eine oder mehrere Ebenen, weshalb wir sie verwenden.
es wird zum Zwecke der Fehlertoleranz verwendet. ==> pflegeleicht.

Einfaches Beispiel

Genau wie eine Bank, die in einer Kammer geöffnet ist, in welche Kategorien der Mitarbeiter:

  1. Torhüter
  2. eine Person für Bargeld
  3. eine Person, die für die Einführung des Bankensystems verantwortlich ist
  4. Manager

Sie alle sind die verwandten Komponenten des Systems.

Wenn wir zu Kreditzwecken zur Bank gehen, öffnet zuerst ein Torhüter mit einem Lächeln die Tür. Danach gehen wir zu einer Person, die alle Kreditpläne vorstellt. Danach gehen wir zur Manager-Kabine und geben den Kredit weiter. Danach gehen wir endlich zum Kassierer und nehmen einen Kredit auf. Dies sind Schichtarchitekturen der Bank.

Was ist mit Tier? Eine Bankfiliale in einer Stadt eröffnet, danach in einer anderen Stadt, danach in einer anderen, aber was ist die Grundvoraussetzung jeder Filiale

  1. Torhüter
  2. eine Person für Bargeld
  3. eine Person, die für die Einführung des Bankensystems verantwortlich ist
  4. Manager

genau das gleiche Konzept von Schicht und Schicht.

atul
quelle
Tolle Erklärung, Liebes
Dulaj Kulathunga
6

Ebenen sind eine logische Trennung related-functionality[code] innerhalb einer Anwendung. Die Kommunikation zwischen Ebenen ist explizit und lose gekoppelt. [Präsentationslogik, Anwendungslogik, Datenzugriffslogik]

Ebenen sind die physische Trennung von layers[die auf einzelnen Servern gehostet werden] in einem einzelnen Computer (Prozess).

Geben Sie hier die Bildbeschreibung ein

Wie im Diagramm gezeigt:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n- Tier Vorteile:
Bessere Sicherheit
Skalierbarkeit : Wenn Ihr Unternehmen wächst Sie können Ihre DB-Tier mit DB-Clustering mit sich berührenden anderen Ebenen skalieren.
Wartbarkeit : Der Webdesigner kann den Ansichtscode ändern, ohne die anderen Ebenen auf den anderen Ebenen zu berühren.
Einfaches Upgrade oder Erweitern [Beispiel: Sie können zusätzlichen Anwendungscode hinzufügen, den Speicherbereich aktualisieren oder sogar mehrere Präsentationsebenen für separate Geräte wie Mobilgeräte, Tablets und PCs hinzufügen.]

Yash
quelle
6

Ich mag die folgende Beschreibung aus Microsoft Application Architecture Guide 2

Ebenen beschreiben die logischen Gruppierungen der Funktionen und Komponenten in einer Anwendung. Ebenen beschreiben die physische Verteilung der Funktionen und Komponenten auf separaten Servern, Computern, Netzwerken oder Remotestandorten. Obwohl sowohl Ebenen als auch Ebenen denselben Namenssatz (Präsentation, Geschäft, Dienste und Daten) verwenden, denken Sie daran, dass nur Ebenen eine physische Trennung implizieren.

sanjaykumar81
quelle
5

Ich benutze Ebenen, um den Architekten oder Technologie-Stack innerhalb einer Komponente meiner Lösungen zu beschreiben. Ich verwende Ebenen, um diese Komponenten normalerweise logisch zu gruppieren, wenn Netzwerk- oder Interprozesskommunikation beteiligt ist.

Brian Matthews
quelle
1

Technisch gesehen kann eine Ebene eine Art Mindestumgebung sein, die für die Ausführung des Codes erforderlich ist.

Beispielsweise kann hypothetisch eine 3-Tier-App ausgeführt werden

  1. 3 physische Maschinen ohne Betriebssystem.
  2. 1 physische Maschine mit 3 virtuellen Maschinen ohne Betriebssystem.

    (Das war eine 3- (Hardware-) Tier-App)

  3. 1 physische Maschine mit 3 virtuellen Maschinen mit 3 verschiedenen / gleichen Betriebssystemen

    (Das war eine 3- (OS) Tier App)

  4. 1 physische Maschine mit 1 virtuellen Maschine mit 1 Betriebssystem, aber 3 AppServern

    (Das war eine 3- (AppServer) Tier-App)

  5. 1 physische Maschine mit 1 virtuellen Maschine mit 1 Betriebssystem mit 1 AppServer, aber 3 DBMS

    (Das war eine 3- (DBMS) Tier App)

  6. 1 physische Maschine mit 1 virtuellen Maschine mit 1 Betriebssystem mit 1 AppServers und 1 DBMS, aber 3 Excel-Arbeitsmappen.

    (Das war eine 3- (AppServer) Tier-App)

Die Excel-Arbeitsmappe ist die Mindestumgebung für die Ausführung von VBA-Code.

Diese drei Arbeitsmappen können sich auf einem oder mehreren physischen Computern befinden.

Ich habe festgestellt, dass Menschen in der Praxis "OS Tier" meinen, wenn sie im Kontext der App-Beschreibung "Tier" sagen.

Wenn eine App auf 3 verschiedenen Betriebssystemen ausgeführt wird, handelt es sich um eine 3-Tier-App.

Eine pedantisch korrekte Art, eine App zu beschreiben, wäre also

"1-zu-3-Tier-fähig, läuft auf 2 Ebenen" App.

:) :)


Ebenen sind nur Codetypen in Bezug auf die funktionale Aufgabentrennung innerhalb der App (z. B. Präsentation, Daten, Sicherheit usw.).

Dimitri KOH
quelle
0

Ebenen sind konzeptionelle Einheiten und werden verwendet, um die Funktionalität des Softwaresystems aus logischer Sicht zu trennen. Wenn Sie das System implementieren, organisieren Sie diese Ebenen mit verschiedenen Methoden. In diesem Zustand bezeichnen wir sie nicht als Ebenen, sondern als Ebenen.

gst
quelle
0

Wenn Sie über Präsentation, Service, Daten, Netzwerkschicht sprechen, sprechen Sie über Schichten. Wenn Sie sie "separat bereitstellen", sprechen Sie von Ebenen.

Bei Tiers dreht sich alles um die Bereitstellung. Nehmen Sie es so: Wir haben eine Anwendung, die ein in Angular erstelltes Frontend hat, ein Backend als MongoDB und eine mittlere Ebene, die zwischen dem Frontend und dem Backend interagiert. Wenn diese Frontend-Anwendung, die Datenbankanwendung und die mittlere Schicht separat bereitgestellt werden, handelt es sich um eine dreistufige Anwendung.

Vorteil: Wenn wir unser Backend in Zukunft skalieren müssen, müssen wir das Backend nur unabhängig skalieren und das Frontend muss nicht skaliert werden.

Aarzoo Trehan
quelle