Appserver, webbserver: Vad är skillnaden?

23 augusti 2002

F: Vad är skillnaden mellan en applikationsserver och en webbserver?

A:

En webbserver hanterar exklusivt HTTP-förfrågningar, medan en applikationsserver serverar affärslogik till applikationsprogram genom valfritt antal protokoll.

Låt oss undersöka var och en mer detaljerat.

Webbservern

En webbserver hanterar HTTP-protokollet. När webbservern tar emot en HTTP-begäran, svarar den med ett HTTP-svar, som att skicka tillbaka en HTML-sida. För att behandla en begäran kan en webbserver svara med en statisk HTML-sida eller bild, skicka en omdirigering eller delegera dynamisk svarsgenerering till något annat program, till exempel CGI-skript, JSP (JavaServer Pages), servlets, ASP (Active Server Pages) ), JavaScripts på serversidan eller någon annan teknik på serversidan. Oavsett syfte genererar sådana serversidesprogram ett svar, oftast i HTML, för visning i en webbläsare.

Förstå att en webbservers delegeringsmodell är ganska enkel. När en begäran kommer in på webbservern skickar webbservern helt enkelt begäran till det program som är bäst för att hantera den. Webbservern tillhandahåller ingen funktionalitet utöver att bara tillhandahålla en miljö där serversidan kan utföra och skicka tillbaka de genererade svaren. Programmet på serversidan tillhandahåller vanligtvis funktioner som transaktionsbehandling, databasanslutning och meddelanden.

Även om en webbserver kanske inte i sig stöder transaktioner eller poolning av databasanslutningar, kan den använda olika strategier för feltolerans och skalbarhet, t.ex. belastningsbalansering, cachning och klustring - funktioner som ofta felaktigt tilldelats som funktioner endast reserverade för applikationsservrar.

Applikationsservern

När det gäller applikationsservern, enligt vår definition, exponerar en applikationsserver affärslogik för klientapplikationer genom olika protokoll, eventuellt inklusive HTTP. Medan en webbserver huvudsakligen handlar om att skicka HTML för visning i en webbläsare, ger en applikationsserver tillgång till affärslogik för användning av klientapplikationsprogram. Applikationsprogrammet kan använda denna logik precis som det skulle kalla en metod för ett objekt (eller en funktion i den processuella världen).

Sådana applikationsserverklienter kan inkludera GUI (grafiskt användargränssnitt) som körs på en PC, en webbserver eller till och med andra applikationsservrar. Informationen som går fram och tillbaka mellan en applikationsserver och dess klient är inte begränsad till enkel visning av markering. Istället är informationen programlogik. Eftersom logiken har formen av data- och metodanrop och inte statisk HTML kan klienten använda den exponerade affärslogiken hur den vill.

I de flesta fall exponerar servern denna affärslogik genom ett komponent-API, till exempel komponentmodellen EJB (Enterprise JavaBean) som finns på applikationsservrarna J2EE (Java 2 Platform, Enterprise Edition). Dessutom hanterar applikationsservern sina egna resurser. Sådana uppgifter om grindhållning inkluderar säkerhet, transaktionsbehandling, resurssammanlagning och meddelanden. Liksom en webbserver kan en applikationsserver också använda olika skalbarhet och feletoleransstekniker.

Ett exempel

Tänk som exempel på en webbutik som tillhandahåller information om priser och tillgänglighet i realtid. Troligtvis kommer webbplatsen att tillhandahålla ett formulär som du kan välja en produkt med. När du skickar in din fråga utför webbplatsen en uppslagning och returnerar resultaten inbäddade i en HTML-sida. Webbplatsen kan implementera denna funktion på flera sätt. Jag visar ett scenario som inte använder en applikationsserver och ett annat som gör det. Att se hur dessa scenarier skiljer sig åt hjälper dig att se applikationsservers funktion.

Scenario 1: Webbserver utan applikationsserver

I det första scenariot tillhandahåller en webbserver enbart webbutikens funktionalitet. Webbservern tar din begäran och skickar den sedan till ett server-sida-program som kan hantera begäran. Programmet på serversidan letar upp prisinformationen från en databas eller en platt fil. När programmet har hämtats använder serversidan informationen för att formulera HTML-svaret och sedan skickar webbservern tillbaka till din webbläsare.

Sammanfattningsvis behandlar en webbserver helt enkelt HTTP-förfrågningar genom att svara med HTML-sidor.

Scenario 2: Webbserver med en applikationsserver

Scenario 2 liknar Scenario 1 genom att webbservern fortfarande delegerar svarsgenerering till ett skript. Du kan dock nu lägga affärslogiken för prissökning på en applikationsserver. Med den förändringen, istället för att skriptet vet hur man letar upp data och formulerar ett svar, kan skriptet helt enkelt ringa applikationsserverns uppslagstjänst. Skriptet kan sedan använda tjänstens resultat när skriptet genererar sitt HTML-svar.

I det här scenariot serverar applikationsservern affärslogiken för att leta upp en produkts prisinformation. Den funktionaliteten säger ingenting om visning eller hur klienten måste använda informationen. Istället skickar klienten och applikationsservern data fram och tillbaka. När en klient ringer applikationsserverens uppslagstjänst, letar tjänsten upp informationen och returnerar den till klienten.

Genom att separera prissättningslogiken från HTML-svarsgenererande koden blir prissättningslogiken mycket mer återanvändbar mellan applikationer. En andra kund, till exempel ett kassaregister, kan också ringa samma tjänst som en kontorist checkar ut en kund. Däremot är prissökningstjänsten i Scenario 1 inte återanvändbar eftersom informationen är inbäddad i HTML-sidan. För att sammanfatta, i Scenario 2: s modell, hanterar webbservern HTTP-förfrågningar genom att svara med en HTML-sida medan applikationsservern serverar applikationslogik genom att bearbeta pris- och tillgänglighetsförfrågningar.

Förbehåll

Nyligen har XML-webbtjänster suddat ut gränsen mellan applikationsservrar och webbservrar. Genom att skicka en XML-nyttolast till en webbserver kan webbservern nu bearbeta data och svara mycket som applikationsservrar har gjort tidigare.

Dessutom innehåller de flesta applikationsservrar också en webbserver, vilket innebär att du kan betrakta en webbserver som en delmängd av en applikationsserver. Medan applikationsservrar innehåller webbserverfunktioner distribuerar utvecklare sällan applikationsservrar i den egenskapen. Istället, vid behov, distribuerar de ofta fristående webbservrar tillsammans med applikationsservrar. En sådan separering av funktionalitet hjälper till med prestanda (enkla webbförfrågningar påverkar inte applikationsservers prestanda), distributionskonfiguration (dedikerade webbservrar, klustring och så vidare) och möjliggör bästa produktval.

Tony Sintes är en oberoende konsult och grundare av First Class Consulting, ett konsultföretag som specialiserat sig på att överbrygga olika företagssystem och utbildning. Utanför First Class Consulting är Tony en aktiv frilansskribent samt författare till Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Läs mer om detta ämne

  • För fler artiklar om applikationsservrar, bläddra i avsnittet Java Application Servers i JavaWorlds aktuella index

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

  • Vill ha mer? Se Java Q & A- indexsidan för en fullständig Q & A-katalog

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

  • I mer än 100 insikts Java tips från några av de bästa hjärnorna i branschen, besök Javaworld: s Java Tips indexsida

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

  • Lär dig mer om applikationsskärare och webbservrar i vår Enterprise Java- diskussion

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

  • Registrera dig för JavaWorlds gratis e-postbrev från Enterprise Java per vecka

    //www.javaworld.com/subscribe

  • Du hittar en mängd IT-relaterade artiklar från våra systerpublikationer på .net

Denna berättelse, "Appserver, webbserver: Vad är skillnaden?" publicerades ursprungligen av JavaWorld.