elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Softvérové súiastky 53<br />
5. interpretácia odpovede – extrakcia návratovej hodnoty, prípadne chybovej správy,<br />
6. zatvorenie spojenia – volaním funkcie close.<br />
Na strane modulu B by bola situácia analogická. Okrem zložitosti vytvorených programov<br />
má takéto riešenie aj alšie nevýhody, konkrétne:<br />
1. V prípade, že volajúci a volaný modul sú spustené na poítaoch s rôznou architektúrou,<br />
nemusia by vymieané údaje správne interpretované. Ak by sa napríklad<br />
A vykonával na poítai s procesorom ukladajúcim najvýznamnejší bajt najprv („big<br />
endian“, napríklad PowerPC), volanie add (20, 30) by mohlo by zakódované<br />
do správy ako sekvencia oktetov ( ‘a’, ‘d’, ‘d’, ‘\0’, 0, 0, 0, 20, 0, 0, 0, 30 ). Takáto správa<br />
prijatá na poítai s procesorom ukladajúcim najvýznamnejší bajt na konci („little<br />
endian“, napríklad Intel x86) by bola interpretovaná ako volanie add (335544320,<br />
503316480). Analogické problémy môžu vznika tiež pri interpretácii ísel<br />
s pohyblivou rádovou iarkou alebo textových reazcov (z dôvodu rôznych spôsobov<br />
kódovania znakov: ASCII, EBCDIC, UNICODE, rôzne kódovania národných abecied<br />
a podobne).<br />
2. V prípade, že potrebujeme zabezpei alšie služby, ako je napríklad bezpenos informácií<br />
pri prenose (typicky použitím protokolu SSL/TLS 1 ), prípadne korektné správanie<br />
sa systému pri nedostupnosti poítaa s volaným modulom, je objem „infraštruktúrneho<br />
kódu“ ešte omnoho vyšší.<br />
3. Podobne v prípade, že volané rozhranie je zložitejšie, o sa týka množstva funkcií,<br />
potu ich parametrov a prenášaných dátových typov, objem práce programátora<br />
pri kódovaní a dekódovaní volaní funkcií do formy údajových balíkov rýchlo narastá.<br />
Z týchto a podobných dôvodov sa pri volaní funkcií v distribuovanom prostredí používa<br />
elegantná myšlienka volania vzdialených procedúr (angl. remote procedure call), ktorú prvýkrát<br />
uviedli do praxe Birrell a Nelson (Birrell, 1984). Základným princípom je, že programátor<br />
so vzdialenými procedúrami resp. funkciami pracuje tým istým spôsobom ako<br />
s lokálnymi – samozrejme s výnimkou aspektov výkonu a spoahlivosti.<br />
2.3.1 Volanie vzdialených procedúr<br />
Typické použitie vzdialeného volania procedúr je znázornené na obrázku 2-9. Stub 2 pre B<br />
je modul, ktorý umožuje komunikáciu klientov s modulom B. Pre klienta – v našom prípade<br />
pre modul A – poskytuje funkciu add (x,y), priom ju neimplementuje priamo, ale<br />
pri každom jej volaní vytvára balík údajov, ktorý prostredníctvom komunikaného jadra<br />
posiela serveru. Na strane servera balík prevezme tzv. skeleton pre B, ktorý z prijatých údajov<br />
extrahuje názov funkcie a jej parametre a túto funkciu zavolá. Návratovú hodnotu<br />
pošle naspä modulu stub, ktorý ju odovzdá klientovi.<br />
Pre programátora je dôležité, že jadro je spravidla k dispozícii vo forme knižnice<br />
a moduly stub a skeleton sú automaticky generované z opisu rozhrania volaného modulu<br />
1<br />
Secure Sockets Layer resp. Transport Layer Security<br />
2<br />
Slovo stub v anglitine oznauje pe, pahý. Niekedy sa pre tento modul používa aj výraz proxy<br />
(zástupca). Na strane servera sa analogický modul nazýva server-side stub alebo aj skeleton (kostra).