it-swarm.com.de

Was ist der Unterschied zwischen Anwendungsserver und Webserver?

Was ist der Unterschied zwischen Anwendungsserver und Webserver?

657
TwiggedToday

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

Im Folgenden sind einige der Hauptunterschiede bei den Funktionen von Web Server und Application Server 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 wurde hauptsächlich für die Bereitstellung statischer Inhalte entwickelt. Die meisten Webserver verfügen jedoch über Plugins zur Unterstützung von Skriptsprachen wie Perl, PHP, ASP, JSP usw., mit denen diese Server dynamische HTTP-Inhalte generieren können.
  • Die meisten Anwendungsserver verfügen über einen integrierten Webserver. Dies bedeutet, dass App Server alle Funktionen des Webservers ausführen kann. Darüber hinaus verfügt App Server über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene, z. B. Verbindungspooling, Objektpooling, Transaktionsunterstützung, Messaging-Dienste usw.
  • Da Webserver für statische Inhalte und App-Server für dynamische Inhalte gut geeignet sind, fungieren die meisten Produktionsumgebungen als Reverse-Proxy für App-Server. Das bedeutet, dass während der Bearbeitung einer Seitenanforderung statische Inhalte (z. B. Bilder/statisches HTML) von einem Webserver bereitgestellt werden, der die Anforderung interpretiert. Mithilfe einer Art 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 ein Webserver und Oracle WebLogic ist ein Anwendungsserver.

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

555

Dies ist eine detaillierte Antwort mit einigen Szenarien, um den Unterschied, die Ähnlichkeit und die Funktionsweise beider Szenarien in Verbindung mit allen Szenarien klar zu verstehen

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

Die Hauptaufgabe des Webservers besteht darin, den Inhalt der Site anzuzeigen und der Anwendungsserver ist für die Logik zuständig, die Interaktion zwischen dem Benutzer und dem angezeigten Inhalt. Der Anwendungsserver ist in Verbindung mit dem Webserver, auf dem einer angezeigt wird und der andere interagiert.

Die Informationen, die zwischen dem Server und seinem Client hin und her wandern, beschränken sich nicht auf einfache Anzeigemarkierungen, sondern auf die Interaktion zwischen beiden.

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

enter image description here

Ein Beispiel:

Der beste Weg, um den Unterschied zwischen den Szenarien zu verstehen, in denen ein Anwendungsserver mit dem Webserver zusammenarbeitet, und einem Szenario, in dem kein Anwendungsserver vorhanden ist, führt über einen Onlineshop.

Szenario 1: Webserver ohne Anwendungsserver

sie haben einen Online-Shop mit nur einem Webserver und keinem Anwendungsserver. Auf der Website wird eine Anzeige angezeigt, 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 den Client zurück. Der Webserver sendet Ihre Anfrage direkt an den Datenbankserver (haben Sie etwas Geduld, ich werde dies in unserem nächsten Nugget erläutern) 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 erhalten kann, ohne eine weitere doppelte Abfrage an den Datenbankserver zu senden. Der Server fungiert im Wesentlichen als Zwischenprodukt 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 andere HTML-eingebettete Seite mit den angeforderten Informationen erhalten - sehr ineffizient. Ganz zu schweigen davon, dass dieser Servertyp aufgrund seiner Fähigkeit, seine eigenen Ressourcen zu verwalten, einschließlich Sicherheit, Transaktionsverarbeitung, Messaging und Ressourcenpooling, sehr flexibel ist.

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

Hoffe das hilft.

136
Durai Amuthan.H

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

  • Webserver: Über das http-Protokoll werden Inhalte für das Web bereitgestellt.

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

Ich denke, dass der wichtigste Punkt ist, 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 Front-Ends des Anwendungsservers verwendet wird, dh, dass eine Reihe von Webseiten verfügbar gemacht wird, die es dem Benutzer ermöglichen, mit den in der gefundenen Geschäftsregeln zu interagieren Anwendungsserver.

125
jmservera

Wie Rutesh und Jmservera betonten, ist die Unterscheidung eine unscharfe. Historisch gesehen waren sie unterschiedlich, aber in den 90er Jahren mischten 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 Bereitstellung von Inhalten mit Hyperlinks entwickelte sich dieses Ding, das als "Webserver" bezeichnet wurde und 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. Die Kategorie "Webserver" wurde schnell um die CGI-Funktion erweitert. Auf diese Weise wird bei jeder Webanforderung ein Prozess zum Generieren dynamischer Inhalte gestartet. Auch HTTP entwickelte sich weiter und die Produkte wurden mit Caching-, Sicherheits- und Verwaltungsfunktionen ausgereifter. Als die Technologie reifte, erhielten wir von Kiva und NetDynamics eine firmenspezifische, auf Java basierende serverseitige Technologie, die schließlich alle zu JSP verschmolzen. Microsoft hat 1996 ASP zu Windows NT 4.0 hinzugefügt. Der statische Webserver hatte einige neue Tricks gelernt, so dass er in vielen Szenarien ein effektiver "App-Server" war.

In einer parallelen Kategorie hatte sich der App-Server weiterentwickelt und bestand schon lange. Unternehmen lieferten Produkte für Unix wie Tuxedo, TopEnd und Encina, die sich philosophisch aus Mainframe-Anwendungsverwaltungs- und -Überwachungsumgebungen wie IMS und CICS ableiten. Das Angebot von Microsoft war Microsoft Transaction Server (MTS), das später zu COM + weiterentwickelt wurde. Die meisten dieser Produkte spezifizierten "geschlossene" produktspezifische Kommunikationsprotokolle, um "fette" Clients mit Servern zu verbinden. (Für Encina lautete das Kommunikationsprotokoll DCE RPC, für MTS DCOM usw.) 1995/96 begannen diese traditionellen App-Server-Produkte, grundlegende HTTP-Kommunikationsfunktionen einzubetten, zunächst über Gateways. Und die Linien begannen zu verschwimmen.

Webserver wurden immer ausgereifter in Bezug auf die Verarbeitung höherer Lasten, mehr Parallelität und besserer Funktionen. App-Server lieferten immer mehr HTTP-basierte Kommunikationsfunktionen.

An dieser Stelle ist die Grenze zwischen "App-Server" und "Webserver" unscharf. Aber die Leute benutzen die Begriffe immer noch anders, um Nachdruck zu verleihen. Wenn jemand "Webserver" sagt, denkt man oft an HTTP-zentrierte, auf Web-UI ausgerichtete Apps. Wenn jemand "App-Server" sagt, denken Sie vielleicht "höhere Auslastungen, Unternehmensfunktionen, Transaktionen und Warteschlangen, Mehrkanal-Kommunikation (HTTP + mehr). Oft ist es jedoch dasselbe Produkt, das beide Arten von 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 zu File & Print Server, Media Server usw.), bündelt IIS.
59
Cheeso

Webserver

Führen Sie python -m 'SimpleHTTPServer' aus und gehen Sie zu http: // localhost: 808 . Was Sie sehen, ist ein Webserver in seiner Funktionsweise. Der Server stellt einfach Dateien über HTTP bereit, die auf Ihrem Computer gespeichert sind. Der entscheidende Punkt ist, dass dies alles über dem HTTP-Protokoll geschieht. Es gibt beispielsweise auch FTP-Server, die genau dasselbe tun (gespeicherte Dateien bereitstellen), jedoch auf einem anderen Protokoll basieren.

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 about() zu.

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.

Was ist die Geschäftslogik, über die alle anderen Leute sprechen? Nun, da eine URL einer bestimmten Stelle in unserer Codebasis zugeordnet ist, zeigen wir hypothetisch eine Logik darüber, wie unser Programm funktioniert.


Recapping

Webserver - dient zur Speicherung von Dateien (meistens CSS, HTML, JS). Übliche Webserver sind Apache, Nginx oder sogar Pythons SimpleHTTPServer.

Anwendungsserver - Ermöglicht die schnelle Bereitstellung von Dateien. Im Wesentlichen verfügen die meisten Webserver über Plugins oder bieten dafür sogar 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.

51
Pithikos

Wie bereits erwähnt, verarbeiten Webserver HTTP-Petitionen, während Anwendungsserver Petitionen für verteilte Komponenten verarbeiten. Der vielleicht 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

Anlegesteg: Servlet

Apache: Php, CGI

Anwendungsserver -> Programmierumgebung

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic-Anwendungsserver: EJB

Der entscheidende Unterschied besteht darin, dass Anwendungsserver eine verteilte Komponente - Technologie unterstützen, die Funktionen wie Remoteaufruf und verteilte Transaktionen wie EJB in Java world oder COM + auf der Microsoft-Plattform. HTTP-Server unterstützen häufig einfachere Programmierumgebungen, häufig Skripte wie ASP (.NET) bei Microsoft- oder Servlet-basierten, einschließlich JSP, und viele andere bei Java. oder PHP und CGI im Falle von Apache.

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

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

36
Dan

Ein Webserver verarbeitet ausschließlich HTTP/HTTPS-Anforderungen. Über das HTTP/HTTPS-Protokoll werden Inhalte für das Web bereitgestellt.

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

  • Eine (proprietäre oder nicht proprietäre) API
  • Lastenausgleich, Failover ...
  • Objekt-Lebenszyklus-Management
  • Zustandsverwaltung (Sitzung)
  • Ressourcenverwaltung (z. B. Verbindungspools zur Datenbank)

Die meisten Anwendungsserver verfügen über einen integrierten Webserver. Dies bedeutet, dass App Server alle Funktionen des Webservers ausführen kann. Darüber hinaus verfügt App Server über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene, z. B. 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 geliefert 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 stellt die Ergebnisse über IIS bereit. In der Java Welt gibt es zum Beispiel ein ähnliches Szenario mit Apache und Tomcat.

Da Webserver für statische Inhalte und App-Server für dynamische Inhalte gut geeignet sind, fungieren die meisten Produktionsumgebungen als Reverse-Proxy für App-Server. Das heißt, während eine Seitenanforderung bearbeitet wird, werden statische Inhalte wie Bilder/Statische HTML von einem Webserver bereitgestellt, der die Anforderung interpretiert. Mithilfe einer Art 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 Web Server und BEA WebLogic ist Application Server. In einigen Fällen sind die Server eng integriert, z. B. IIS und .NET Runtime. IIS ist ein Webserver. Mit der .NET-Laufzeitumgebung kann IIS 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+
18
Parv

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

Welches soll ich verwenden?
Wenn Sie den Unterschied zwischen Web- und Anwendungsservern und Webcontainern kennen, können Sie leicht herausfinden, wann Sie sie verwenden müssen. Sie benötigen einen web server wie Apache HTTPD, wenn Sie statische Webseiten bereitstellen. Wenn Sie eine Java -Anwendung mit nur JSP und Servlet zum Generieren dynamischer Inhalte haben, benötigen Sie web containers wie Tomcat oder Jetty. Während , wenn Sie Java EE-Anwendung mit EJB, verteilten Transaktionen, Nachrichtenübermittlung und anderen ausgefallenen Funktionen haben, benötigen Sie ein vollwertiges application server wie JBoss, WebSphere oder Oracle's WebLogic.

Der Webcontainer ist Teil des Webservers und der Webserver ist Teil des Anwendungsservers.

Application Server

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

17
Arun Raaj

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

16
C. Ross

In Java Begriffen gibt es noch einen: Web-Container (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 Javaimplementiert. _ EE und es fehlen einige Kernteile von Java EE, z. B. die EJB-Unterstützung. Ein Beispiel ist Apache Tomcat.

8
BalusC

Ein Anwendungsserver wird in der Regel so konzipiert und bereitgestellt, dass länger laufende Prozesse möglich sind, die auch ressourcenintensiver sind.

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

8
Joseph

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 geliefert 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 stellt die Ergebnisse über IIS bereit.

In der Java Welt gibt es zum Beispiel ein ähnliches Szenario mit Apache und Tomcat.

8
Robert S.

Ein Webserver stellt zunächst 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 somit viel mehr Dienste als ein Webserver, der normalerweise Folgendes umfasst:

  • Eine (proprietäre oder nicht proprietäre) API
  • Objekt-Lebenszyklus-Management,
  • Zustandsverwaltung (Sitzung),
  • Ressourcenverwaltung (z. B. Verbindungspools zur Datenbank),
  • Lastenausgleich, Failover ...

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

7
Pascal Thivent

Die Grenze zwischen diesen beiden wird immer dünner.

Anwendungsserver stellen einem Client Geschäftslogik zur Verfügung. Der zugehörige Anwendungsserver besteht also aus einer Reihe von Methoden (die jedoch nicht unbedingt ein vernetzter Computer sein müssen, 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.

Aber Webserver leiten HTML-Inhalte an Webbrowser weiter (ausschließlich auf HTTP-Basis). Webserver waren nur in der Lage, die statischen Webressourcen zu verarbeiten, aber das Aufkommen von serverseitigem Scripting half Webservern, auch dynamische Inhalte zu verarbeiten. Wobei der Webserver die Anforderung entgegennimmt und an das Skript (PHP-, JSP-, CGI-Skripte usw.) weiterleitet, um HTML-Inhalte zu erstellen, die an den Client gesendet werden sollen. Dann weiß der Webserver, wie er sie an den Client zurücksendet. WEIL das ein Webserver wirklich weiß.

Heutzutage nutzen die Entwickler beides zusammen. Wenn der Webserver die Anforderung entgegennimmt und dann ein Skript zum Erstellen des HTML aufruft, ruft das ABER-Skript erneut ein Anwendungsserver-LOGIK auf (z. B. Abrufen von Transaktionsdetails), um den HTML-Inhalt zu füllen.

In diesem Fall wurden also beide Server effektiv genutzt.

Deshalb ... Wir können mit ziemlicher Sicherheit sagen, dass heutzutage in den meisten Fällen Webserver als Teilmenge von Anwendungsservern verwendet werden. ABER theatralisch ist es NICHT der Fall.

Ich habe viele Artikel zu diesem Thema gelesen und fand this Artikel ganz praktisch.

7
Dilruk

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

Ein Webserver wird auf einem Computer ausgeführt, der unter Verwendung eines der "Internet" -Protokolle (http, https, ftp usw.) speziell den TCP/IP-Kanal "überwacht" und auf der Grundlage dieser eingehenden Anforderungen alle erforderlichen Aktionen ausführt. 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 Clientanforderung erstellt.

5
Charles Bretana

All das oben Genannte macht etwas sehr Einfaches nur zu kompliziert. Ein Anwendungsserver enthält einen Webserver, ein Anwendungsserver verfügt lediglich über ein paar Erweiterungen/Ergänzungen mehr als Standard-Webserver. 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 (Web-Container/Server) nur ein weiteres Tool im Arsenal der App-Server ist. Sie können JPA und die andere Technologie auch auf dem Webserver installieren, aber die Anwendungsserver packen 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 von einem Standard vorgegeben werden.

4
Gerrit Brink

Tatsächlich ist Apache ein Webserver und Tomcat ein Anwendungsserver. Wenn als HTTP-Anfrage zum Webserver kommt. Dann werden statische Inhalte per Webserver an den Browser zurückgesendet. Ist da und Logik zu erledigen, dann wird diese Anfrage an den Applikationsserver gesendet. Nach der Verarbeitung der Logik wird die Antwort an den Webserver gesendet und an den Client gesendet.

3
Amila

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

3
MarkPowell

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

Der Webserver wurde für die Bereitstellung von statischen HTTP-Inhalten wie HTML, Bildern usw. entwickelt. Für dynamische Inhalte stehen Plug-ins zur Verfügung, die Skriptsprachen wie Perl, PHP, ASP, JSP usw. unterstützen. Er ist auf das HTTP-Protokoll beschränkt. Unter Server können dynamische HTTP-Inhalte generiert werden.

Programmierumgebung des Webservers:

IIS: ASP (.NET)

Apache Tomcat: Servlet

Anlegesteg: Servlet

Apache: Php, CGI

Application Server kann alle Funktionen des Webservers ausführen und überwacht alle Protokolle. App Server verfügt über Komponenten und Funktionen zur Unterstützung von Diensten auf Anwendungsebene, z. B. Verbindungspooling, Objektpooling, Transaktionsunterstützung, Messaging-Dienste usw.

Programmierumgebung des Anwendungsservers:

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic-Anwendungsserver: EJB

2
Bablu Ahmed

Es gibt nicht unbedingt eine klare Trennlinie. Heutzutage kombinieren viele Programme Elemente von http-Anfragen (Webserver) und Geschäftslogik (App-Server).

2
Peter Recore

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

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

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

Ein Anwendungsserver läuft hinter einem Webserver (z. B. Apache oder Microsoft Internet Information Services (IIS)) und (fast immer) vor einer SQL-Datenbank (z. B. PostgreSQL, MySQL oder Orakel).

Bei Webanwendungen handelt es sich um Computercode, der auf Anwendungsservern ausgeführt wird und in der Sprache (n) geschrieben ist, die der Anwendungsserver unterstützt, und die Laufzeitbibliotheken und -komponenten als bezeichnet. Anwendungsserver bietet .

Grundlegendes Verständnis:

In der Client-Server-Architektur

Server:> Welcher bedient die Anfragen.

Client:> Welcher Service verbraucht.

Webserver und Anwendungsserver sind beide Softwareanwendungen, die als Server für ihre Clients fungieren.

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.

ZB: Alle Flat-Server sind im Allgemeinen gebrauchsfertig 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.

ZB: Google Maps-Server, Google Search-Server, Google Docs-Server, Microsoft 365-Server, Microsoft Computer Vision-Server für AI.

Wir können sie als Ebenen/Hierarchien in einer 4-Ebenen/n-Ebenen-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-n-p/ee658120 (v% 3dpandp.10)

2
chandra rv

Es kann zwar zu Überschneidungen kommen (einige Webserver können sogar als Anwendungsserver verwendet werden), der größte Unterschied besteht jedoch 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 in einen externen dauerhaften Speicher (SQL Server, Memcached usw.) serialisiert wird.

In Application Server ist die Sitzung in der Regel expliziter und besteht häufig aus einem Objekt, das während der gesamten Dauer der "Sitzung" im Speicher des Application Servers gespeichert bleibt.

1
zvolkov

Das hängt von der spezifischen Architektur ab. Einige Anwendungsserver verwenden möglicherweise von Haus aus Webprotokolle (XML/RPC/SOAP über HTTP), sodass es nur geringe technische Unterschiede gibt. In der Regel ist ein Webserver benutzerbezogen und stellt eine Vielzahl von Inhalten über HTTP/HTTPS bereit, während ein Anwendungsserver nicht benutzerbezogen ist und möglicherweise nicht standardmäßige oder nicht routingfähige Protokolle verwendet. Natürlich könnte mit RIA/AJAX der Unterschied noch weiter verschärft werden, indem nur Nicht-HTML-Inhalte (JSON/XML) für Kunden bereitgestellt werden, die bestimmte RAS-Dienste nutzen.

0
Cade Roux

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

Aus rein technischer Sicht können Sie alles (Webinhalte + Geschäftslogik) auf einem einzigen Webserver ausführen. Wenn Sie dies tun, werden die Informationen in den 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 aufteilen würden, könnten Sie verschiedene Webserver bereitstellen, die dieselben Daten auf dem App-Server über Skripte nachschlagen. Wenn Sie die Logik jedoch nicht trennen und im Webserver belassen würden, würden Sie sie bei jeder Änderung Ihres Geschäftsmodells auf jedem einzelnen Webserver ändern, was mehr Zeit in Anspruch nehmen würde, weniger zuverlässig wäre und fehleranfällig.

0
stdout