App Server, Webserver: Was ist der Unterschied?

23. August 2002

F: Was ist der Unterschied zwischen einem Anwendungsserver und einem Webserver?

EIN:

Ein Webserver verarbeitet ausschließlich HTTP-Anforderungen, während ein Anwendungsserver Anwendungsprogrammen über eine beliebige Anzahl von Protokollen Geschäftslogik bereitstellt.

Lassen Sie uns jedes genauer untersuchen.

Der Webserver

Ein Webserver verarbeitet das HTTP-Protokoll. Wenn der Webserver eine HTTP-Anforderung empfängt, antwortet er mit einer HTTP-Antwort, z. B. dem Zurücksenden einer HTML-Seite. Um eine Anforderung zu verarbeiten, kann ein Webserver mit einer statischen HTML-Seite oder einem statischen HTML-Image antworten, eine Umleitung senden oder die Generierung der dynamischen Antwort an ein anderes Programm delegieren, z. B. CGI-Skripte, JSPs (JavaServer Pages), Servlets, ASPs (Active Server Pages) ), serverseitige JavaScripts oder eine andere serverseitige Technologie. Unabhängig von ihrem Zweck generieren solche serverseitigen Programme eine Antwort, meist in HTML, für die Anzeige in einem Webbrowser.

Verstehen Sie, dass das Delegierungsmodell eines Webservers ziemlich einfach ist. Wenn eine Anforderung auf dem Webserver eingeht, leitet der Webserver die Anforderung einfach an das Programm weiter, das sie am besten verarbeiten kann. Der Webserver bietet keine anderen Funktionen als die Bereitstellung einer Umgebung, in der das serverseitige Programm die generierten Antworten ausführen und zurückgeben kann. Das serverseitige Programm bietet normalerweise Funktionen wie Transaktionsverarbeitung, Datenbankkonnektivität und Messaging für sich.

Ein Webserver unterstützt möglicherweise selbst keine Transaktionen oder kein Datenbankverbindungspooling, verwendet jedoch möglicherweise verschiedene Strategien für Fehlertoleranz und Skalierbarkeit, z. B. Lastausgleich, Caching und Clustering. Diese Funktionen werden häufig fälschlicherweise als Funktionen zugewiesen, die nur für Anwendungsserver reserviert sind.

Der Anwendungsserver

Was den Anwendungsserver betrifft, so stellt ein Anwendungsserver gemäß unserer Definition Client-Anwendungen über verschiedene Protokolle, möglicherweise einschließlich HTTP, Geschäftslogik zur Verfügung. Während ein Webserver hauptsächlich HTML zum Anzeigen in einem Webbrowser sendet, bietet ein Anwendungsserver Zugriff auf Geschäftslogik zur Verwendung durch Clientanwendungsprogramme. Das Anwendungsprogramm kann diese Logik genauso verwenden, wie es eine Methode für ein Objekt (oder eine Funktion in der prozeduralen Welt) aufrufen würde.

Solche Anwendungsserver-Clients können GUIs (grafische Benutzeroberfläche) enthalten, die auf einem PC, einem Webserver oder sogar anderen Anwendungsservern ausgeführt werden. Die Informationen, die zwischen einem Anwendungsserver und seinem Client hin und her übertragen werden, sind nicht auf einfache Anzeige-Markups beschränkt. Stattdessen sind die Informationen Programmlogik. Da die Logik in Form von Daten- und Methodenaufrufen und nicht in Form von statischem HTML vorliegt, kann der Client die bereitgestellte Geschäftslogik nach Belieben verwenden.

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 J2EE-Anwendungsservern (Java 2 Platform, Enterprise Edition) zu finden ist. Darüber hinaus verwaltet der Anwendungsserver seine eigenen Ressourcen. Zu diesen Gate-Keeping-Aufgaben gehören Sicherheit, Transaktionsverarbeitung, Ressourcenpooling und Messaging. Wie ein Webserver kann auch ein Anwendungsserver verschiedene Skalierbarkeits- und Fehlertoleranztechniken verwenden.

Ein Beispiel

Stellen Sie sich als Beispiel einen Online-Shop vor, der Preis- und Verfügbarkeitsinformationen in Echtzeit bereitstellt. Höchstwahrscheinlich wird die Website ein Formular bereitstellen, mit dem Sie ein Produkt auswählen können. Wenn Sie Ihre Anfrage senden, führt die Site eine Suche durch und gibt die in eine HTML-Seite eingebetteten Ergebnisse zurück. Die Site kann diese Funktionalität auf zahlreiche Arten implementieren. Ich zeige Ihnen ein Szenario, in dem kein Anwendungsserver verwendet wird, und ein anderes, in dem dies der Fall ist. Wenn Sie sehen, wie sich diese Szenarien unterscheiden, können Sie die Funktion des Anwendungsservers besser erkennen.

Szenario 1: Webserver ohne Anwendungsserver

Im ersten Szenario stellt nur ein Webserver die Funktionalität des Online-Shops bereit. Der Webserver nimmt Ihre Anfrage entgegen und leitet sie an ein serverseitiges Programm weiter, das die Anfrage bearbeiten kann. Das serverseitige Programm sucht die Preisinformationen aus einer Datenbank oder einer Flatfile. Nach dem Abrufen verwendet das serverseitige Programm die Informationen, um die HTML-Antwort zu formulieren, und der Webserver sendet sie an Ihren Webbrowser zurück.

Zusammenfassend lässt sich sagen, dass ein Webserver einfach HTTP-Anforderungen verarbeitet, indem er mit HTML-Seiten antwortet.

Szenario 2: Webserver mit einem Anwendungsserver

Szenario 2 ähnelt Szenario 1 dahingehend, dass der Webserver die Antwortgenerierung weiterhin an ein Skript delegiert. Sie können jetzt jedoch die Geschäftslogik für die Preissuche auf einen Anwendungsserver übertragen. Mit dieser Änderung kann das Skript anstelle des Skripts, das die Daten nachschlagen und eine Antwort formulieren kann, einfach den Suchdienst des Anwendungsservers aufrufen. Das Skript kann dann das Ergebnis des Dienstes verwenden, wenn das Skript seine HTML-Antwort generiert.

In diesem Szenario dient der Anwendungsserver der Geschäftslogik zum Nachschlagen der Preisinformationen eines Produkts. Diese Funktionalität sagt nichts über die Anzeige aus oder darüber, wie der Client die Informationen verwenden muss. Stattdessen senden der Client und der Anwendungsserver Daten hin und her. Wenn ein Client den Suchdienst des Anwendungsservers aufruft, sucht der Dienst einfach nach den Informationen und gibt sie an den Client zurück.

Durch die Trennung der Preislogik vom Code zur Generierung von HTML-Antworten wird die Preislogik zwischen Anwendungen weitaus wiederverwendbarer. Ein zweiter Kunde, z. B. eine Registrierkasse, kann denselben Service auch anrufen, wenn ein Angestellter einen Kunden auscheckt. Im Gegensatz dazu kann in Szenario 1 der Preissuchdienst nicht wiederverwendet werden, da die Informationen in die HTML-Seite eingebettet sind. Zusammenfassend lässt sich sagen, dass der Webserver im Modell von Szenario 2 HTTP-Anforderungen verarbeitet, indem er mit einer HTML-Seite antwortet, während der Anwendungsserver die Anwendungslogik durch Verarbeitung von Preis- und Verfügbarkeitsanforderungen bedient.

Vorsichtsmaßnahmen

In letzter Zeit haben XML-Webdienste die Grenze zwischen Anwendungsservern und Webservern verwischt. Durch Übergeben einer XML-Nutzlast an einen Webserver kann der Webserver jetzt die Daten verarbeiten und ähnlich reagieren wie Anwendungsserver in der Vergangenheit.

Darüber hinaus enthalten die meisten Anwendungsserver auch einen Webserver. Dies bedeutet, dass Sie einen Webserver als Teilmenge eines Anwendungsservers betrachten können. Während Anwendungsserver Webserverfunktionen enthalten, stellen Entwickler Anwendungsserver selten in dieser Kapazität bereit. Stattdessen stellen sie bei Bedarf häufig eigenständige Webserver zusammen mit Anwendungsservern bereit. Eine solche Trennung der Funktionen unterstützt die Leistung (einfache Webanforderungen wirken sich nicht auf die Leistung des Anwendungsservers aus), die Bereitstellungskonfiguration (dedizierte Webserver, Clustering usw.) und ermöglicht die Auswahl der besten Produkte.

Tony Sintes ist ein unabhängiger Berater und Gründer von First Class Consulting, einem Beratungsunternehmen, das sich auf die Überbrückung unterschiedlicher Unternehmenssysteme und Schulungen spezialisiert hat. Außerhalb von First Class Consulting ist Tony ein aktiver freiberuflicher Autor und Autor von Sams Teach Yourself Object-Oriented Programming in 21 Tagen (Sams, 2001; ISBN: 0672321092).

Erfahren Sie mehr über dieses Thema

  • Weitere Artikel zu Anwendungsservern finden Sie im Abschnitt Java-Anwendungsserver im aktuellen Index von JavaWorld

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Mehr wollen? Auf der Java Q & A- Indexseite finden Sie den vollständigen Q & A-Katalog

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Seit mehr als 100 interessanten Java - Tipps von einigen der besten Köpfe im Geschäft, Besuch Javaworld‘ s Java Tipps Indexseite

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Weitere Informationen zu Anwendungssevern und Webservern finden Sie in unserer Diskussion zu Enterprise Java

    //forums.idg.net/[email protected]@.ee6b80a

  • Melden Sie sich für den kostenlosen wöchentlichen Enterprise Java- E-Mail-Newsletter von JavaWorld an

    //www.javaworld.com/subscribe

  • Unter .net finden Sie eine Fülle von IT-Artikeln aus unseren Schwesterpublikationen

Diese Geschichte, "App-Server, Webserver: Was ist der Unterschied?" wurde ursprünglich von JavaWorld veröffentlicht.