Programovanie

Aplikačný server, webový server: Aký je rozdiel?

23. augusta 2002

Otázka: Aký je rozdiel medzi aplikačným serverom a webovým serverom?

A:

Webový server výhradne spracováva požiadavky HTTP, zatiaľ čo aplikačný server poskytuje obchodnú logiku aplikačným programom prostredníctvom ľubovoľného počtu protokolov.

Pozrime sa na každú podrobnejšie.

Webový server

Protokol HTTP spracováva webový server. Keď webový server prijme požiadavku HTTP, odpovie odpoveďou HTTP, napríklad spätným odoslaním stránky HTML. Na spracovanie žiadosti môže webový server odpovedať statickou stránkou alebo obrázkom HTML, poslať presmerovanie alebo delegovať generovanie dynamickej odpovede na iný program, ako sú skripty CGI, JSP (stránky JavaServer), servlety, ASP (stránky aktívneho servera). ), skripty JavaScriptu na strane servera alebo iná technológia na strane servera. Bez ohľadu na to, aký je ich účel, takéto programy na strane servera generujú odozvu, najčastejšie v HTML, na prezeranie vo webovom prehliadači.

Pochopte, že model delegovania webového servera je dosť jednoduchý. Keď žiadosť príde na webový server, webový server ju jednoducho odošle programu, ktorý ju najlepšie zvládne. Webový server neposkytuje žiadne ďalšie funkcie okrem poskytovania prostredia, v ktorom program na strane servera môže vykonávať a odovzdávať vygenerované odpovede. Program na strane servera si obvykle poskytuje také funkcie ako spracovanie transakcií, pripojenie k databáze a zasielanie správ.

Aj keď webový server nemusí sám podporovať transakcie alebo združovanie databázových pripojení, môže využívať rôzne stratégie odolnosti voči chybám a škálovateľnosti, ako napríklad vyrovnávanie zaťaženia, ukladanie do medzipamäte a klastrovanie - funkcie sú často chybne priradené ako funkcie vyhradené iba pre aplikačné servery.

Aplikačný server

Pokiaľ ide o aplikačný server, podľa našej definície aplikačný server vystavuje obchodnú logiku klientským aplikáciám prostredníctvom rôznych protokolov, prípadne vrátane protokolu HTTP. Zatiaľ čo webový server sa zaoberá hlavne odosielaním HTML na zobrazenie vo webovom prehľadávači, aplikačný server poskytuje prístup k obchodnej logike na použitie v aplikačných programoch klienta. Aplikačný program môže použiť túto logiku rovnako, ako by nazýval metódu na objekte (alebo funkcii v procedurálnom svete).

Medzi takýchto klientov aplikačných serverov môžu patriť grafické používateľské rozhrania (grafické používateľské rozhranie) spustené na počítači PC, webovom serveri alebo dokonca na iných aplikačných serveroch. Informácie putujúce tam a späť medzi aplikačným serverom a jeho klientom sa neobmedzujú iba na jednoduché zobrazovacie značky. Namiesto toho sú informáciami programová logika. Pretože logika má formu volaní údajov a metód, a nie statického kódu HTML, klient môže použiť exponovanú obchodnú logiku, ako chce.

Vo väčšine prípadov server vystavuje túto obchodnú logiku prostredníctvom komponentného rozhrania API, ako je napríklad komponentný model EJB (Enterprise JavaBean), ktorý sa nachádza na aplikačných serveroch J2EE (Java 2 Platform, Enterprise Edition). Aplikačný server navyše spravuje svoje vlastné zdroje. Takéto povinnosti týkajúce sa udržiavania brány zahŕňajú bezpečnosť, spracovanie transakcií, združovanie zdrojov a zasielanie správ. Rovnako ako webový server, aj aplikačný server môže využívať rôzne techniky škálovateľnosti a odolnosti proti chybám.

Príklad

Ako príklad zvážte internetový obchod, ktorý poskytuje informácie o cenách a dostupnosti v reálnom čase. Stránka s najväčšou pravdepodobnosťou poskytne formulár, pomocou ktorého si môžete vybrať produkt. Keď zadáte dopyt, web vykoná vyhľadávanie a vráti výsledky vložené na stránke HTML. Web môže túto funkcionalitu implementovať rôznymi spôsobmi. Ukážem vám jeden scenár, ktorý nepoužíva aplikačný server, a druhý, ktorý ho využíva. Keď uvidíte, ako sa tieto scenáre líšia, pomôže vám to vidieť funkciu aplikačného servera.

Scenár 1: Webový server bez aplikačného servera

V prvom scenári poskytuje funkčnosť online obchodu samotný webový server. Webový server prevezme vašu požiadavku a potom ju odovzdá programu na strane servera, ktorý je schopný túto požiadavku vybaviť. Program na strane servera vyhľadáva informácie o cenách z databázy alebo plochého súboru. Po načítaní program na strane servera použije tieto informácie na formulovanie odpovede HTML a potom ich webový server odošle späť do vášho webového prehľadávača.

Ak to zhrnieme, webový server jednoducho spracuje požiadavky HTTP odpovedaním na stránky HTML.

Scenár 2: Webový server s aplikačným serverom

Scenár 2 sa podobá scenáru 1 v tom, že webový server stále deleguje generovanie odpovedí na skript. Teraz však môžete dať obchodnú logiku na vyhľadanie ceny na aplikačný server. Vďaka tejto zmene môže skript namiesto toho, aby vedel, ako vyhľadať údaje a formulovať odpoveď, skript jednoducho zavolať vyhľadávaciu službu aplikačného servera. Skript potom môže použiť výsledok služby, keď skript vygeneruje svoju odpoveď HTML.

V tomto scenári slúži aplikačný server obchodnej logike na vyhľadanie informácií o cene produktu. Táto funkcionalita nehovorí nič o zobrazení alebo o tom, ako musí klient tieto informácie použiť. Namiesto toho klient a aplikačný server odosielajú dáta tam a späť. Keď klient zavolá vyhľadávaciu službu aplikačného servera, služba jednoducho vyhľadá informácie a vráti ich klientovi.

Oddelením cenovej logiky od kódu generujúceho odozvu HTML sa cenová logika stáva medzi aplikaciami oveľa viac opakovane použiteľnou. Druhý klient, napríklad registračná pokladnica, by tiež mohol zavolať na rovnakú službu, akú úradník skontroluje u zákazníka. Naproti tomu v scenári 1 nie je služba vyhľadávania cien opakovane použiteľná, pretože informácie sú vložené do stránky HTML. Aby sme to zhrnuli, v modeli scenára 2 webový server vybavuje požiadavky HTTP odpovedaním na stránku HTML, zatiaľ čo aplikačný server obsluhuje aplikačnú logiku spracovaním požiadaviek na ceny a dostupnosť.

Upozornenia

V poslednej dobe webové služby XML rozmazali hranicu medzi aplikačnými servermi a webovými servermi. Po prenose užitočného zaťaženia XML na webový server môže webový server teraz spracovávať údaje a odpovedať rovnako ako v minulosti aplikačné servery.

Väčšina aplikačných serverov navyše obsahuje aj webový server, čo znamená, že môžete považovať webový server za podmnožinu aplikačného servera. Zatiaľ čo aplikačné servery obsahujú funkcie webového servera, vývojári zriedka nasadia aplikačné servery v tejto funkcii. Namiesto toho v prípade potreby často nasadzujú samostatné webové servery v tandeme s aplikačnými servermi. Takéto oddelenie funkčnosti pomáha výkonu (jednoduché webové požiadavky nebudú mať vplyv na výkon aplikačného servera), konfigurácii nasadenia (vyhradené webové servery, klastrovanie atď.) A umožňuje výber toho najlepšieho produktu.

Tony Sintes je nezávislý konzultant a zakladateľ konzultačnej spoločnosti First Class Consulting, ktorá sa špecializuje na premosťovanie rozdielnych podnikových systémov a školení. Mimo First Class Consulting je Tony aktívnym spisovateľom na voľnej nohe a tiež autorom Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Získajte viac informácií o tejto téme

  • Ďalšie články o aplikačných serveroch nájdete v Aplikačné servery Java časť JavaWorld 's Aktuálny index

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

  • Chcieť viac? Viď Java Q&A indexová stránka pre úplný katalóg otázok a odpovedí

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

  • Viac ako 100 bystrých tipov pre jazyk Java od najlepších odborníkov v odbore nájdete na webovej stránke JavaWorld 's Tipy pre Java indexová stránka

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

  • Viac informácií o aplikačných serveroch a webových serveroch sa dozviete v našom Enterprise Java diskusia

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

  • Zaregistrovať JavaWorldje týždenne zadarmo Enterprise Java e-mailový spravodaj

    //www.javaworld.com/subscribe

  • Množstvo článkov týkajúcich sa IT z našich sesterských publikácií nájdete na .net

Tento príbeh: „Aplikačný server, webový server: Aký je rozdiel?“ pôvodne vyšla vo vydavateľstve JavaWorld.

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