it-swarm.com.de

Unterschied zwischen Frontend, Backend und Middleware in der Webentwicklung

Ich habe mich gefragt, ob jemand die Unterschiede zwischen Frontend, Backend und Middleware ("Middle-End"?) Auf den Punkt bringen kann.

Gibt es Fälle, in denen sie sich überschneiden? Gibt es Fälle, in denen sie sich überlappen MÜSSEN und Frontend/Backend nicht getrennt werden können? Welches Ende ist in Bezug auf Engpässe mit welcher Art von Engpässen verbunden?

74
mt3

Hier ist eine Aufschlüsselung:

Front-End-Schicht -> Benutzeroberflächenschicht, die in der Regel aus einer Mischung aus HTML, Javascript, CSS, Flash und verschiedenen serverseitigen Codes wie ASP.Net, klassischem ASP, PHP usw. besteht in Bezug auf den Code.

Middleware, Middle-Tier -> One-Tier-Back, allgemein als "Sanitär" -Teil eines Systems bezeichnet. Java und C # sind gebräuchliche Sprachen zum Schreiben dieses Teils, die als Bindeglied zwischen der Benutzeroberfläche und den Daten angesehen werden können und Webservices, WCF-Komponenten oder andere SOA = Komponenten möglich.

Back-End-Schicht -> Datenbanken und andere Datenspeicher befinden sich im Allgemeinen auf dieser Ebene. Oracle, MS-SQL, MySQL, SAP und verschiedene handelsübliche Softwareteile kommen für dieses Softwareteil in den Sinn, bei dem es sich um die endgültige Verarbeitung der Daten handelt.

Zwischen all diesen kann eine Überlappung bestehen, da Sie alles in eine Ebene gießen lassen könnten, wie z. B. eine ASP.Net-Website, die die integrierte Funktion AJAX= generiert, während der dahinter stehende Code möglicherweise Datenbankbefehle enthält Wenn Sie den Code dahinter so gestalten, dass er sowohl mittlere als auch Back-End-Ebenen enthält, können Sie auch VBScript verwenden, um mit ADO) - Objekten als alle Ebenen zu fungieren und alle drei Ebenen zu einer zusammenzuführen.

Ebenso können Middleware und Front- oder Back-End in einigen Fällen kombiniert werden.

Engpässe haben in der Regel verschiedene Ausprägungen:

1) Datenbank- oder Back-End-Verarbeitung -> Dies kann von der Personalabrechnung, dem Verkauf oder anderen Aufgaben abweichen, bei denen der Datendurchsatz in der Datenbank nicht ausreicht.

2) Middleware-Engpässe -> Hier könnte ein Webservice die Kapazität beeinträchtigen, aber Front-End und Back-End verfügen über Bandbreite, um mehr Verkehr zu bewältigen. Alternativ kann es einen Server geben, der Teil eines Systems ist, das nicht ganz der Teil der Benutzeroberfläche ist, oder die Rohdaten, die bei Verwendung von Biztalk oder MSMQ einen Engpass darstellen können.

3) Front-End-Engpässe -> Dies kann Probleme auf Client- oder Serverseite verursachen. Wenn Sie beispielsweise einen Low-End-PC verwenden und eine Webseite laden lassen, die aus vielen Daten besteht, die heruntergeladen werden, befindet sich der Client möglicherweise dort, wo sich der Engpass befindet. In ähnlicher Weise könnte der Server Anfragen in die Warteschlange stellen, wenn er mit Anfragen überhäuft wird, wie sie Amazon.com oder andere stark frequentierte Websites manchmal erhalten.

Einige davon unterliegen der Interpretation, daher ist es keineswegs perfekt und YMMV.


EDIT: Zu beachten ist, dass einige Systeme mehrere Frontends oder Backends haben können. Zum Beispiel wird ein Content-Management-System wahrscheinlich eine Möglichkeit für Site-Besucher bieten, den Content anzuzeigen, der ein Front-End ist, aber wie können Inhaltseditoren die Daten auf der Site ändern? Die Möglichkeit, diese Daten abzurufen, kann als Front-End angesehen werden, da es sich um eine UI-Komponente handelt, oder als Back-End, da sie von internen Benutzern und nicht von der allgemeinen Öffentlichkeit verwendet werden, die die Site betrachtet. Daher ist hier etwas für den Kontext zu sagen.

57
JB King

Im Allgemeinen bezeichnen die Benutzer die Präsentationsebene einer Anwendung als Front-End, die Persistenzebene (Datenbank, normalerweise) als Back-End und alles dazwischen als Mittelschicht. Diese Gruppe von Ideen wird oft als 3-Tier-Architektur bezeichnet. Sie können Ihre Anwendung in besser verständliche (und überprüfbare!) Abschnitte unterteilen. Sie können Code niedrigerer Ebenen auch einfacher in höheren Ebenen wiederverwenden.

Welcher Code zu welcher Ebene gehört, ist etwas subjektiv. Grafikdesigner neigen dazu, an alles zu denken, was nicht als Back-End dargestellt wird, Datenbankleute an alles, was vor der Datenbank angezeigt wird, als Front-End und so weiter.

Allerdings müssen nicht alle Anwendungen auf diese Weise getrennt werden. Es ist sicherlich mehr Arbeit, 3 separate Unterprojekte zu haben, als nur index.php zu öffnen und zu knacken. Je nachdem, (1) wie lange die App voraussichtlich gewartet werden muss (2) wie komplex die App voraussichtlich sein wird, möchten Sie möglicherweise auf die Komplexität verzichten.

7

Es gibt tatsächlich 3 Fragen in Ihrer Frage:

  • Definieren Sie Frontend, Middle und Backend
  • Wie und wann überlappen sie sich?
  • Ihre damit verbundenen üblichen Engpässe.

Was JB King beschrieben hat, ist richtig, aber es ist eine bestimmte, einfache Version, bei der er Front, Middle und Bacn einer MVC-Ebene zugeordnet hat. Er ordnete M der Rückseite, V der Vorderseite und C der Mitte zu.

Für viele Menschen ist es in Ordnung, da sie aus der hässlichen Welt stammen, in der nicht einmal MVC angewendet wurde, und Sie könnten direkte DB-Aufrufe in einer Ansicht haben.

In echten, komplexen Webanwendungen haben Sie jedoch tatsächlich zwei oder drei verschiedene Ebenen, die als Vorder-, Mittel- und Rückseite bezeichnet werden. Jeder von ihnen kann eine zugeordnete Datenbank und einen Controller haben.

Das Frontend ist für den Endbenutzer sichtbar. Es sollte nicht mit dem Front-Office verwechselt werden, bei dem es sich um die Benutzeroberfläche für die Parameter und die Verwaltung der Front handelt. Das Front-End ist normalerweise eine Art CMS oder E-Commerce-Plattform (Magento usw.).

Das mittlere Ende ist nicht obligatorisch und ist der Ort, an dem sich die Geschäftslogik befindet. Es basiert auf einem PIM, einem MDM-Tool oder einer benutzerdefinierten Datenbank, in der Sie Ihre Produkte oder Artikel (für CMS) anreichern. Hier können Sie auch Geschäftsfunktionen codieren, die von verschiedenen Frontends gemeinsam genutzt werden müssen (z. B. vom PC-Frontend zur API-basierten Mobilanwendung). Manchmal ist ein ESB oder ein Tool wie ActiveMQ Ihr mittleres Ziel

Das Back-End wird eine dritte Ebene sein, die Ihre Quelldatenbank oder Ihr ERP umgibt. Möglicherweise wird nur die API in Ihr ERP geschrieben und von diesem gelesen. Dies kann Ihre Lieferantendatenbank sein, wenn Sie E-Commerce betreiben. Tatsächlich hängt es wirklich von Webprojekten ab, aber es ist immer ein zentrales Repository. Der Zugriff erfolgt entweder über einen DB-Aufruf, über eine API, einen Ruhezustand oder über eine Back-End-Anwendung mit vollem Funktionsumfang

Diese Beschreibung bedeutet, dass die Beantwortung der anderen 2 Fragen in diesem Thread nicht möglich ist, da Engpässe wirklich davon abhängen, was Ihre 3 Enden enthalten: Was JB King geschrieben hat, gilt auch für einfache MVC-Architekturen

zu der Zeit, als die Frage gestellt wurde (vor 5 Jahren), war das MVC-Muster vielleicht noch nicht so weit verbreitet. Jetzt gibt es absolut keinen Grund, warum das MVC-Muster nicht befolgt und eine Ansicht an DB-Aufrufe gebunden wird. Wenn Sie die Frage "Gibt es Fälle, in denen sie sich überlappen MÜSSEN und Frontend/Backend nicht getrennt werden können?" im weiteren sinne mit 3 verschiedenen komponenten, dann gibt es natürlich zeiten, in denen die 3 schichten architektur unbrauchbar ist. Denken Sie an einen einfachen persönlichen Blog, Sie müssen keine externen Daten abrufen oder RabbitMQ-Warteschlangen abfragen.

5
spiritoo

Hier ist ein Beispiel aus der Praxis, das das Front/Mid/Back-End zeigt.

Allgemeine Beschreibung:

  • Das Frontend ist für die Präsentation der Daten gegenüber dem Benutzer verantwortlich. Bitte beachten Sie die interessante Besonderheit, dass Sie möglicherweise zwei verschiedene Frontends für ein einzelnes Backend haben
  • Backend bietet Geschäftslogik/Datenpersistenz.
  • Middleware (Activemq im Bild) ist für System zu System verantwortlich. Integration zwischen Backends. Normalerweise wird es als separate Anwendung installiert enter image description here

Überlappung:

Es können Überlappungen zwischen Frontend und Backend auftreten. Dies führt normalerweise zu langfristigen Problemen bei der Anwendungswartung und Skalierbarkeit. Ziemlich häufig in Legacy-Anwendungen.

Die meisten modernen Technologiepakete ermutigen Entwickler zu einer strikten Trennung. In der Abbildung sehen Sie beispielsweise, dass das Back-End des ersten Systems einen Rest-Web-Service aufweist, der eine klare Trennlinie darstellt.

Engpässe

Die meisten großen Engpässe werden durch die Datenbank/das Netzwerk verursacht. Datenbanken befinden sich im Backend. Da bei Netzwerkproblemen jede Verbindung über netowrk läuft, kann jede Verbindung langsam sein. Mit einem guten Anwendungsdesign können diese Probleme weitgehend vermieden werden.

3
Marcin Szymczak

In Bezug auf Netzwerk und Sicherheit ist das Backend bei weitem der sicherste Knoten (sollte es sein).

Der mittlere Teil, bei dem es sich normalerweise um einen Webserver handelt, liegt in der Natur und ist in vielerlei Hinsicht vom Unternehmensnetzwerk abgeschnitten. Der Middle-End-Knoten wird normalerweise in der DMZ und mit Firewall-Einstellungen aus dem Netzwerk segmentiert. Der Großteil des serverseitigen Code-Parsings von Webseiten wird auf dem Middle-End-Webserver durchgeführt.

Zum Backend zu gelangen bedeutet, das mittlere Ende zu durchlaufen, das über ein sorgfältig ausgearbeitetes Regelwerk verfügt, das den Zugriff auf die lebenswichtigen Daten, die auf dem Datenbankserver (Backend-Server) gespeichert sind, zulässt bzw. nicht zulässt.

1
m42