VyÜlo v t²denφku: | CHIPweek |
╚φslo: | 10/96 |
Datum: | 5. b°ezna 1996 |
Strana: | 25 |
Rubrika/kategorie: | Principy poΦφtaΦov²ch sφtφ |
Modul: | V²voj v²poΦetnφho modelu |
Dφl: | 8 |
Jednou za zßkladnφch premis modelu klient/server je p°edpoklad, ₧e dostupnß p°enosovß kapacita je relativn∞ malß a vzßcnß, a je tudφ₧ t°eba s nφ Üet°it. Bezprost°ednφm d∙sledkem toho je pak snaha minimalizovat p°enosy dat mezi jednotliv²mi uzlov²mi poΦφtaΦi, Φeho₧ se dosahuje zpracovßnφm dat v mφst∞, kde se tato data nachßzφ. P°enßÜeny jsou pak jen po₧adavky na urΦit² druh zpracovßnφ, a dßle ji₧ jen jeho v²sledky. V²poΦetnφ model klient/server, ke kterΘmu jsme dosp∞li minule, vÜak nenφ jedin²m mo₧n²m vy·st∞nφm zmφn∞nΘ premisy - existuje dokonce celß Ükßla r∙zn²ch °eÜenφ, kterΘ takΘ vychßzφ ze stejnΘho p°edpokladu a sna₧φ se jej naplnit, ale sledujφ p°itom i svΘ dalÜφ specifickΘ pot°eby, a od modelu klient/server se mohou liÜit jen velmi mßlo, nebo takΘ dosti podstatn∞ - zejmΘna v tom, jakß je role a jakΘ je postavenφ jednotliv²ch slo₧ek celΘho vzßjemn∞ spolupracujφcφho systΘmu. Na jednΘ stran∞ spektra p°itom stojφ takovß °eÜenφ, kterß poΦφtajφ s existencφ a se stejnou d∞lbou prßce jako p∙vodnφ model klient/server, a v zßsad∞ se tedy od n∞j p°φliÜ neliÜφ (resp. Je mo₧nΘ je pova₧ovat za konkrΘtnφ zp∙sob aplikace modelu klient/server). P°φkladem m∙₧e b²t koncepce systΘmu X Window System, kterou si dnes popφÜeme. Uprost°ed spektra mo₧n²ch °eÜenφ pak jsou takovß °eÜenφ, kterß mφsto s interakcφ stylem 1:1 (jako v p°φpad∞ klienta a serveru) poΦφtajφ spφÜe s interakcφ 1:n, stßle p°edpoklßdajφ urΦitΘ specifickΘ zam∞°enφ jednotliv²ch slo₧ek, ale ji₧ poΦφtajφ s pon∞kud jinou d∞lbou prßce ne₧ jen p∙vodnφ poskytovßnφ slu₧eb (serverem) a jejich vyu₧φvßnφ (klientem). P°φkladem m∙₧e b²t koncepce, pou₧φvanß v oblasti sprßvy sφtφ (zejmΘna v implementacφch protokolu SNMP), a oznaΦovanß neformßln∞ jako agent/mana₧er. No a na druhΘm konci spektra pak jsou pln∞ distribuovanΘ systΘmy, p°edpoklßdajφcφ vzßjemnou spoluprßci n vφcemΘn∞ rovnoprßvn²ch slo₧ek. Toto si ale ji₧ nechßme na p°φÜt∞.
![]() |
SystΘm X Window, jak u₧ jeho nßzev napovφdß, usiluje o vytvß°enφ u₧ivatelskΘho rozhranφ äokennφho" typu, samoz°ejm∞ v grafickΘm re₧imu. Aby se vÜak vyhnul ne·nosn∞ velk²m p°enos∙m grafick²ch dat, sna₧φ se za°φdit v∞ci tak, aby ävelkß" grafickß data pot°ebnß pro rastrovou grafiku byla generovßna p°φmo v mφst∞ kde budou zobrazovßna, a nikoli tam kde vznikß popud k jejich zobrazenφ. Usiluje tedy o to, aby po dostupn²ch p°enosov²ch cestßch byly p°enßÜeny pouze pokyny, povely Φi jinΘ druhy p°φkaz∙ specifikujφcφch co mß b²t zobrazeno, a nikoli vlastnφ data p°edstavujφcφ ji₧ hotov² rastrov² obrßzek. D∙sledkem je pak nutnß d∞lba prßce - vedle aplikace, kterß zadßvß popud k zobrazenφ a kterß m∙₧e b∞₧et v zßsad∞ kdekoli v rßmci sφt∞, musφ existovat jeÜt∞ dalÜφ slo₧ka, provozovanß p°φmo v mφst∞ kde dochßzφ k zobrazovßnφ - tedy na u₧ivatelov∞ poΦφtaΦi. Velmi zajφmavΘ je pojmenovßnφ t∞chto slo₧ek: ta, kterß se starß o zobrazovßnφ, vlastn∞ poskytuje tuto svou schopnost jako slu₧bu tomu, kdo k zobrazenφ zadßvß popud. Tak₧e je asi na mφst∞ hovo°it o serveru, konkrΘtn∞ o X serveru. Druhß slo₧ka, tedy ta kterß zadßvß popud k zobrazenφ, pak slu₧eb X serveru vyu₧φvß, a je tedy sprßvnΘ ji oznaΦovat jako klienta (X klienta).
Nynφ si to zkusme zrekapitulovat: p°edstavme si n∞jakou aplikaci, nap°φklad databßzovΘho charakteru, kterß b∞₧φ na urΦitΘm uzlovΘm poΦφtaΦi - tato aplikace bude v rßmci systΘmu X Window vystupovat v roli klienta (X klienta). Naproti tomu na poΦφtaΦi u₧ivatele bude muset b∞₧et slo₧ka zajiÜ¥ujφcφ zobrazovßnφ, vystupujφcφ v roli X serveru. Kdykoli bude aplikace (X klient) pot°ebovat svΘmu u₧ivateli n∞co zobrazit, po₧ßdß o to X server na jeho poΦφtaΦi, neboli poÜle tomuto serveru sv∙j po₧adavek na zobrazenφ. Naproti tomu X server informuje svΘho klienta o vÜech vstupech od u₧ivatele - zejmΘna o vÜech znacφch zadan²ch z klßvesnice, a o vÜech pohybech a kliknutφch myÜφ.
Nenφ ale prßv∞ popsan² vztah X klienta a X serveru p°esn∞ opaΦn², ne₧ jak² jsme a₧ dosud p°edpoklßdali u modelu klient/server? Ano, i ne. Je p°esn∞ opaΦn² v tom, ₧e aplikace zajiÜ¥ujφ urΦitou specifickou funkΦnost je zde v postavenφ klienta, zatφmco v modelu klient/server b²vß v postavenφ poskytovatele slu₧by, neboli serveru. Mohlo by se tedy zdßt, ₧e zde doÜlo k urΦitΘmu p°evrßcenφ rolφ oproti klasickΘmu modelu klient/server. Na druhΘ stran∞ je ale mo₧nΘ dolo₧it i tvrzenφ, ₧e k ₧ßdnΘmu obrßcenφ rolφ nedoÜlo: v₧dy¥ poskytovanou slu₧bou je zde p°eci zobrazovßnφ na u₧ivatelov∞ displeji a sb∞r vstup∙ od n∞j! No a ten, kdo tuto slu₧bu poskytuje, je serverem, zatφmco ten kdo ji vyu₧φvß je jeho klientem!
Co naopak nenφ souΦßstφ systΘmu X Window je p°edstava o tom, jak by m∞lo vypadat grafickΘ u₧ivatelskΘ rozhranφ, p°edklßdanΘ u₧ivateli - co vÜechno by m∞lo obsahovat, jak² by m∞lo mφt celkov² äimage", jakΘ funkce by m∞lo nabφzet atd. To je ponechßno pln∞ na aplikacφch, vystupujφcφch v roli X klient∙. Stejn∞ tak nejsou souΦßstφ systΘmu X Window ₧ßdnΘ tiskovΘ slu₧by Φi jin² druh podpory tisk∙.