Was ist der Unterschied zwischen Anwendungsserver und Webserver?

761

Was ist der Unterschied zwischen Anwendungsserver und Webserver?

TwiggedToday
quelle
Leistungstechnisch ist der Anwendungsserver oder Webserver besser
kavya

Antworten:

620

In den meisten Fällen werden diese Begriffe Webserver und Anwendungsserver synonym verwendet.

Im Folgenden sind einige der wichtigsten Unterschiede bei den Funktionen von Webserver und Anwendungsserver aufgeführt:

  • Der Webserver dient zur Bereitstellung von HTTP-Inhalten. App Server kann auch HTTP-Inhalte bereitstellen, ist jedoch nicht nur auf HTTP beschränkt. Es kann andere Protokollunterstützung wie RMI / RPC bereitgestellt werden
  • Der Webserver ist hauptsächlich für die Bereitstellung statischer Inhalte konzipiert. Die meisten Webserver verfügen jedoch über Plugins zur Unterstützung von Skriptsprachen wie Perl, PHP, ASP, JSP usw., über die diese Server dynamische HTTP-Inhalte generieren können.
  • Die meisten Anwendungsserver haben einen Webserver als integralen Bestandteil, dh App Server kann alles tun, was der Webserver kann. Darüber hinaus verfügt App Server über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene wie Verbindungspooling, Objektpooling, Transaktionsunterstützung, Messaging-Dienste usw.
  • Da Webserver für statische Inhalte und App-Server für dynamische Inhalte gut geeignet sind, verfügen die meisten Produktionsumgebungen über Webserver, die als Reverse-Proxy für App-Server fungieren. Das heißt, während der Bearbeitung einer Seitenanforderung werden statische Inhalte (wie Bilder / statisches HTML) von einem Webserver bereitgestellt, der die Anforderung interpretiert. Mithilfe einer Filtertechnik (meistens Erweiterung der angeforderten Ressource) identifiziert der Webserver die Anforderung dynamischer Inhalte und leitet sie transparent an den App-Server weiter

Ein Beispiel für eine solche Konfiguration ist Apache Tomcat HTTP Server und Oracle (ehemals BEA) WebLogic Server. Apache Tomcat HTTP Server ist Webserver und Oracle WebLogic ist Anwendungsserver.

In einigen Fällen sind die Server eng integriert, z. B. IIS und .NET Runtime. IIS ist ein Webserver. In Verbindung mit einer .NET-Laufzeitumgebung kann IIS Anwendungsdienste bereitstellen.

Rutesh Makhijani
quelle
18
Auch JBoss (jetzt WildFly) ist ein bekanntes Beispiel für einen Anwendungsserver: D
KNU
4
Gute Erklärung, da wir einen Anwendungsserver anstelle eines Webservers verwenden können. Was sind die Vorteile eines Webservers und eines Anwendungsservers für eine einzelne Anwendung? Und was die Leistung betrifft, was ist die beste Option?
Lalinda Sampath
33
"Apache Tomcat HTTP Server ist Webserver und Oracle WebLogic ist Anwendungsserver." Apache Tomcat und Apache HTTP Server sind also zunächst zwei verschiedene Produkte. Und das ist keine wirklich genaue Aussage. Apache Tomcat ist ein Anwendungsserver. Sicher, es kann auch Webseiten bedienen, aber es ist ein Anwendungsserver für die Bereitstellung von Java. Mir ist klar, dass der Begriff "Webserver" häufig lose verwendet wird. Aber es verwirrt nur die Leute.
Ironarm
18
Apache Tomcat ist kein Webserver, sondern ein Anwendungsserver, auf dem Java-Servelets ausgeführt werden. Der Apache HTTP-Server ist ein Webserver. Es gibt keinen Server namens Apache Tomcat HTTP-Server.
Abhishek Pathak
3
-1 für die Verwechslung von Apache Tomcat und Apache HTTPD. stackoverflow.com/questions/30632/…
Bacon Bits
154

Dies ist eine detaillierte Antwort mit einigen Szenarien, um den Unterschied, die Ähnlichkeit und die Art und Weise, wie beide zusammenarbeiten können, klar zu verstehen

Anwendungsserver ist ein Begriff, der manchmal mit einem Webserver gemischt wird . Während ein Webserver hauptsächlich HTTP-Protokolle verarbeitet , verarbeitet der Anwendungsserver mehrere verschiedene Protokolle, einschließlich, aber nicht beschränkt auf HTTP .

Die Hauptaufgabe des Webservers besteht darin , den Site-Inhalt anzuzeigen, und der Anwendungsserver ist für die Logik , die Interaktion zwischen dem Benutzer und dem angezeigten Inhalt verantwortlich. Der Anwendungsserver arbeitet mit dem Webserver zusammen, auf dem einer angezeigt wird und der andere interagiert.

Die Informationen, die zwischen dem Server und seinem Client hin und her übertragen werden, beschränken sich nicht auf einfache Anzeige-Markups, sondern auf die Interaktion zwischen beiden.

In den meisten Fällen erstellt der Server diese Interaktion über eine Komponenten-API wie J2EE (Java 2 Platform) , EJB (Enterprise JavaBean) und andere verschiedene Anwendungssoftwaremodelle.

Geben Sie hier die Bildbeschreibung ein

Ein Beispiel:

Der beste Weg, um den Unterschied zwischen den Szenarien, in denen ein Anwendungsserver mit dem Webserver zusammenarbeitet, und einem Szenario, in dem kein Anwendungsserver vorhanden ist, zu verstehen, ist ein Online-Shop.

Szenario 1: Webserver ohne Anwendungsserver

Sie haben einen Online-Shop 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 senden, führt die Site eine Suche durch und gibt ein HTML-Ergebnis an ihren Client zurück. Der Webserver sendet Ihre Anfrage direkt an den Datenbankserver (haben Sie etwas Geduld, ich werde dies in unserem nächsten Nugget erklären) und wartet auf eine Antwort. Nach dem Empfang 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 erfolgt jedes Mal, wenn eine Abfrage ausgeführt wird.

Szenario 2: Webserver mit einem Anwendungsserver

Wenn die Abfrage, die Sie ausführen möchten, bereits zuvor ausgeführt wurde und sich seitdem keine Daten geändert haben, generiert der Server die Ergebnisse, ohne die Anforderung 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 empfangen kann, ohne eine weitere doppelte Abfrage an den Datenbankserver zu senden. Der Server fungiert grundsätzlich als Zwischenstufe zwischen dem Datenbankserver und dem Webserver. Auf diese Weise können die abgerufenen Informationen im ersten Szenario wiederverwendet werden, da diese Informationen in eine bestimmte und "angepasste" HTML-Seite eingebettet sind. Dies ist kein wiederverwendbarer Prozess. Ein zweiter Client muss die Informationen erneut anfordern und eine weitere eingebettete HTML-Seite mit den angeforderten Informationen erhalten - höchst ineffizient.

Um solch eine Vielzahl komplexer Aufgaben zu unterstützen, muss dieser Server über eine integrierte Redundanz, eine hohe Verarbeitungsleistung und viel RAM verfügen, damit alle Daten, die er abruft, in Echtzeit verarbeitet werden können.

Hoffe das hilft.

Durai Amuthan.H
quelle
10
Dies ist selbst für Webanwendungen nicht genau / verwirrend (dh der Begriff Anwendungsserver gilt für Nicht-Webanwendungen). Nur Web berücksichtigen: Ein Webserver enthält Software (Apache, Nginx) zur Verarbeitung von Webanfragen (http). Ein Anwendungsserver enthält / macht die Anwendung verfügbar (z. B. PHP-Code). Möglicherweise handelt es sich um denselben Computer, möglicherweise nicht. Beispielsweise wird es als normal angesehen, wenn nginx auf einem Computer (Webserver) Anforderungen an php-fpm auf einem anderen Computer (Anwendungsserver) weiterleitet, der selbst keinen hat http access (macht nur den port für php-fpm selbst verfügbar).
AD7six
@ AD7six Ein Webserver verarbeitet ausschließlich HTTP-Anforderungen, während ein Anwendungsserver die Geschäftslogik für Anwendungsprogramme über eine beliebige Anzahl von Protokollen einschließlich HTTP verarbeitet.
Durai Amuthan.H
Mein Punkt ist der Anwendungsserver kann Anfragen http behandeln, es keineswegs ist eine Voraussetzung. the application server deals with several different protocols, including, but not limited, to HTTP<- das heißt, es verarbeitet definitiv http-Anfragen - das ist nicht korrekt.
AD7six
6
Nach dem erneuten Lesen der angegebenen Beispiele sehe ich hier keine wirkliche Klarheit - die Beschreibungen beziehen sich hauptsächlich auf das Caching. Klar ist, dass ein Webserver Software ist, eine Anwendung Software. Wenn sie auf demselben Computer bereitgestellt werden, kann auf den Computer verwiesen werden, wie Sie möchten. Wenn sie sich auf verschiedenen Computern befinden, ist es normal, dass derjenige, auf dem der Webserver ausgeführt wird, als Webserver und derjenige, auf dem die App ausgeführt wird, als App-Server bezeichnet wird. Normalerweise teilen Sie die Dinge nach Last und Lastausgleich auf. Insgesamt finde ich, dass diese Antwort nichts Nützliches hinzufügt.
AD7six
@ AD7six Meine Antwort soll die anderen Antworten ergänzen, dh andere Antworten bedeuten bereits, was Sie gefragt haben, es ist nur eine Erweiterung davon.
Durai Amuthan.H
136

Beide Begriffe sind sehr allgemein gehalten, einer enthält den anderen und in einigen Fällen umgekehrt.

  • Webserver : Liefert Inhalte über das http-Protokoll an das Web.

  • Anwendungsserver : Hostet und macht Geschäftslogik und -prozesse verfügbar.

Ich denke, dass der Hauptpunkt darin besteht, dass der Webserver alles über das http-Protokoll verfügbar macht, während der Anwendungsserver nicht darauf beschränkt ist.

In vielen Szenarien werden Sie jedoch feststellen, dass der Webserver zum Erstellen des Frontends des Anwendungsservers verwendet wird, dh, er stellt eine Reihe von Webseiten bereit, auf denen der Benutzer mit den in the gefundenen Geschäftsregeln interagieren kann Anwendungsserver.

jmservera
quelle
66

Webserver

Führen Sie aus python -m 'SimpleHTTPServer'und gehen Sie zu http: // localhost: 8080 . Was Sie sehen, ist ein Webserver, der funktioniert. Der Server stellt einfach Dateien über HTTP bereit, die auf Ihrem Computer gespeichert sind. Der entscheidende Punkt ist, dass dies alles zusätzlich zum HTTP-Protokoll erfolgt. Es gibt zum Beispiel auch FTP-Server, die genau dasselbe tun (gespeicherte Dateien bereitstellen), jedoch über einem anderen Protokoll.

Anwendungsserver

Angenommen, wir haben eine winzige Anwendung wie unten (Ausschnitt aus Flask ).

@app.route('/')
def homepage():
    return '<html>My homepage</html>'

@app.route('/about')
def about():
    return '<html>My name is John</html>'

Das kleine Beispielprogramm ordnet die URL /der Funktion homepage()und die /aboutder Funktion zu about().

Um diesen Code auszuführen, benötigen wir einen Anwendungsserver (z. B. Gunicorn) - ein Programm oder Modul, das auf Anforderungen von einem Client warten und mithilfe unseres Codes etwas dynamisch zurückgeben kann. Im Beispiel geben wir einfach sehr schlechtes HTML zurück.

Über welche Geschäftslogik sprechen alle anderen? Nun, da eine URL irgendwo speziell in unserer Codebasis zugeordnet ist, zeigen wir hypothetisch eine Logik darüber, wie unser Programm funktioniert.


Recapping

Webserver - liefert Dateien, die irgendwo gespeichert sind (am häufigsten .css, .html, .js). Übliche Webserver sind Apache, Nginx oder sogar Pythons SimpleHTTPServer.

Anwendungsserver - bedient Dateien, die im laufenden Betrieb generiert werden. Im Wesentlichen verfügen die meisten Webserver über Plugins oder sogar über integrierte Funktionen. Es gibt auch strenge Anwendungsserver wie Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) usw.

Beachten Sie, dass Sie tatsächlich einen Webserver mit dem Code des Anwendungsservers erstellen können. Dies geschieht in einigen Fällen während der Entwicklung, in denen nicht eine Unmenge verschiedener Server auf Ihrem Computer ausgeführt werden sollen.

Pithikos
quelle
Dies ist die beste und prägnanteste Antwort. Ich habe mich gefragt, ob ein Webserver als Teilmenge eines Anwendungsservers betrachtet werden kann. Im Moment denke ich, dass ein Webserver wie eine Getter-Methode ist und ein Anwendungsserver wie eine Factory-Methode (wobei die URL ein Konstruktorargument ist: D)
8
Uff .. Zum Schluss danke ich Ihnen für Ihre Python-Perspektive. So sprachunabhängig dieses Thema auch sein mag, es ist es nicht. Jemand, der EJB noch nie verwendet hat, wird die Java-orientierten Antworten nicht klar verstehen.
Vikas
Vielen Dank. "Um diesen Code auszuführen, benötigen wir einen Anwendungsserver", können Sie angeben, auf welchem ​​Anwendungsserver das Flask-Programm ausgeführt werden soll?
Tim
Dies ist eine nahezu perfekte Antwort
Ramy Farid
65

Wie Rutesh und jmservera betonten, ist die Unterscheidung unscharf. Historisch gesehen waren sie unterschiedlich, aber in den 90er Jahren vermischten diese beiden zuvor unterschiedlichen Kategorien Merkmale und verschmolzen effektiv. An dieser Stelle ist es wahrscheinlich am besten, sich vorzustellen, dass die Produktkategorie "App Server" eine strikte Obermenge der Kategorie "Webserver" ist.

Einige Geschichten. In den frühen Tagen des Mosaic-Browsers und der mit Hyperlinks versehenen Inhalte wurde dieses sogenannte "Webserver" entwickelt, das Webseiteninhalte und Bilder über HTTP bereitstellte. Der größte Teil des Inhalts war statisch, und das HTTP 1.0-Protokoll war nur eine Möglichkeit, Dateien zu versenden. Schnell entwickelte sich die Kategorie "Webserver" um CGI-Funktionen - und startete effektiv einen Prozess für jede Webanforderung, um dynamischen Inhalt zu generieren. HTTP reifte ebenfalls und die Produkte wurden mit Caching-, Sicherheits- und Verwaltungsfunktionen komplexer. Als die Technologie ausgereift war, erhielten wir von Kiva und NetDynamics unternehmensspezifische Java-basierte serverseitige Technologie, die schließlich alle zu JSP verschmolzen. Microsoft hat, glaube ich, 1996 ASP zu Windows NT 4.0 hinzugefügt. Der statische Webserver hatte einige neue Tricks gelernt, so dass es ein effektiver "

In einer parallelen Kategorie hatte sich der App-Server weiterentwickelt und existierte lange Zeit. Unternehmen lieferten Produkte für Unix wie Tuxedo, TopEnd, Encina, die philosophisch von Mainframe-Anwendungsverwaltungs- 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. (Für Encina war das Kommunikationsprotokoll DCE RPC; für MTS war es DCOM; usw.) 1995/96 begannen diese traditionellen App-Server-Produkte, grundlegende HTTP-Kommunikationsfähigkeiten zunächst über Gateways einzubetten. Und die Linien begannen zu verschwimmen.

Webserver wurden immer ausgereifter in Bezug auf höhere Belastungen, mehr Parallelität und bessere Funktionen. App-Server bieten immer mehr HTTP-basierte Kommunikationsfunktionen.

Zu diesem Zeitpunkt ist die Grenze zwischen "App-Server" und "Webserver" verschwommen. Aber die Leute verwenden die Begriffe weiterhin anders, um sie hervorzuheben. Wenn jemand "Webserver" sagt, denken Sie oft an HTTP-zentrierte, Web-UI-orientierte Apps. Wenn jemand "App-Server" sagt, denken Sie vielleicht "höhere Lasten, Unternehmensfunktionen, Transaktionen und Warteschlangen, Mehrkanal-Kommunikation (HTTP + mehr). Oft ist es jedoch dasselbe Produkt, das beide Workload-Anforderungen erfüllt.

  • WebSphere, der "App-Server" von IBM, verfügt über einen eigenen gebündelten Webserver.
  • WebLogic, ebenfalls ein traditioneller App-Server.
  • Windows, der App Server von Microsoft (zusätzlich zum Datei- und Druckserver, Medienserver usw.), bündelt IIS.
Cheeso
quelle
Sehr klare Antwort. Aber können Sie etwas mehr über die "neuen Tricks" erzählen, die es einem Webserver ermöglichten, als Anwendungsserver aufzutreten?
Quazi Irfan
3
"Neue Tricks" implizieren das Ausführen einer serverseitigen Logik. Skriptlogik wie ASP oder andere. Die ursprünglichen "Webserver" haben gerade statischen Inhalt aus dem Dateisystem zurückgegeben. Davon sind wir jetzt weit entfernt.
Cheeso
36

Wie bereits erwähnt, verarbeiten Webserver HTTP-Petitionen, während Anwendungsserver Petitionen für verteilte Komponenten bearbeiten. Der einfachste Weg, den Unterschied zu verstehen, besteht darin, die beiden Produkte in Bezug auf die von ihnen angebotene Programmierumgebung zu vergleichen.

Webserver -> Programmierumgebung

IIS: ASP (.NET)

Tomcat: Servlet

Anlegestelle: Servlet

Apache: Php, CGI

Anwendungsserver -> Programmierumgebung

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic Application Server: EJB

Der entscheidende Unterschied besteht darin, dass Anwendungsserver einige Technologien für verteilte Komponenten unterstützen und Funktionen wie Remote-Aufruf und verteilte Transaktionen wie EJB in der Java-Welt oder COM + auf der Microsoft-Plattform bereitstellen . HTTP-Server unterstützen häufig einige einfachere Programmierumgebungen, häufig Skripte, wie ASP (.NET) bei Microsoft oder Servlet, einschließlich JSP und viele andere bei Java oder PHP und CGI bei Apache.

Andere Funktionen wie Lastausgleich, Clustering, Sitzungsfailover, Verbindungspooling usw., die sich früher im Bereich von Anwendungsservern befanden, werden auch direkt auf Webservern oder über einige Produkte von Drittanbietern verfügbar.

Schließlich ist anzumerken, dass das Bild durch "Lightweight-Container" wie Spring Framework weiter verzerrt wird, die häufig den Zweck von Anwendungsservern auf einfachere Weise und ohne die Anwendungsserverinfrastruktur ergänzen. Und da sich der Verteilungsaspekt in Anwendungen von einer verteilten Komponente zu einem Dienstparadigma und einer SOA-Architektur bewegt, bleibt immer weniger Platz für herkömmliche Anwendungsserver.

Dan
quelle
Kann einer der von Ihnen aufgelisteten Anwendungsserver als http-Webserver wie Apache http verwendet werden?
LearningMath
22

Der Hauptunterschied zwischen Webserver und Anwendungsserver besteht darin, dass der Webserver statische Seiten, z. B. HTML und CSS, bereitstellen soll, während der Anwendungsserver für die Generierung dynamischer Inhalte verantwortlich ist, indem serverseitiger Code ausgeführt wird, z. B. JSP, Servlet oder EJB.

Welches soll ich verwenden?
Sobald Sie den Unterschied zwischen Web- und Anwendungsserver- und Webcontainern kennen, können Sie leicht herausfinden, wann Sie sie verwenden müssen. Sie benötigen eine web serverähnliche Apache-HTTPD, wenn Sie statische Webseiten bereitstellen. Wenn Sie eine Java-Anwendung mit nur JSP und Servlet haben, um dynamischen Inhalt zu generieren, benötigen Sie web containersTomcat oder Jetty. Während , wenn Sie Java - EE - Anwendung haben EJB verwenden, verteilte Transaktionen, Messaging und andere ausgefallene Funktionen , als Sie flügge eine vollständige benötigen application serverwie JBoss, WebSphere oder Oracle WebLogic.

Der Webcontainer ist Teil von Web Server und der Webserver ist Teil von Application Server.

Anwendungsserver

Der Webserver besteht aus einem Webcontainer, während der Anwendungsserver aus einem Webcontainer sowie einem EJB-Container besteht.

Arun Raaj
quelle
"Webserver besteht aus Webcontainer ": Laut youtu.be/ATObcDPLa40 ist dieses Video falsch
Vyshnav Ramesh Thrissur
20

Kurz gesagt, ein Webserver ist ein Server, der Benutzern Webseiten über http bereitstellt. Ein Anwendungsserver ist ein Server, der die Geschäftslogik für ein System hostet. Es hostet häufig sowohl lang laufende / Batch-Prozesse als auch / oder Interop-Services, die nicht für den menschlichen Gebrauch bestimmt sind (REST / JSON-Services, SOAP, RPC usw.).

Kreuz
quelle
2
Was bedeutet der Begriff "Host ist die Geschäftslogik"? Wie wird es durchgeführt?
TwiggedToday
Wird die Geschäftslogik dem Kunden über Webdienste zugänglich gemacht?
TwiggedToday
Es kann über Webdienste oder über eine andere Schnittstelle (TCP, MQ, Flatfiles auf einer Freigabe) bereitgestellt werden (ich empfehle die letzte nicht).
C. Ross
Dies kann irreführend sein. Der Anwendungsserver hostet nichts. Ihr Code hostet die Geschäftslogik und der Anwendungsserver fungiert als Bindeglied zwischen dieser und den von Benutzern angeforderten Webseiten.
Pithikos
18

Ein Webserver verarbeitet ausschließlich HTTP / HTTPS-Anforderungen. Es stellt Inhalte über das HTTP / HTTPS-Protokoll für das Web bereit.

Ein Anwendungsserver stellt Anwendungsprogrammen über eine beliebige Anzahl von Protokollen, möglicherweise einschließlich HTTP, Geschäftslogik zur Verfügung. Das Anwendungsprogramm kann diese Logik genauso verwenden, wie es eine Methode für ein Objekt aufrufen würde. In den meisten Fällen macht der Server diese Geschäftslogik über eine Komponenten-API verfügbar, z. B. das EJB-Komponentenmodell (Enterprise JavaBean), das auf Java EE-Anwendungsservern (Java Platform, Enterprise Edition) zu finden ist. Der Hauptpunkt ist, dass der Webserver alles über das http-Protokoll verfügbar macht, während der Anwendungsserver nicht darauf beschränkt ist. Ein Anwendungsserver bietet daher viel mehr Dienste als ein Webserver, zu denen normalerweise gehören:

  • Eine (proprietäre oder nicht proprietäre) API
  • Lastausgleich, Failover ...
  • Objektlebenszyklusmanagement
  • Staatsverwaltung (Sitzung)
  • Ressourcenverwaltung (zB Verbindungspools zur Datenbank)

Die meisten Anwendungsserver haben einen Webserver als integralen Bestandteil, dh App Server kann alles tun, was der Webserver kann. Darüber hinaus verfügt App Server über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene wie Verbindungspooling, Objektpooling, Transaktionsunterstützung, Messaging-Dienste usw.

Ein Anwendungsserver kann (aber nicht immer) auf einem Webserver ausgeführt werden, um Programmlogik auszuführen, deren Ergebnisse dann vom Webserver bereitgestellt werden können. Dies ist ein Beispiel für ein Webserver / Anwendungsserver-Szenario. Ein gutes Beispiel in der Microsoft-Welt ist die Beziehung zwischen Internet Information Server und SharePoint Server. IIS ist ein Webserver. SharePoint ist ein Anwendungsserver. SharePoint befindet sich "über" IIS, führt eine bestimmte Logik aus und liefert die Ergebnisse über IIS. In der Java-Welt gibt es beispielsweise ein ähnliches Szenario mit Apache und Tomcat.

Da Webserver für statische Inhalte und App-Server für dynamische Inhalte gut geeignet sind, verfügen die meisten Produktionsumgebungen über Webserver, die als Reverse-Proxy für App-Server fungieren. Das heißt, während eine Seitenanforderung bearbeitet wird, werden statische Inhalte wie Bilder / statisches HTML von einem Webserver bereitgestellt, der die Anforderung interpretiert. Mithilfe einer Filtertechnik (meistens Erweiterung der angeforderten Ressource) identifiziert der Webserver die Anforderung dynamischer Inhalte und leitet sie transparent an den App-Server weiter.

Ein Beispiel für eine solche Konfiguration ist Apache HTTP Server und BEA WebLogic Server. Apache HTTP Server ist Webserver und BEA WebLogic ist Anwendungsserver. In einigen Fällen sind die Server eng integriert, z. B. IIS und .NET Runtime. IIS ist ein Webserver. Wenn IIS mit einer .NET-Laufzeitumgebung ausgestattet ist, kann es Anwendungsdienste bereitstellen


Web Server                               Programming Environment
Apache                                   PHP, CGI
IIS (Internet Information Server)        ASP (.NET)
Tomcat                                   Servlet
Jetty                                    Servlet

Application Server                       Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's)   EJB
JBoss AS                                 EJB
MTS                                      COM+
Parv
quelle
2
Hat einige Erwähnungen von anderen Sachen, aber vieles scheint mir ein Plagiat zu sein. Wie die Liste am Ende, als ob sie von Dans Post kopiert worden wäre. Und "... Proxy zum App-Server umkehren ..." Auch Teil mit HTTP-Server und BEA WebLogic Server als Beispiele am Ende ziemlich genau das, was Rutesh Makhijani geschrieben hat.
Brat
11

Die Grenze zwischen diesen beiden wird immer dünner.

Anwendungsserver stellen Geschäftslogik Clients zur Verfügung. Das bedeutet, dass Anwendungsserver aus einer Reihe von Methoden bestehen (nicht ausschließlich, kann aber auch ein Netzwerkcomputer sein, auf dem viele Software ausführen können), um Geschäftslogik auszuführen. Es werden also einfach die gewünschten Ergebnisse ausgegeben, nicht HTML-Inhalte. (ähnlich einem Methodenaufruf). Es ist also nicht ausschließlich HTTP-basiert.

Webserver geben jedoch HTML-Inhalte an Webbrowser weiter (ausschließlich HTTP-basiert). Webserver waren nur in der Lage, nur die statischen Webressourcen zu verarbeiten, aber das Aufkommen von serverseitigem Scripting ermöglichte es Webservern, auch dynamische Inhalte zu verarbeiten. Wenn ein Webserver die Anforderung aufnimmt und an relevante Skripte (PHP, JSP, CGI-Skripte usw.) weiterleitet, um HTML-Inhalte zu erstellen, die an den Client gesendet werden sollen. Sobald der Inhalt empfangen wurde, sendet der Webserver die HTML-Seite an den Client.

Heutzutage werden diese beiden Server jedoch zusammen verwendet. Wobei der Webserver die Anforderung entgegennimmt und dann ein Skript aufruft, um den HTML-Inhalt zu erstellen. Anschließend ruft das Skript erneut einen Anwendungsserver LOGIC auf (z. B. Transaktionsdetails abrufen), um den HTML-Inhalt zu füllen.

Somit werden beide Server effektiv genutzt.

Daher ... Wir können mit Sicherheit sagen, dass heutzutage in den meisten Fällen Webserver als Teilmenge von Anwendungsservern verwendet werden. ABER im Theater ist das NICHT der Fall.

Ich habe viele Artikel zu diesem Thema gelesen und fand diesen Artikel sehr praktisch.

Dilruk
quelle
10

Ein Anwendungsserver wird normalerweise entwickelt und bereitgestellt, um länger laufende Prozesse zu ermöglichen, die auch ressourcenintensiver sind.

Ein Webserver wird für kurze Bursts verwendet, die im Allgemeinen nicht ressourcenintensiv sind. Dies dient hauptsächlich dazu, die Bereitstellung von webbasiertem Datenverkehr zu erleichtern.

Joseph
quelle
9

In Java gibt es noch einen: Webcontainer (oder genauer gesagt Servlet-Container). Es liegt beispielsweise zwischen Webserver und Anwendungsserver.

Ein Webcontainer in Java-Begriffen ist ein Anwendungsserver, der im Grunde nur den JSP / Servlet-Teil von Java EE implementiert und dem mehrere Kernteile von Java EE fehlen, z. B. die EJB-Unterstützung. Ein Beispiel ist Apache Tomcat.

BalusC
quelle
8

Ein Anwendungsserver ist ein Computer (ein ausführbarer Prozess, der tatsächlich auf einem Computer ausgeführt wird), der (auf jedem Kanal, unter Verwendung eines beliebigen Protokolls) auf Anforderungen von Clients für den von ihm bereitgestellten Dienst "lauscht" und dann basierend auf diesen Anforderungen etwas unternimmt. (kann eine Antwort an den Kunden beinhalten oder nicht)

Ein Webserver ist ein Prozess, der auf einem Computer ausgeführt wird, der mithilfe eines der "Internet" -Protokolle (http, https, ftp usw.) speziell auf dem TCP / IP-Kanal "lauscht" und basierend auf diesen eingehenden Anforderungen alles tut, was er tut. Im Allgemeinen wurde (wie ursprünglich definiert) eine HTML-Webseite abgerufen / generiert und an den Client zurückgegeben, entweder aus einer statischen HTML-Datei auf dem Server abgerufen oder dynamisch basierend auf Parametern in der eingehenden Client-Anforderung erstellt.

Charles Bretana
quelle
3
Kannst du bitte Beispiele für Badekoffer geben?
Frewper
Können Sie bitte Beispiele für beides nennen? Vielen Dank.
LearningMath
8

Ein Webserver führt das HTTP-Protokoll aus, um Webseiten bereitzustellen. Ein Anwendungsserver kann (aber nicht immer) auf einem Webserver ausgeführt werden, um Programmlogik auszuführen, deren Ergebnisse dann vom Webserver bereitgestellt werden können. Dies ist ein Beispiel für ein Webserver / Anwendungsserver-Szenario.

Ein gutes Beispiel in der Microsoft-Welt ist die Beziehung zwischen Internet Information Server und SharePoint Server. IIS ist ein Webserver. SharePoint ist ein Anwendungsserver. SharePoint befindet sich "über" IIS, führt eine bestimmte Logik aus und liefert die Ergebnisse über IIS.

In der Java-Welt gibt es beispielsweise ein ähnliches Szenario mit Apache und Tomcat.

Robert S.
quelle
8

Zum einen stellt ein Webserver Webinhalte (HTML und statische Inhalte) über das HTTP-Protokoll bereit. Andererseits ist ein Anwendungsserver ein Container, auf dem Sie Geschäftslogik und -prozesse über verschiedene Protokolle, einschließlich HTTP in einer n-Tier-Architektur, erstellen und für Clientanwendungen verfügbar machen können.

Ein Anwendungsserver bietet daher viel mehr Dienste als ein Webserver, zu denen normalerweise gehören:

  • Eine (proprietäre oder nicht proprietäre) API
  • Objektlebenszyklusmanagement,
  • Staatsverwaltung (Sitzung),
  • Ressourcenverwaltung (z. B. Verbindungspools zur Datenbank),
  • Lastausgleich, Failover ...

AFAIK, ATG Dynamo war Ende der 90er Jahre einer der ersten Anwendungsserver (gemäß der obigen Definition). Anfang 2000 regierten einige proprietäre Anwendungsserver wie ColdFusion (CFML AS), BroadVision ( serverseitiges JavaScript AS) usw. Aber keiner überlebte die Ära der Java-Anwendungsserver wirklich.

Pascal Thivent
quelle
6

Grundverständnis:

In der Client-Server-Architektur

Server:> Welcher dient den Anfragen.

Client:> Welcher Service verbraucht.

Webserver und Anwendungsserver sind beide Softwareanwendungen, die ihren Clients als Server dienen.

Sie erhielten ihre Namen basierend auf ihrem Verwendungsort.

Web server :> serve web content
           :> Like Html components
           :> Like Javascript components
           :> Other web components like images,resource files
           :> Supports mainly web protocols like http,https.
           :> Supports web Request & Response formats.

Verwendungszweck --

      we require low processing rates,

      regular processing practices involves.

Beispiel: Alle Flat-Server sind im Allgemeinen fertig verfügbar und dienen nur webbasierten Inhalten.

Application server :> Serve application content/component data(Business data).
                   :> These are special kind which are custom written 
                      designed/engineered for specific
                      purpose.some times fully unique in 
                      their way and stands out of the crowd. 

                   :> As these serves different types of data/response contents
                   :> So we can utilize these services for mobile client,web 
                      clients,intranet clients. 
                   :> Usually application servers are services offered on different 
                      protocols.    
                   :> Supports different Request& Response formats.

Verwendungszweck --

      we require multi point processing,

      specialized processing techniques involves like for AI.

Beispiel: Google Maps-Server, Google-Suchserver, Google Docs-Server, Microsoft 365-Server, Microsoft Computer Vision-Server für KI.

Wir können sie als Ebenen / Hierarchien in einer 4-Tier / N-Tier-Architektur annehmen.

 So they can provide 
                    load balancing,
                    multiple security levels,
                    multiple active points,
                    even they can provide different request processing environments.

Bitte folgen Sie diesem Link für Standardarchitektur-Analogien:

https://docs.microsoft.com/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)

chandra rv
quelle
5

Der größte Unterschied besteht darin, dass ein Webserver HTTP-Anforderungen verarbeitet, während ein Anwendungsserver Geschäftslogik auf einer beliebigen Anzahl von Protokollen ausführt.

MarkPowell
quelle
5

Eigentlich ist Apache ein Webserver und Tomcat ist ein Anwendungsserver. Wenn als HTTP-Anfrage an den Webserver kommt. Anschließend werden statische Inhalte vom Webserver an den Browser zurückgesendet. Ist da und Logik zu erledigen, dann sendet diese Anfrage an den Anwendungsserver. Nach der Verarbeitung der Logik wird die Antwort an den Webserver gesendet und an den Client gesendet.

Amila
quelle
4

All dies erschwert etwas sehr Einfaches. Ein Anwendungsserver enthält einen Webserver, ein Anwendungsserver enthält nur ein paar mehr Ergänzungen / Erweiterungen als Standardwebserver. Wenn Sie sich TomEE als Beispiel ansehen:

CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal

Sie werden sehen, dass Tomcat (Webcontainer / Server) nur ein weiteres Tool im Arsenal der App-Server ist. Sie können JPA und die andere Technologie auch auf dem Webserver herunterladen, wenn Sie möchten, aber die Anwendungsserver verpacken all diese Dinge nur zu Ihrer Bequemlichkeit. Um vollständig als App-Server klassifiziert zu werden, müssen Sie im Wesentlichen eine Liste von Tools einhalten, die in einem Standard festgelegt sind.

Gerrit Brink
quelle
2

Es gibt nicht unbedingt eine klare Trennlinie. Heutzutage kombinieren viele Programme Elemente sowohl der Bereitstellung von http-Anforderungen (Webserver) als auch der Verarbeitung der Geschäftslogik (App-Server).

Peter Recore
quelle
2

Von https://en.wikipedia.org/wiki/Web_server

Ein Webserver ist ein Computersystem, das Anforderungen über HTTP verarbeitet, das grundlegende Netzwerkprotokoll, mit dem Informationen im World Wide Web verteilt werden. Der Begriff kann sich auf das gesamte System oder speziell auf die Software beziehen, die die HTTP-Anforderungen akzeptiert und überwacht .

Von https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

Ein Anwendungsserver wird hinter einem Webserver (z. B. Apache oder Microsoft Internet Information Services (IIS)) und (fast immer) vor einer SQL-Datenbank (z. B. PostgreSQL, MySQL oder Oracle) ausgeführt.

Webanwendungen sind Computercode, der auf Anwendungsservern ausgeführt wird und in den vom Anwendungsserver unterstützten Sprachen geschrieben ist und die vom Anwendungsserver angebotenen Laufzeitbibliotheken und -komponenten aufruft .

Manohar Reddy Poreddy
quelle
2

Der Anwendungsserver und der Webserver werden beide zum Hosten von Webanwendungen verwendet. Der Webserver befasst sich mit dem Webcontainer. Der Anwendungsserver befasst sich mit dem Webcontainer sowie dem EJB-Container (Enterprise JavaBean) oder dem COM + -Container für Microsoft dot Net.

Der Webserver wurde entwickelt, um statische HTTP-Inhalte wie HTML, Bilder usw. bereitzustellen. Für den dynamischen Inhalt stehen Plugins zur Unterstützung von Skriptsprachen wie Perl, PHP, ASP, JSP usw. zur Verfügung. Er ist auf das HTTP-Protokoll beschränkt. Die folgenden Server können dynamischen HTTP-Inhalt generieren.

Programmierumgebung des Webservers:

IIS: ASP (.NET)

Apache Tomcat: Servlet

Anlegestelle: Servlet

Apache: Php, CGI

Application Server kann alles tun, was Webserver kann, und hört mit jedem Protokoll zu. App Server verfügt über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene wie Verbindungspooling, Objektpooling, Transaktionsunterstützung, Messaging-Dienste usw.

Programmierumgebung des Anwendungsservers:

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic Application Server: EJB

Bablu Ahmed
quelle
1

Während es Überschneidungen zwischen den beiden geben kann (einige Webserver können sogar als Anwendungsserver verwendet werden), besteht der größte Unterschied meiner Meinung nach im Verarbeitungsmodell und in der Sitzungsverwaltung:

Im Webserver-Verarbeitungsmodell liegt der Schwerpunkt auf der Verarbeitung von Anforderungen. Der Begriff "Sitzung" ist ziemlich virtuell. Das heißt, "Sitzung" wird simuliert, indem die Darstellung des Status zwischen Client und Server (daher REST) ​​übertragen und / oder auf einen externen persistenten Speicher (SQL Server, Memcached usw.) serialisiert wird.

Auf dem Anwendungsserver ist die Sitzung normalerweise expliziter und besteht häufig aus einem Objekt, das sich während der gesamten Dauer der "Sitzung" im Speicher des Anwendungsservers befindet.

zvolkov
quelle
0

Dies hängt von der spezifischen Architektur ab. Einige Anwendungsserver verwenden möglicherweise Webprotokolle nativ (XML / RPC / SOAP über HTTP), sodass es kaum technische Unterschiede gibt. In der Regel ist ein Webserver benutzerorientiert und stellt eine Vielzahl von Inhalten über HTTP / HTTPS bereit, während ein Anwendungsserver nicht benutzerorientiert ist und möglicherweise nicht standardmäßige oder nicht routbare Protokolle verwendet. Natürlich könnte mit RIA / AJAX der Unterschied weiter getrübt werden, indem Clients, die bestimmte RAS-Dienste pumpen, nur Nicht-HTML-Inhalte (JSON / XML) bereitgestellt werden.

Cade Roux
quelle
0

IMO, es geht hauptsächlich darum, Bedenken zu trennen.

Aus rein technischer Sicht können Sie alles (Webinhalt + Geschäftslogik) auf einem einzigen Webserver erledigen. Wenn Sie dies tun würden, würden die Informationen in den angeforderten HTML-Inhalt eingebettet. Was wäre die Auswirkung?

Stellen Sie sich zum Beispiel vor, Sie haben zwei verschiedene Apps, die völlig unterschiedliche HTML-Inhalte im Browser rendern. Wenn Sie die Geschäftslogik in einen App-Server unterteilen würden, könnten Sie verschiedene Webserver bereitstellen, die über Skripte dieselben Daten im App-Server abrufen. Wenn Sie die Logik jedoch nicht trennen und auf dem Webserver behalten würden, würden Sie sie bei jeder Änderung Ihres Geschäftsmodells auf jedem einzelnen Webserver ändern, was mehr Zeit in Anspruch nehmen, weniger zuverlässig und zuverlässig sein würde fehleranfällig.

stdout
quelle