App-server, webserver: wat is het verschil?

23 augustus 2002

V: Wat is het verschil tussen een applicatieserver en een webserver?

EEN:

Een webserver behandelt uitsluitend HTTP-verzoeken, terwijl een applicatieserver bedrijfslogica aan applicatieprogramma's levert via een willekeurig aantal protocollen.

Laten we ze allemaal in meer detail bekijken.

De webserver

Een webserver verwerkt het HTTP-protocol. Wanneer de webserver een HTTP-verzoek ontvangt, reageert deze met een HTTP-antwoord, zoals het terugsturen van een HTML-pagina. Om een ​​verzoek te verwerken, kan een webserver reageren met een statische HTML-pagina of afbeelding, een omleiding verzenden of het genereren van dynamische respons delegeren aan een ander programma, zoals CGI-scripts, JSP's (JavaServer Pages), servlets, ASP's (Active Server Pages). ), server-side JavaScripts, of een andere server-side technologie. Wat hun doel ook is, dergelijke server-side programma's genereren een respons, meestal in HTML, om in een webbrowser te bekijken.

Begrijp dat het delegatiemodel van een webserver vrij eenvoudig is. Wanneer een verzoek op de webserver binnenkomt, stuurt de webserver het verzoek gewoon door naar het programma dat het het beste kan afhandelen. De webserver biedt geen andere functionaliteit dan het simpelweg bieden van een omgeving waarin het server-side programma de gegenereerde reacties kan uitvoeren en teruggeven. Het server-side programma voorziet gewoonlijk in functies als transactieverwerking, databaseconnectiviteit en messaging.

Hoewel een webserver zelf geen transacties of pooling van databaseverbindingen ondersteunt, kan deze verschillende strategieën gebruiken voor fouttolerantie en schaalbaarheid, zoals taakverdeling, caching en clustering - functies die vaak ten onrechte worden toegewezen als functies die alleen voor applicatieservers zijn gereserveerd.

De applicatieserver

Wat betreft de applicatieserver, volgens onze definitie stelt een applicatieserver bedrijfslogica bloot aan clientapplicaties via verschillende protocollen, mogelijk inclusief HTTP. Terwijl een webserver zich voornamelijk bezighoudt met het verzenden van HTML voor weergave in een webbrowser, biedt een applicatieserver toegang tot bedrijfslogica voor gebruik door clienttoepassingsprogramma's. Het toepassingsprogramma kan deze logica gebruiken op dezelfde manier als het een methode op een object (of een functie in de procedurele wereld) zou aanroepen.

Dergelijke applicatieserverclients kunnen GUI's (grafische gebruikersinterface) bevatten die op een pc, een webserver of zelfs andere applicatieservers worden uitgevoerd. De informatie die heen en weer reist tussen een applicatieserver en zijn cliënt is niet beperkt tot eenvoudige display-markup. In plaats daarvan is de informatie programmalogica. Aangezien de logica de vorm aanneemt van data- en methodeaanroepen en niet van statische HTML, kan de klant de blootgestelde bedrijfslogica gebruiken zoals hij wil.

In de meeste gevallen legt de server deze bedrijfslogica bloot via een component-API, zoals het EJB-componentmodel (Enterprise JavaBean) dat te vinden is op J2EE-applicatieservers (Java 2 Platform, Enterprise Edition). Bovendien beheert de applicatieserver zijn eigen bronnen. Dergelijke poortbewakingstaken omvatten beveiliging, transactieverwerking, pooling van bronnen en berichtenuitwisseling. Net als een webserver kan een applicatieserver ook verschillende schaalbaarheids- en fouttolerantietechnieken gebruiken.

Een voorbeeld

Beschouw als voorbeeld een online winkel die realtime informatie over prijzen en beschikbaarheid biedt. Hoogstwaarschijnlijk zal de site een formulier bieden waarmee u een product kunt kiezen. Wanneer u uw zoekopdracht indient, voert de site een zoekopdracht uit en retourneert de resultaten die zijn ingesloten in een HTML-pagina. De site kan deze functionaliteit op verschillende manieren implementeren. Ik zal je een scenario laten zien dat geen applicatieserver gebruikt en een ander dat dat wel doet. Als u ziet hoe deze scenario's verschillen, kunt u de functie van de applicatieserver zien.

Scenario 1: webserver zonder een applicatieserver

In het eerste scenario biedt alleen een webserver de functionaliteit van de online winkel. De webserver neemt uw verzoek en geeft het vervolgens door aan een programma op de server dat het verzoek kan afhandelen. Het server-side programma zoekt de prijsinformatie op uit een database of een plat bestand. Eenmaal opgehaald, gebruikt het server-side programma de informatie om het HTML-antwoord te formuleren, waarna de webserver het terugstuurt naar uw webbrowser.

Samenvattend verwerkt een webserver HTTP-verzoeken door te reageren met HTML-pagina's.

Scenario 2: webserver met een applicatieserver

Scenario 2 lijkt op scenario 1 in die zin dat de webserver het genereren van antwoorden nog steeds aan een script delegeert. U kunt nu echter de bedrijfslogica voor het opzoeken van prijzen op een applicatieserver plaatsen. Met die wijziging, in plaats van dat het script weet hoe het de gegevens moet opzoeken en een antwoord moet formuleren, kan het script gewoon de opzoekservice van de applicatieserver aanroepen. Het script kan vervolgens het resultaat van de service gebruiken wanneer het script zijn HTML-antwoord genereert.

In dit scenario dient de applicatieserver de bedrijfslogica voor het opzoeken van de prijsinformatie van een product. Die functionaliteit zegt niets over weergave of hoe de klant de informatie moet gebruiken. In plaats daarvan sturen de client en applicatieserver gegevens heen en weer. Wanneer een client de opzoekservice van de applicatieserver aanroept, zoekt de service eenvoudig de informatie op en stuurt deze terug naar de client.

Door de prijslogica te scheiden van de HTML-responsgenererende code, wordt de prijslogica veel meer herbruikbaar tussen applicaties. Een tweede klant, zoals een kassa, zou ook dezelfde dienst kunnen bellen als een bediende een klant afrekent. In scenario 1 daarentegen is de service voor het opzoeken van prijzen niet herbruikbaar omdat de informatie is ingesloten in de HTML-pagina. Samenvattend: in het model van scenario 2 verwerkt de webserver HTTP-verzoeken door te antwoorden met een HTML-pagina, terwijl de applicatieserver de applicatielogica bedient door prijs- en beschikbaarheidsverzoeken te verwerken.

Waarschuwingen

Onlangs hebben XML-webservices de grens tussen applicatieservers en webservers vervaagd. Door een XML-payload door te geven aan een webserver, kan de webserver nu de gegevens verwerken en reageren zoals applicatieservers dat in het verleden hebben gedaan.

Bovendien bevatten de meeste applicatieservers ook een webserver, wat betekent dat u een webserver kunt beschouwen als een subset van een applicatieserver. Hoewel applicatieservers webserverfunctionaliteit bevatten, zetten ontwikkelaars zelden applicatieservers in die hoedanigheid in. In plaats daarvan implementeren ze, indien nodig, vaak standalone webservers in combinatie met applicatieservers. Een dergelijke scheiding van functionaliteit bevordert de prestaties (eenvoudige webverzoeken hebben geen invloed op de prestaties van de applicatieserver), implementatieconfiguratie (speciale webservers, clustering, enzovoort), en maakt de beste productselectie mogelijk.

Tony Sintes is een onafhankelijke consultant en oprichter van First Class Consulting, een adviesbureau dat gespecialiseerd is in het overbruggen van ongelijksoortige bedrijfssystemen en opleidingen. Naast First Class Consulting is Tony een actieve freelanceschrijver en tevens auteur van Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Lees meer over dit onderwerp

  • Voor meer artikelen over applicatieservers, bladert u door de sectie Java-applicatieservers van de Topical Index van JavaWorld

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

  • Meer willen? Zie de Java Q & A- indexpagina voor de volledige Q & A-catalogus

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

  • Al meer dan 100 inzichtelijke Java tips van enkele van de knapste koppen in de business, bezoek JavaWorld' s Java Tips indexpagina

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

  • Lees meer over toepassingsservers en webservers in onze Enterprise Java- discussie

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

  • Meld u aan voor JavaWorld 's gratis wekelijkse Enterprise Java e-mailnieuwsbrief

    //www.javaworld.com/subscribe

  • U vindt een schat aan IT-gerelateerde artikelen uit onze zusterpublicaties op .net

Dit verhaal, "App-server, webserver: wat is het verschil?" is oorspronkelijk gepubliceerd door JavaWorld.