Was ist der Unterschied zwischen Anwendungsserver und Webserver?
Was ist der Unterschied zwischen Anwendungsserver und Webserver?
Antworten:
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:
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.
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.
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.
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.
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.
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 /about
der 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.
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.
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.
IIS: ASP (.NET)
Tomcat: Servlet
Anlegestelle: Servlet
Apache: Php, CGI
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.
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 containers
Tomcat 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 server
wie JBoss, WebSphere oder Oracle WebLogic.
Der Webcontainer ist Teil von Web Server und der Webserver ist Teil von Application Server.
Der Webserver besteht aus einem Webcontainer, während der Anwendungsserver aus einem Webcontainer sowie einem EJB-Container besteht.
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.).
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:
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+
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.
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.
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.
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.
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.
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:
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.
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)
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.
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.
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.
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).
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 .
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
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.
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.
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.