Programavimas

Programų serveris, žiniatinklio serveris: koks skirtumas?

2002 m. Rugpjūčio 23 d

Klausimas: Kuo skiriasi programų serveris ir žiniatinklio serveris?

A:

Žiniatinklio serveris išimtinai tvarko HTTP užklausas, o programų serveris teikia verslo logiką taikomosioms programoms naudodamas bet kokį protokolų skaičių.

Panagrinėkime kiekvieną iš jų išsamiau.

Žiniatinklio serveris

Žiniatinklio serveris tvarko HTTP protokolą. Kai žiniatinklio serveris gauna HTTP užklausą, jis atsako pateikdamas HTTP atsakymą, pavyzdžiui, siunčia HTML puslapį atgal. Norėdami apdoroti užklausą, žiniatinklio serveris gali atsakyti su statiniu HTML puslapiu ar vaizdu, siųsti peradresavimą arba perduoti dinaminio atsakymo generavimą kitai programai, pvz., CGI scenarijams, JSP (JavaServer Pages), servletams, ASP (Active Server Pages). ), serverio „JavaScripts“ ar kokia nors kita serverio technologija. Kad ir koks būtų jų tikslas, tokios serverio programos sukuria atsakymą, dažniausiai HTML formatu, kad būtų galima peržiūrėti žiniatinklio naršyklėje.

Supraskite, kad žiniatinklio serverio delegavimo modelis yra gana paprastas. Kai užklausa patenka į žiniatinklio serverį, žiniatinklio serveris paprasčiausiai perduoda užklausą programai, geriausiai ją valdančiai. Žiniatinklio serveris nesuteikia jokių funkcijų, išskyrus tai, kad sukuria aplinką, kurioje serverio programa gali vykdyti ir perduoti sugeneruotus atsakymus. Serverio pusės programa paprastai suteikia tokias funkcijas kaip operacijų apdorojimas, ryšys su duomenų bazėmis ir pranešimai.

Nors pats žiniatinklio serveris gali nepalaikyti operacijų ar duomenų bazės jungčių kaupimo, jis gali naudoti įvairias tolerancijos trikdžiams ir mastelio strategijas, tokias kaip apkrovos balansavimas, talpinimas ir klasteriai - dažnai ypatybės klaidingai priskiriamos funkcijoms, rezervuotoms tik programų serveriams.

Programų serveris

Kalbant apie programų serverį, pagal mūsų apibrėžimą, programų serveris verslo logiką kliento programoms pateikia naudodamas įvairius protokolus, galbūt įskaitant HTTP. Nors žiniatinklio serveris daugiausia užsiima HTML siuntimu rodyti žiniatinklio naršyklėje, programų serveris suteikia prieigą prie verslo logikos, kurią gali naudoti kliento programų programos. Taikomoji programa gali naudoti šią logiką taip, kaip ji iškviečia objekto metodą (arba funkciją procedūriniame pasaulyje).

Tokie programų serverio klientai gali apimti GUI (grafinę vartotojo sąsają), veikiančius asmeniniame kompiuteryje, žiniatinklio serveryje ar net kituose programų serveriuose. Informacija, keliaujanti pirmyn ir atgal tarp programų serverio ir jo kliento, neapsiriboja paprastu ekrano žymėjimu. Vietoj to, informacija yra programos logika. Kadangi logika yra duomenų ir metodo iškvietimų forma, o ne statinis HTML, klientas gali naudoti atvirą verslo logiką, kaip tik nori.

Daugeliu atvejų serveris atskleidžia šią verslo logiką per komponento API, pvz., EJB („Enterprise JavaBean“) komponento modelį, esantį J2EE („Java 2 Platform“, „Enterprise Edition“) programų serveriuose. Be to, programų serveris tvarko savo išteklius. Tokios vartų saugojimo pareigos apima saugumą, operacijų apdorojimą, išteklių kaupimą ir pranešimų siuntimą. Kaip ir žiniatinklio serveris, programų serveris taip pat gali naudoti įvairias mastelio keitimo ir toleravimo gedimams technikas.

Pavyzdys

Tarkime, pavyzdžiui, internetinę parduotuvę, kurioje teikiama informacija apie kainas ir prieinamumą realiuoju laiku. Labiausiai tikėtina, kad svetainėje bus pateikta forma, pagal kurią galėsite pasirinkti produktą. Kai pateikiate užklausą, svetainė atlieka paiešką ir pateikia HTML puslapyje įdėtus rezultatus. Svetainėje ši funkcija gali būti įgyvendinta įvairiais būdais. Aš jums parodysiu vieną scenarijų, kuriame nenaudojamas programų serveris, ir kitą, kuris naudoja. Pamatę, kaip skiriasi šie scenarijai, galėsite pamatyti programų serverio funkciją.

1 scenarijus: žiniatinklio serveris be programų serverio

Pagal pirmąjį scenarijų internetinės parduotuvės funkcionalumą suteikia tik žiniatinklio serveris. Žiniatinklio serveris priima jūsų užklausą, tada perduoda ją serverio programai, galinčiai apdoroti užklausą. Serverio pusės programa ieško kainų informacijos iš duomenų bazės arba plokščio failo. Gavusi serverio programa naudoja informaciją HTML atsakymui suformuoti, tada žiniatinklio serveris ją siunčia atgal į jūsų žiniatinklio naršyklę.

Apibendrinant galima pasakyti, kad žiniatinklio serveris paprasčiausiai apdoroja HTTP užklausas atsakydamas HTML puslapiais.

2 scenarijus: žiniatinklio serveris su programų serveriu

2 scenarijus panašus į 1 scenarijų, nes žiniatinklio serveris vis tiek perduoda atsakymo generavimą scenarijui. Tačiau dabar kainų paieškos verslo logiką galite įdėti į programų serverį. Atlikus šį pakeitimą, užuot scenarijui žinant, kaip ieškoti duomenų ir suformuluoti atsakymą, scenarijus gali tiesiog paskambinti programų serverio paieškos tarnybai. Tada scenarijus gali naudoti paslaugos rezultatą, kai scenarijus sugeneruoja savo HTML atsakymą.

Tokiu atveju programų serveris teikia verslo logiką ieškodamas produkto kainų informacijos. Ta funkcija nieko nepasako apie rodymą ir tai, kaip klientas turi naudoti informaciją. Vietoj to, klientas ir programų serveris siunčia duomenis pirmyn ir atgal. Kai klientas paskambina į programų serverio paieškos tarnybą, paslauga tiesiog ieško informacijos ir grąžina ją klientui.

Atskyrus kainų logiką nuo HTML atsaką generuojančio kodo, kainų logika tampa daug pakartotinai naudojama tarp programų. Antrasis klientas, pavyzdžiui, kasos aparatas, taip pat galėtų paskambinti į tą pačią tarnybą, kurią tarnautojas patikrina klientą. Priešingai, 1 scenarijuje kainų paieškos paslauga nėra pakartotinai naudojama, nes informacija yra įdėta į HTML puslapį. Apibendrinant galima pasakyti, kad pagal 2 scenarijaus modelį žiniatinklio serveris tvarko HTTP užklausas atsakydamas HTML puslapiu, o programų serveris teikia programų logiką apdorodamas kainų ir prieinamumo užklausas.

Įspėjimai

Neseniai XML žiniatinklio paslaugos ištrynė ribą tarp programų serverių ir žiniatinklio serverių. Perduodamas XML naudingąją apkrovą žiniatinklio serveriui, žiniatinklio serveris dabar gali apdoroti duomenis ir atsakyti tiek, kiek praeityje turėjo programų serveriai.

Be to, daugumoje programų serverių taip pat yra žiniatinklio serveris, o tai reiškia, kad žiniatinklio serverį galite laikyti programų serverio pogrupiu. Nors programų serveriuose yra žiniatinklio serverio funkcijų, kūrėjai retai diegia tokių pajėgumų programų serverius. Vietoj to, kai reikia, jie dažnai diegia atskirus žiniatinklio serverius kartu su programų serveriais. Toks funkcijų atskyrimas padeda našumui (paprastos žiniatinklio užklausos neturės įtakos programos serverio našumui), diegimo konfigūracijai (specialūs žiniatinklio serveriai, grupavimas ir pan.) Ir leidžia pasirinkti geriausios rūšies produktus.

Tony Sintesas yra nepriklausomas konsultantas ir „First Class Consulting“, konsultacinės firmos, kuri specializuojasi sujungiant skirtingas įmonių sistemas ir mokymus, įkūrėjas. Už „First Class Consulting“ ribų Tony yra aktyvus laisvai samdomas rašytojas, taip pat knygos „Sams išmokyk save į objektą orientuoto programavimo per 21 dieną“ autorius (Sams, 2001; ISBN: 0672321092).

Sužinokite daugiau apie šią temą

  • Norėdami gauti daugiau straipsnių apie programų serverius, naršykite „Java“ programų serveriai skyrius „JavaWorld“s aktuali rodyklė

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

  • Norite daugiau? Žr „Java“ klausimai ir atsakymai viso klausimų ir atsakymų katalogo rodyklės puslapis

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

  • Norėdami gauti daugiau nei 100 įžvalgių „Java“ patarimų iš geriausių verslo atstovų, apsilankykite „JavaWorld“s „Java“ patarimai rodyklės puslapis

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

  • Sužinokite daugiau apie programų pertraukiklius ir žiniatinklio serverius mūsų puslapyje „Enterprise Java“ diskusija

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

  • Prisiregistruokite „JavaWorld“nemokamai kas savaitę „Enterprise Java“ pašto naujienlaiškis

    //www.javaworld.com/subscribe

  • Rasite daugybę su IT susijusių straipsnių iš mūsų seserų leidinių .net

Ši istorija: „Programų serveris, žiniatinklio serveris: koks skirtumas?“ iš pradžių buvo išleista „JavaWorld“.