Ohjelmointi

Sovelluspalvelin, verkkopalvelin: Mikä on ero?

23. elokuuta 2002

K: Mitä eroa on sovelluspalvelimella ja verkkopalvelimella?

A:

Verkkopalvelin käsittelee yksinomaan HTTP-pyyntöjä, kun taas sovelluspalvelin palvelee yrityslogiikkaa sovellusohjelmille minkä tahansa määrän protokollia.

Tarkastellaan kutakin tarkemmin.

Web-palvelin

Web-palvelin hoitaa HTTP-protokollan. Kun verkkopalvelin vastaanottaa HTTP-pyynnön, se vastaa HTTP-vastauksella, kuten lähettämällä takaisin HTML-sivun. Pyynnön käsittelemiseksi Web-palvelin voi vastata staattisella HTML-sivulla tai kuvalla, lähettää uudelleenohjauksen tai delegoida dynaamisen vastauksen generoinnin jollekin muulle ohjelmalle, kuten CGI-skripteille, JSP: lle (JavaServer Pages), servletille, ASP: lle (Active Server Pages) ), palvelinpuolen JavaScripts tai jokin muu palvelinpuolen tekniikka. Tarkoituksestaan ​​riippumatta tällaiset palvelinpuolen ohjelmat tuottavat vastauksen, useimmiten HTML-muodossa, katsottavaksi verkkoselaimessa.

Ymmärrä, että verkkopalvelimen delegointimalli on melko yksinkertainen. Kun pyyntö tulee Web-palvelimeen, Web-palvelin yksinkertaisesti välittää pyynnön ohjelmalle, joka pystyy parhaiten käsittelemään sitä. Verkkopalvelin ei tarjoa mitään toimintoja sen lisäksi, että tarjotaan vain ympäristö, jossa palvelinpuolen ohjelma voi suorittaa ja välittää luodut vastaukset. Palvelinpuolen ohjelma tarjoaa yleensä itselleen sellaiset toiminnot kuin tapahtumien käsittely, tietokantayhteydet ja viestit.

Vaikka Web-palvelin ei välttämättä tue tapahtumia tai tietokantayhteyksien yhdistämistä, se voi käyttää erilaisia ​​vikasietoisuuden ja skaalautuvuuden strategioita, kuten kuormituksen tasapainottamista, välimuistiin tallentamista ja klusterointia - usein virheellisesti vain sovelluspalvelimille varattuina ominaisuuksina olevia ominaisuuksia.

Sovelluspalvelin

Sovelluspalvelimen osalta määritelmän mukaan sovelluspalvelin paljastaa liiketoimintalogiikan asiakassovelluksille erilaisten protokollien, mahdollisesti myös HTTP: n, kautta. Vaikka Web-palvelin käsittelee pääasiassa HTML: n lähettämistä Web-selaimessa näyttämistä varten, sovelluspalvelin tarjoaa pääsyn liiketoimintalogiikkaan asiakassovellusohjelmien käyttöön. Sovellusohjelma voi käyttää tätä logiikkaa samalla tavalla kuin se kutsuisi objektille menetelmää (tai toimintoa toimintamaailmassa).

Tällaiset sovelluspalvelinasiakkaat voivat sisältää graafisia käyttöliittymiä (graafisia käyttöliittymiä), jotka toimivat PC: llä, Web-palvelimella tai jopa muilla sovelluspalvelimilla. Sovelluspalvelimen ja sen asiakkaan välillä edestakaisin kulkevat tiedot eivät rajoitu yksinkertaiseen näytön merkintään. Sen sijaan tiedot ovat ohjelmalogiikkaa. Koska logiikka on data- ja metodikutsut eikä staattinen HTML, asiakas voi käyttää paljastettua liiketoimintalogiikkaa haluamallaan tavalla.

Useimmissa tapauksissa palvelin paljastaa tämän liiketoimintalogiikan komponenttisovellusliittymän kautta, kuten J2EE (Java 2 Platform, Enterprise Edition) -sovelluspalvelimista löytyvän EJB (Enterprise JavaBean) -komponenttimallin. Lisäksi sovelluspalvelin hallinnoi omia resurssejaan. Tällaisia ​​portinpitotehtäviä ovat turvallisuus, tapahtumien käsittely, resurssien yhdistäminen ja viestit. Kuten Web-palvelin, sovelluspalvelin voi myös käyttää erilaisia ​​skaalautuvuus- ja vikasietotekniikoita.

Esimerkki

Tarkastellaan esimerkiksi verkkokauppaa, joka tarjoaa reaaliaikaisia ​​hinta- ja saatavuustietoja. Todennäköisesti sivusto tarjoaa lomakkeen, jolla voit valita tuotteen. Kun lähetät kyselyn, sivusto hakee ja palauttaa HTML-sivulle upotetut tulokset. Sivusto voi toteuttaa tämän toiminnon monin tavoin. Näytän sinulle yhden skenaarion, joka ei käytä sovelluspalvelinta, ja toisen, joka käyttää. Näet, kuinka nämä skenaariot eroavat toisistaan, jotta näet sovelluspalvelimen toiminnot.

Skenaario 1: Verkkopalvelin ilman sovelluspalvelinta

Ensimmäisessä tilanteessa vain verkkopalvelin tarjoaa verkkokaupan toiminnot. Verkkopalvelin vie pyyntösi ja välittää sen sitten palvelinpuolen ohjelmalle, joka pystyy käsittelemään pyynnön. Palvelinpuolen ohjelma etsii hintatiedot tietokannasta tai tasaisesta tiedostosta. Kun palvelinpuoliohjelma on haettu, se muotoilee HTML-vastauksen tietojen avulla ja sitten Web-palvelin lähettää ne takaisin Web-selaimeesi.

Yhteenvetona voidaan todeta, että Web-palvelin yksinkertaisesti käsittelee HTTP-pyynnöt vastaamalla HTML-sivuilla.

Skenaario 2: Verkkopalvelin ja sovelluspalvelin

Skenaario 2 muistuttaa skenaariota 1 siinä mielessä, että Web-palvelin edelleen delegoi vastausten luomisen komentosarjaan. Voit kuitenkin nyt laittaa hinnoittelun yrityslogiikan sovelluspalvelimeen. Tämän muutoksen sijaan sen sijaan, että komentosarja osaisi etsiä tietoja ja muotoilla vastauksen, komentosarja voi yksinkertaisesti soittaa sovelluspalvelimen hakupalveluun. Komentosarja voi käyttää palvelun tulosta, kun komentosarja luo HTML-vastauksensa.

Tässä skenaariossa sovelluspalvelin palvelee liiketoimintalogiikkaa tuotteen hintatietojen etsimiseen. Tämä toiminto ei kerro mitään näytöstä tai siitä, miten asiakkaan on käytettävä tietoja. Sen sijaan asiakas ja sovelluspalvelin lähettävät tietoja edestakaisin. Kun asiakas soittaa sovelluspalvelimen hakupalveluun, palvelu yksinkertaisesti etsii tiedot ja palauttaa ne asiakkaalle.

Erottamalla hinnoittelulogiikka HTML-vastausta tuottavasta koodista, hinnoittelulogiikka muuttuu huomattavasti uudelleenkäytettäväksi sovellusten välillä. Toinen asiakas, kuten kassakone, voi myös soittaa samaan palveluun kuin virkailija tarkistaa asiakkaan. Sitä vastoin skenaariossa 1 hinnoittelupalvelua ei voida käyttää uudelleen, koska tiedot on upotettu HTML-sivulle. Yhteenvetona voidaan todeta, että skenaario 2: n mallissa Web-palvelin käsittelee HTTP-pyyntöjä vastaamalla HTML-sivulla, kun taas sovelluspalvelin palvelee sovelluslogiikkaa käsittelemällä hinnoittelu- ja saatavuuspyynnöt.

Varoitukset

Viime aikoina XML-verkkopalvelut ovat hämärtäneet rajaa sovelluspalvelinten ja Web-palvelinten välillä. Lähettämällä XML-hyötykuorman Web-palvelimelle Web-palvelin voi nyt käsitellä tietoja ja vastata paljon kuin sovelluspalvelimet ovat aiemmin käyttäneet.

Lisäksi useimmat sovelluspalvelimet sisältävät myös Web-palvelimen, mikä tarkoittaa, että voit pitää Web-palvelinta sovelluspalvelimen osajoukkona. Vaikka sovelluspalvelimet sisältävät verkkopalvelintoiminnot, kehittäjät käyttävät harvoin sovelluspalvelimia siinä kapasiteetissa. Sen sijaan, tarvittaessa, he käyttävät usein erillisiä Web-palvelimia yhdessä sovelluspalvelimien kanssa. Tällainen toiminnallisuuden erottelu auttaa suorituskykyä (yksinkertaiset verkkopyynnöt eivät vaikuta sovelluspalvelimen suorituskykyyn), käyttöönoton määrityksiä (erilliset verkkopalvelimet, klustereita jne.) Ja mahdollistavat rodun parhaiden tuotteiden valinnan.

Tony Sintes on riippumaton konsultti ja perustaja First Class Consulting -yritykselle, joka on erikoistunut erilaisten yritysjärjestelmien ja koulutuksen yhdistämiseen. Ensiluokkaisen konsultoinnin ulkopuolella Tony on aktiivinen freelance-kirjailija, samoin kuin kirjan Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092) kirjoittaja.

Lisätietoja tästä aiheesta

  • Jos haluat lisää artikkeleita sovelluspalvelimista, selaa Java-sovelluspalvelimet osa JavaWorld 's Ajankohtainen hakemisto

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

  • Haluta lisää? Katso Java-kysymykset ja vastaukset hakemistosivu täydelliseen Q & A-luetteloon

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

  • Jos haluat saada yli 100 oivaltavaa Java-vinkkiä yrityksen parhailta mieliltä, ​​käy osoitteessa JavaWorld 's Java-vinkkejä hakemistosivu

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

  • Lisätietoja sovelluksista ja web-palvelimista on meidän Enterprise Java keskustelu

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

  • Ilmottautua JavaWorldon ilmainen viikoittain Enterprise Java sähköpostiuutiskirje

    //www.javaworld.com/subscribe

  • Löydät runsaasti tietotekniikkaan liittyviä artikkeleita sisarjulkaisuistamme .net

Tämä tarina "Sovelluspalvelin, Web-palvelin: Mikä ero on?" julkaisi alun perin JavaWorld.

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