Programmering

App-server, webserver: Hva er forskjellen?

23. august 2002

Spørsmål: Hva er forskjellen mellom en applikasjonsserver og en webserver?

EN:

En webserver håndterer utelukkende HTTP-forespørsler, mens en applikasjonsserver serverer forretningslogikk til applikasjonsprogrammer gjennom et hvilket som helst antall protokoller.

La oss undersøke hver av dem mer detaljert.

Web-serveren

En webserver håndterer HTTP-protokollen. Når webserveren mottar en HTTP-forespørsel, svarer den med et HTTP-svar, for eksempel å sende tilbake en HTML-side. For å behandle en forespørsel kan en webserver svare med en statisk HTML-side eller et bilde, sende en viderekobling eller delegere dynamisk responsgenerering til et annet program, for eksempel CGI-skript, JSPer (JavaServer Pages), servlets, ASPer (Active Server Pages) ), JavaScripts på serversiden eller annen teknologi på serversiden. Uansett hva formålet deres er med, genererer slike server-side-programmer et svar, ofte i HTML, for visning i en nettleser.

Forstå at en webserveres delegasjonsmodell er ganske enkel. Når en forespørsel kommer inn på webserveren, overfører webserveren forespørselen til programmet som er best i stand til å håndtere det. Webserveren gir ikke noen funksjonalitet utover bare å gi et miljø der server-side-programmet kan utføre og sende de genererte svarene tilbake. Programmet på serversiden sørger vanligvis for funksjoner som transaksjonsbehandling, databasetilkobling og meldinger.

Selv om en webserver ikke selv støtter transaksjoner eller pooling av databaseforbindelser, kan den benytte ulike strategier for feiltoleranse og skalerbarhet, for eksempel belastningsbalansering, caching og klynging - funksjoner som ofte blir feilaktig tildelt som funksjoner som er reservert bare for applikasjonsservere.

Applikasjonsserveren

Når det gjelder applikasjonsserveren, i henhold til vår definisjon, utsetter en applikasjonsserver forretningslogikk for klientapplikasjoner gjennom forskjellige protokoller, muligens inkludert HTTP. Mens en webserver hovedsakelig arbeider med sending av HTML for visning i en nettleser, gir en applikasjonsserver tilgang til forretningslogikk for bruk av klientapplikasjonsprogrammer. Applikasjonsprogrammet kan bruke denne logikken akkurat som den vil kalle en metode for et objekt (eller en funksjon i prosessverdenen).

Slike applikasjonsserverklienter kan inkludere GUI (grafisk brukergrensesnitt) som kjører på en PC, en webserver eller til og med andre applikasjonsservere. Informasjonen som reiser frem og tilbake mellom en applikasjonsserver og klienten er ikke begrenset til enkel visning av markering. I stedet er informasjonen programlogikk. Siden logikken har form av data- og metodeanrop, og ikke statisk HTML, kan klienten benytte den eksponerte forretningslogikken uansett hvordan den vil.

I de fleste tilfeller eksponerer serveren denne forretningslogikken gjennom et komponent-API, for eksempel EJB (Enterprise JavaBean) komponentmodellen som finnes på J2EE (Java 2 Platform, Enterprise Edition) applikasjonsservere. Videre administrerer applikasjonsserveren sine egne ressurser. Slike gate-oppgaver inkluderer sikkerhet, transaksjonsbehandling, ressurssamling og meldinger. Som en webserver kan en applikasjonsserver også bruke forskjellige skalerbarhet og feiltoleranse teknikker.

Et eksempel

Tenk som eksempel på en nettbutikk som gir informasjon om priser og tilgjengelighet i sanntid. Mest sannsynlig vil nettstedet gi et skjema som du kan velge et produkt med. Når du sender inn spørringen, utfører nettstedet et oppslag og returnerer resultatene innebygd i en HTML-side. Nettstedet kan implementere denne funksjonaliteten på flere måter. Jeg viser deg ett scenario som ikke bruker en applikasjonsserver, og et annet som gjør det. Å se hvordan disse scenariene er forskjellige, vil hjelpe deg å se applikasjonsserverens funksjon.

Scenario 1: Webserver uten applikasjonsserver

I det første scenariet gir en webserver alene nettbutikkens funksjonalitet. Webserveren tar forespørselen din, og sender den til et server-side-program som kan håndtere forespørselen. Programmet på serveren ser opp prisinformasjonen fra en database eller en flat fil. Når programmet er hentet, bruker serversiden informasjonen til å formulere HTML-responsen, og deretter sender webserveren den tilbake til nettleseren din.

For å oppsummere behandler en webserver ganske enkelt HTTP-forespørsler ved å svare med HTML-sider.

Scenario 2: Webserver med en applikasjonsserver

Scenario 2 ligner på scenario 1 ved at webserveren fremdeles delegerer responsgenerering til et skript. Du kan imidlertid nå legge virksomhetslogikken for prisoppslaget til en applikasjonsserver. Med den endringen, i stedet for at skriptet vet hvordan man skal slå opp dataene og formulere et svar, kan skriptet bare ringe applikasjonsserverens oppslagstjeneste. Skriptet kan deretter bruke tjenestens resultat når skriptet genererer HTML-svaret.

I dette scenariet betjener applikasjonsserveren forretningslogikken for å slå opp prisinformasjonen til et produkt. Denne funksjonaliteten sier ikke noe om visning eller hvordan klienten må bruke informasjonen. I stedet sender klienten og applikasjonsserveren data frem og tilbake. Når en klient ringer applikasjonsserverens oppslagstjeneste, ser tjenesten ganske enkelt opp informasjonen og returnerer den til klienten.

Ved å skille prislogikken fra den HTML-responsgenererende koden, blir prislogikken langt mer gjenbrukbar mellom applikasjoner. En annen klient, for eksempel et kassaapparat, kan også ringe den samme tjenesten som en ekspeditør sjekker ut en kunde. I scenario 1 er det imidlertid ikke mulig å gjenopprette tjenesten for prisoppslag fordi informasjonen er innebygd i HTML-siden. For å oppsummere, i Scenario 2s modell, håndterer webserveren HTTP-forespørsler ved å svare med en HTML-side mens applikasjonsserveren serverer applikasjonslogikk ved å behandle pris- og tilgjengelighetsforespørsler.

Advarsler

Nylig har XML-webtjenester uskarpt linjen mellom applikasjonsservere og webservere. Ved å overføre en XML-nyttelast til en webserver, kan webserveren nå behandle dataene og svare mye som applikasjonsservere tidligere har gjort.

I tillegg inneholder de fleste applikasjonsservere også en webserver, noe som betyr at du kan betrakte en webserver som et delsett av en applikasjonsserver. Mens applikasjonsservere inneholder webserverfunksjonalitet, distribuerer utviklere sjelden applikasjonsservere i den kapasiteten. I stedet, når det er nødvendig, distribuerer de ofte frittstående webservere sammen med applikasjonsservere. En slik separasjon av funksjonalitet hjelper ytelse (enkle nettforespørsler vil ikke påvirke applikasjonsserverytelsen), distribusjonskonfigurasjon (dedikerte webservere, klynging og så videre), og tillater best utvalg av produkter.

Tony Sintes er en uavhengig konsulent og grunnlegger av First Class Consulting, et konsulentselskap som spesialiserer seg på å bygge bro over ulike virksomhetssystemer og opplæring. Utenom førsteklasses rådgivning er Tony en aktiv frilansskribent, samt forfatter av Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Lær mer om dette emnet

  • For flere artikler om applikasjonsservere, bla gjennom Java-applikasjonsservere seksjon av JavaWorld 's Aktuell indeks

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

  • Ønsker mer? Se Java Q&A indeksside for den fullstendige spørsmål og svar-katalogen

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

  • For mer enn 100 innsiktsfulle Java-tips fra noen av de beste hodene i virksomheten, besøk JavaWorld 's Java-tips indeksside

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

  • Lær mer om applikasjonssparere og webservere i vår Enterprise Java diskusjon

    //forums.idg.net/webx?50@@.ee6b80a

  • Melde seg på JavaWorlder gratis ukentlig Enterprise Java e-post nyhetsbrev

    //www.javaworld.com/subscribe

  • Du finner et vell av IT-relaterte artikler fra søsterpublikasjonene våre på .net

Denne historien, "App-server, webserver: Hva er forskjellen?" ble opprinnelig utgitt av JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found