Programmēšana

Lietotņu serveris, tīmekļa serveris: kāda ir atšķirība?

2002. gada 23. augusts

J: Kāda ir atšķirība starp lietojumprogrammu serveri un tīmekļa serveri?

A:

Tīmekļa serveris apstrādā tikai HTTP pieprasījumus, savukārt lietojumprogrammu serveris biznesa loģiku apkalpo lietojumprogrammām, izmantojot jebkuru protokolu skaitu.

Apskatīsim katru sīkāk.

Tīmekļa serveris

Tīmekļa serveris apstrādā HTTP protokolu. Kad tīmekļa serveris saņem HTTP pieprasījumu, tas atbild ar HTTP atbildi, piemēram, nosūta atpakaļ HTML lapu. Lai apstrādātu pieprasījumu, tīmekļa serveris var atbildēt ar statisku HTML lapu vai attēlu, nosūtīt novirzīšanu vai deleģēt dinamiskās atbildes ģenerēšanu kādai citai programmai, piemēram, CGI skriptiem, JSP (JavaServer Pages), servletiem, ASP (Active Server Pages). ), servera puses JavaScripts vai kādu citu servera puses tehnoloģiju. Lai kāds būtu to mērķis, šādas servera puses programmas ģenerē atbildi, visbiežāk HTML formātā, lai to skatītu tīmekļa pārlūkprogrammā.

Saprotiet, ka tīmekļa servera deleģēšanas modelis ir diezgan vienkāršs. Kad Web serverī tiek parādīts pieprasījums, Web serveris vienkārši pārsūta pieprasījumu programmai, kas to vislabāk spēj apstrādāt. Tīmekļa serveris nenodrošina nekādu funkcionalitāti, kā tikai nodrošināt vidi, kurā servera puses programma var izpildīt un nodot ģenerētās atbildes atpakaļ. Servera puses programma parasti nodrošina sev tādas funkcijas kā darījumu apstrāde, datu bāzes savienojamība un ziņojumapmaiņa.

Kaut arī tīmekļa serveris pats par sevi var neatbalstīt darījumus vai datu bāzes savienojumu apvienošanu, tajā var izmantot dažādas kļūdu tolerances un mērogojamības stratēģijas, piemēram, slodzes līdzsvarošanu, kešatmiņu un klasteru izveidi - bieži vien kļūdaini tiek piešķirtas funkcijas, kas rezervētas tikai lietojumprogrammu serveriem.

Lietojumprogrammu serveris

Kas attiecas uz lietojumprogrammu serveri, saskaņā ar mūsu definīciju lietojumprogrammu serveris pakļauj biznesa loģiku klienta lietojumprogrammām, izmantojot dažādus protokolus, iespējams, ieskaitot HTTP. Kamēr tīmekļa serveris galvenokārt nodarbojas ar HTML sūtīšanu rādīšanai tīmekļa pārlūkprogrammā, lietojumprogrammu serveris nodrošina piekļuvi biznesa loģikai, ko izmanto klienta lietojumprogrammas. Lietojumprogramma var izmantot šo loģiku tāpat kā tā izsauktu metodi objektam (vai funkciju procesuālajā pasaulē).

Šādi lietojumprogrammu serveru klienti var ietvert grafiskās lietotāja saskarnes (GUI), kas darbojas datorā, tīmekļa serverī vai pat citos lietojumprogrammu serveros. Informācija, kas pārvietojas turp un atpakaļ starp lietojumprogrammu serveri un tā klientu, neaprobežojas tikai ar vienkāršu displeja iezīmēšanu. Tā vietā informācija ir programmas loģika. Tā kā loģika izpaužas kā datu un metožu izsaukumi, nevis statisks HTML, klients var izmantot pakļauto biznesa loģiku, kā vien vēlas.

Vairumā gadījumu serveris atklāj šo biznesa loģiku, izmantojot komponenta API, piemēram, EJB (Enterprise JavaBean) komponenta modeli, kas atrodams J2EE (Java 2 Platform, Enterprise Edition) lietojumprogrammu serveros. Turklāt lietojumprogrammu serveris pārvalda savus resursus. Šādi vārtu uzturēšanas pienākumi ietver drošību, darījumu apstrādi, resursu apvienošanu un ziņojumapmaiņu. Tāpat kā tīmekļa serveris, arī lietojumprogrammu serveris var izmantot dažādas mērogojamības un kļūdu tolerances metodes.

Piemērs

Kā piemēru ņemiet vērā tiešsaistes veikalu, kas nodrošina reāllaika cenu un pieejamības informāciju. Visticamāk, vietne nodrošinās veidlapu, ar kuras palīdzību jūs varat izvēlēties produktu. Iesniedzot vaicājumu, vietne veic uzmeklēšanu un atgriež HTML lapā iegultos rezultātus. Vietne šo funkciju var ieviest vairākos veidos. Es jums parādīšu vienu scenāriju, kurā netiek izmantots lietojumprogrammu serveris, un citu, kas to izmanto. Redzot, kā šie scenāriji atšķiras, varēsit redzēt lietojumprogrammu servera funkciju.

1. scenārijs: Web serveris bez lietojumprogrammu servera

Pirmajā gadījumā tikai tīmekļa serveris nodrošina tiešsaistes veikala funkcionalitāti. Tīmekļa serveris pieņem jūsu pieprasījumu un pēc tam to nodod servera puses programmai, kas spēj apstrādāt pieprasījumu. Servera puses programma meklē cenu informāciju no datu bāzes vai plakana faila. Pēc atgūšanas servera puses programma izmanto informāciju HTML atbildes formulēšanai, pēc tam tīmekļa serveris to nosūta atpakaļ uz jūsu tīmekļa pārlūkprogrammu.

Apkopojot, Web serveris vienkārši apstrādā HTTP pieprasījumus, atbildot ar HTML lapām.

2. scenārijs: Web serveris ar lietojumprogrammu serveri

2. scenārijs atgādina 1. scenāriju, jo tīmekļa serveris joprojām deleģē atbildes ģenerēšanu skriptam. Tomēr tagad cenu meklēšanas biznesa loģiku varat ievietot lietojumprogrammu serverī. Ar šīm izmaiņām skripts tā vietā, lai zinātu, kā meklēt datus un formulēt atbildi, var vienkārši izsaukt lietojumprogrammu servera uzmeklēšanas pakalpojumu. Pēc tam skripts var izmantot pakalpojuma rezultātu, kad skripts ģenerē savu HTML atbildi.

Šajā scenārijā lietojumprogrammu serveris apkalpo biznesa loģiku, meklējot produkta cenu informāciju. Šī funkcionalitāte neko nepasaka par displeju vai par to, kā klientam jāizmanto informācija. Tā vietā klients un lietojumprogrammu serveris sūta datus turp un atpakaļ. Kad klients izsauc lietojumprogrammu servera uzmeklēšanas pakalpojumu, pakalpojums vienkārši meklē informāciju un atdod to klientam.

Atdalot cenu noteikšanas loģiku no HTML atbildes ģenerēšanas koda, cenu noteikšanas loģika starp lietojumprogrammām kļūst daudz vairāk izmantojama. Arī otrs klients, piemēram, kases aparāts, varētu izsaukt to pašu pakalpojumu, kurā lietvedis pārbauda klientu. Turpretī 1. scenārijā cenu uzmeklēšanas pakalpojums nav atkārtoti lietojams, jo informācija ir iegulta HTML lapā. Apkopojot, 2. scenārija modelī tīmekļa serveris apstrādā HTTP pieprasījumus, atbildot ar HTML lapu, savukārt lietojumprogrammu serveris apkalpo lietojumprogrammu loģiku, apstrādājot cenu un pieejamības pieprasījumus.

Brīdinājumi

Nesen XML tīmekļa pakalpojumi ir izplūduši starp lietojumprogrammu serveriem un tīmekļa serveriem. Nododot Web serverim XML lietderīgo slodzi, Web serveris tagad var apstrādāt datus un reaģēt tikpat daudz kā lietojumprogrammu serveri agrāk.

Turklāt lielākajā daļā lietojumprogrammu serveru ir arī tīmekļa serveris, kas nozīmē, ka Web serveri varat uzskatīt par lietojumprogrammu servera apakškopu. Lai gan lietojumprogrammu serveros ir Web servera funkcionalitāte, izstrādātāji šajā izvietojumā reti izvieto lietojumprogrammu serverus. Tā vietā, kad nepieciešams, viņi bieži izvieto atsevišķus tīmekļa serverus kopā ar lietojumprogrammu serveriem. Šāda funkcionalitātes nošķiršana palīdz veiktspējai (vienkāršie tīmekļa pieprasījumi neietekmēs lietojumprogrammu serveru veiktspēju), izvietošanas konfigurāciju (īpaši tīmekļa serveri, kopu veidošana utt.) Un ļauj izvēlēties šķirnes labāko produktu.

Tonijs Sintess ir neatkarīgs konsultants un First Class Consulting, konsultāciju firmas dibinātājs, kas specializējas dažādu uzņēmumu sistēmu un apmācības mazināšanā. Ārpus pirmās klases konsultācijām Tonijs ir aktīvs ārštata rakstnieks, kā arī grāmatas Sams autors uz objektorientētu programmēšanu 21 dienas laikā autors (Sams, 2001; ISBN: 0672321092).

Uzziniet vairāk par šo tēmu

  • Lai iegūtu vairāk rakstu par lietojumprogrammu serveriem, pārlūkojiet Java lietojumprogrammu serveri sadaļa JavaWorld 's Aktuālais rādītājs

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

  • Vēlas vairāk? Skatīt Java jautājumi un atbildes rādītāja lapa pilnam jautājumu un atbilžu katalogam

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

  • Lai iegūtu vairāk nekā 100 ieskatīgus Java padomus no labākajiem biznesa prātiem, apmeklējiet vietni JavaWorld 's Java padomi rādītāja lapa

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

  • Uzziniet vairāk par lietojumprogrammu nodalījumiem un tīmekļa serveriem mūsu vietnē Enterprise Java diskusija

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

  • Pierakstieties JavaWorldkatru nedēļu ir bezmaksas Enterprise Java e-pasta biļetens

    //www.javaworld.com/subscribe

  • Jūs atradīsit daudz ar IT saistītu rakstu no mūsu māsas publikācijām vietnē .net

Šis stāsts "Lietotņu serveris, tīmekļa serveris: kāda ir atšķirība?" sākotnēji to publicēja JavaWorld.

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