Was ist der Unterschied zwischen Anwendungsserver und Webserver?
Antworten
Zu viele Anzeigen?Meistens werden die Begriffe Webserver und Anwendungsserver austauschbar verwendet.
Im Folgenden werden einige der wichtigsten Unterschiede zwischen Web- und Anwendungsservern erläutert:
- Der Webserver ist für die Bereitstellung von HTTP-Inhalten konzipiert. App Server kann auch HTTP-Inhalte bereitstellen, ist aber nicht nur auf HTTP beschränkt. Es können auch andere Protokolle wie RMI/RPC unterstützt werden.
- Webserver sind meist für statische Inhalte konzipiert, obwohl die meisten Webserver über Plugins zur Unterstützung von Skriptsprachen wie Perl, PHP, ASP, JSP usw. verfügen, mit denen diese Server dynamische HTTP-Inhalte erzeugen können.
- Die meisten Anwendungsserver haben einen Webserver als integralen Bestandteil, d. h. der Anwendungsserver kann alles tun, was der Webserver kann. Zusätzlich verfügen App Server über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene wie Connection Pooling, Object Pooling, Transaktionsunterstützung, Messaging-Dienste usw.
- Da Webserver gut für statische Inhalte und App-Server für dynamische Inhalte geeignet sind, fungieren Webserver in den meisten Produktionsumgebungen als Reverse-Proxy für App-Server. Das bedeutet, dass bei der Bearbeitung einer Seitenanforderung statische Inhalte (z. B. Bilder/Static HTML) vom Webserver bereitgestellt werden, der die Anforderung interpretiert. Mithilfe einer Filtertechnik (meist Erweiterung der angeforderten Ressource) identifiziert der Webserver die Anforderung für dynamische Inhalte und leitet sie transparent an den Anwendungsserver weiter.
Ein Beispiel für eine solche Konfiguration ist Apache Tomcat HTTP Server und Oracle (früher BEA) WebLogic Server. Apache Tomcat HTTP Server ist ein Webserver und Oracle WebLogic ein Anwendungsserver.
In einigen Fällen sind die Server eng integriert, wie z. B. IIS und .NET Runtime. IIS ist ein Webserver. Wenn er mit der .NET-Laufzeitumgebung ausgestattet ist, kann der IIS Anwendungsdienste bereitstellen.
Dies ist eine ausführliche Antwort mit einigen Szenarien, um den Unterschied und die Ähnlichkeit zu verdeutlichen und zu zeigen, wie beide zusammen funktionieren können.
Anwendungsserver ist ein Begriff, der manchmal mit einem Webserver . Während ein Webserver hauptsächlich die HTTP-Protokolle arbeitet der Anwendungsserver mit mehreren verschiedenen Protokollen, darunter nicht beschränkt, auf HTTP .
Die Hauptaufgabe des Webservers besteht darin den Inhalt der Website anzeigen und der Anwendungsserver ist für die Logik zuständig die Interaktion zwischen dem Benutzer und dem angezeigten Inhalt. Der Anwendungsserver ist gemeinsame Arbeit mit dem Webserver, wobei der eine anzeigt und der andere interagiert.
Die Informationen, die zwischen dem Server und dem Client hin- und hergehen, beschränken sich nicht auf die einfache Anzeige von Markup, sondern auf die Interaktion zwischen den beiden.
In den meisten Fällen erstellt der Server diese Interaktion über eine Komponenten-API , wie zum Beispiel J2EE (Java 2 Plattform) , _EJB (Enterprise JavaBean)_ und andere verschiedene Anwendungssoftwaremodelle.
Ein Beispiel:
Der Unterschied zwischen Szenarien, in denen ein Anwendungsserver mit dem Webserver zusammenarbeitet, und Szenarien, in denen es keinen Anwendungsserver gibt, lässt sich am besten anhand eines Online-Shops nachvollziehen.
Szenario 1: Webserver ohne Anwendungsserver
Sie haben ein Online-Geschäft mit nur einem Webserver und keinem Anwendungsserver. Die Website bietet eine Anzeige, aus der Sie ein Produkt auswählen können. Wenn Sie eine Abfrage stellen, führt die Website eine Suche durch und gibt ein HTML-Ergebnis an den Client zurück. Der Webserver sendet Ihre Abfrage direkt an den Datenbankserver (haben Sie etwas Geduld, ich erkläre es Ihnen im nächsten Abschnitt) und wartet auf eine Antwort. Nach Erhalt formuliert der Webserver die Antwort in eine HTML-Datei und sendet sie an Ihren Webbrowser. Diese Hin- und Her-Kommunikation zwischen dem Server und dem Datenbankserver findet jedes Mal statt, wenn eine Abfrage ausgeführt wird.
Szenario 2: Webserver mit einem Anwendungsserver
Wenn die gewünschte Abfrage bereits zuvor durchgeführt wurde und sich seitdem keine Daten geändert haben, generiert der Server die Ergebnisse, ohne die Anfrage an den Datenbankserver senden zu müssen. Dies ermöglicht eine Echtzeitabfrage, bei der ein zweiter Client auf dieselben Informationen zugreifen und zuverlässige Echtzeitinformationen erhalten kann, ohne eine weitere doppelte Abfrage an den Datenbankserver zu senden. Der Server fungiert im Grunde als Zwischenglied zwischen dem Datenbankserver und dem Webserver. Dadurch können die abgerufenen Informationen wiederverwendet werden, während dies im ersten Szenario nicht möglich ist, da diese Informationen in eine bestimmte und "angepasste" HTML-Seite eingebettet sind. Ein zweiter Client muss die Informationen erneut anfordern und erhält eine weitere in HTML eingebettete Seite mit den angeforderten Informationen - sehr ineffizient. Ganz zu schweigen davon, dass diese Art von Server sehr flexibel ist, da er seine eigenen Ressourcen verwalten kann, einschließlich Sicherheit, Transaktionsverarbeitung, Nachrichtenübermittlung und Ressourcenpooling.
Um eine solche Vielzahl komplexer Aufgaben zu unterstützen, muss dieser Server über eine eingebaute Redundanz, eine hohe Verarbeitungsleistung und eine große Menge an Arbeitsspeicher verfügen, um alle Daten, die er in Echtzeit abruft, zu verarbeiten.
Beide Begriffe sind sehr allgemein gehalten, der eine beinhaltet den anderen und in manchen Fällen auch umgekehrt.
-
Webserver : stellt Inhalte über das http-Protokoll ins Internet.
-
Anwendungsserver Host: Hostet und stellt Geschäftslogik und -prozesse zur Verfügung.
Ich denke, der Hauptpunkt ist, dass der Webserver alles über das http-Protokoll preisgibt, während der Anwendungsserver nicht darauf beschränkt ist.
In vielen Szenarien wird der Webserver dazu verwendet, das Front-End des Anwendungsservers zu erstellen, d. h. er stellt eine Reihe von Webseiten zur Verfügung, die es dem Benutzer ermöglichen, mit den im Anwendungsserver enthaltenen Geschäftsregeln zu interagieren.
Webserver
ausführen. python -m 'SimpleHTTPServer'
und gehen Sie zu http://localhost:8080 . Was Sie sehen, ist ein Webserver in seiner Arbeitsweise. Der Server stellt einfach Dateien über HTTP bereit, die auf Ihrem Computer gespeichert sind. Der springende Punkt ist, dass dies alles über das HTTP-Protokoll geschieht. Es gibt zum Beispiel auch FTP-Server, die genau dasselbe tun (gespeicherte Dateien bereitstellen), aber auf einem anderen Protokoll basieren.
Anwendungsserver
Nehmen wir an, wir haben eine kleine Anwendung wie die folgende (Ausschnitt aus Flachmann ).
@app.route('/')
def homepage():
return '<html>My homepage</html>'
@app.route('/about')
def about():
return '<html>My name is John</html>'
Das kleine Beispielprogramm bildet die URL /
zur Funktion homepage()
und die /about
zur Funktion about()
.
Um diesen Code auszuführen, benötigen wir einen Anwendungsserver (z. B. Gunicorn) - ein Programm oder Modul, das auf Anfragen von einem Client warten und mit Hilfe unseres Codes dynamisch etwas zurückgeben kann. In diesem Beispiel geben wir einfach sehr schlechtes HTML zurück.
Was ist die Geschäftslogik, über die alle anderen reden? Nun, da eine URL auf eine bestimmte Stelle in unserer Codebasis verweist, zeigen wir hypothetisch eine gewisse Logik darüber, wie unser Programm funktioniert.
Zusammenfassung
Webserver - dient den irgendwo gespeicherten Dateien (meist .css, .html, .js). Übliche Webserver sind Apache, Nginx oder sogar der SimpleHTTPServer von Python.
Anwendungsserver - dient der Bereitstellung von Dateien, die im laufenden Betrieb erstellt werden. Im Grunde haben die meisten Webserver eine Art von Plugins oder sogar eine eingebaute Funktionalität, um dies zu tun. Es gibt auch strenge Anwendungsserver wie Gunicorn (Python), Unicorn (Ruby), uWSGI (Python), usw.
Beachten Sie, dass Sie mit dem Code des Anwendungsservers tatsächlich einen Webserver erstellen können. Dies wird in einigen Fällen während der Entwicklung gemacht, wenn Sie nicht eine Unmenge verschiedener Server auf Ihrem Computer laufen lassen wollen.
Wie Rutesh und jmservera feststellten, ist die Unterscheidung unscharf. Historisch gesehen waren sie unterschiedlich, aber in den 90er Jahren vermischten sich die Eigenschaften dieser beiden zuvor unterschiedlichen Kategorien und verschmolzen effektiv miteinander. An diesem Punkt ist es wahrscheinlich am besten, sich vorzustellen, dass die Produktkategorie "App Server" eine strenge Obermenge der Kategorie "Webserver" ist.
Etwas Geschichte. In den frühen Tagen des Mosaic-Browsers und der Hyperlinks entwickelte sich ein so genannter "Webserver", der Webseiteninhalte und Bilder über HTTP bereitstellte. Die meisten Inhalte waren statisch, und das HTTP-1.0-Protokoll war nur eine Möglichkeit, Dateien zu versenden. Schnell entwickelte sich die Kategorie "Webserver" weiter und umfasste nun auch CGI-Fähigkeiten, d. h. bei jeder Webanfrage wurde ein Prozess gestartet, um dynamische Inhalte zu erzeugen. Auch HTTP wurde immer ausgereifter und die Produkte wurden mit Caching-, Sicherheits- und Verwaltungsfunktionen immer ausgefeilter. Als die Technologie reifte, erhielten wir unternehmensspezifische Java-basierte serverseitige Technologie von Kiva und NetDynamics, die schließlich alle in JSP aufgegangen sind. Microsoft fügte ASP, ich glaube 1996, zu Windows NT 4.0 hinzu. Der statische Webserver hatte einige neue Tricks gelernt, so dass er ein effektiver "Anwendungsserver" für viele Szenarien war.
Unternehmen lieferten Produkte für Unix wie Tuxedo, TopEnd und Encina, die philosophisch von Mainframe-Anwendungsmanagement- und Überwachungsumgebungen wie IMS und CICS abgeleitet waren. Das Angebot von Microsoft war Microsoft Transaction Server (MTS), das sich später zu COM+ entwickelte. Die meisten dieser Produkte spezifizierten "geschlossene" produktspezifische Kommunikationsprotokolle, um "fette" Clients mit Servern zu verbinden. (Bei Encina war das Kommunikationsprotokoll DCE RPC, bei MTS war es DCOM usw.) 1995/96 begannen diese traditionellen App-Server-Produkte, grundlegende HTTP-Kommunikationsfunktionen einzubinden, zunächst über Gateways. Und die Grenzen begannen zu verschwimmen.
Webserver werden immer ausgereifter in Bezug auf die Bewältigung höherer Lasten, mehr Gleichzeitigkeit und bessere Funktionen. App-Server boten mehr und mehr HTTP-basierte Kommunikationsmöglichkeiten.
An dieser Stelle ist die Grenze zwischen "App-Server" und "Webserver" fließend. Aber die Leute verwenden die Begriffe nach wie vor unterschiedlich, je nach Betonung. Wenn jemand "Webserver" sagt, denkt man oft an HTTP-zentrierte, Web-UI-orientierte Anwendungen. Wenn jemand "App-Server" sagt, denkt man vielleicht an "schwerere Lasten, Unternehmensfunktionen, Transaktionen und Warteschlangen, Mehrkanal-Kommunikation (HTTP + mehr). Oftmals handelt es sich jedoch um ein und dasselbe Produkt, das beide Arten von Arbeitsanforderungen erfüllt.
- WebSphere, der "App-Server" von IBM, verfügt über einen eigenen gebündelten Webserver.
- WebLogic, ein weiterer traditioneller Anwendungsserver, ebenfalls.
- Windows, der App Server von Microsoft (zusätzlich zum File&Print Server, Media Server, etc.), bündelt IIS.
- See previous answers
- Weitere Antworten anzeigen