04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

SHOW MORE
SHOW LESS

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).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!