RPC vs RMI
Základný rozdiel medzi RPC a RMI je v tom, že RPC je mechanizmus, ktorý umožňuje volanie procedúry na vzdialenom počítači, zatiaľ čo RMI je implementácia RPC v jave. RPC je jazykovo neutrálne, ale podporuje iba primitívne dátové typy, ktoré sa majú odovzdať. Na druhej strane je RMI obmedzené na Javu, ale umožňuje prechádzanie objektov. RPC sleduje tradičné procedurálne jazykové konštrukcie, zatiaľ čo RMI podporuje objektovo orientovaný dizajn.
Čo je to RPC?
RPC, čo je skratka pre Remote Procedure Call, je druh medziprocesovej komunikácie. To umožňuje volanie funkcie v inom procese bežiacom na lokálnom alebo vzdialenom počítači. Tento koncept sa objavil už dávno v roku 1980, ale prvá slávna implementácia bola zaznamenaná v systéme Unix.
RPC zahŕňa niekoľko krokov. Klient vykoná volanie procedúry na lokálnom počítači ako obvykle. Modul s názvom client stub zhromaždí argumenty a vytvorí správu a odošle ju do operačného systému. Operačný systém vykoná systémové volanie a odošle túto správu na vzdialený počítač. Operačný systém na serveri zhromaždí správu a odošle ju do modulu na serveri s názvom server stub. Potom serverový pahýľ zavolá postup na serveri. Nakoniec sa výsledky odošlú späť klientovi.
Výhodou použitia RPC je, že je nezávislé na detailoch siete. Programátor musí iba abstraktne špecifikovať, zatiaľ čo operačný systém bude dohliadať na podrobnosti internej siete. Toto uľahčuje programovanie a umožňuje RPC pracovať v akejkoľvek sieti napriek fyzickým a protokolovým rozdielom. Implementácie RPC sú prítomné vo všetkých bežných operačných systémoch, ako sú Unix, Linux, Windows a OS X. RPC je všeobecne jazykovo neutrálne, a preto obmedzuje dátové typy na najprimitívnejšie, pretože musia byť spoločné pre všetky jazyky. Prístup v RPC nie je objektovo orientovaný, ale je to tradičný procedurálny mechanizmus ako v C.
Čo je RMI?
RMI, čo je skratka pre Remote Method Invocation, je API (Application Programming Interface), ktoré implementuje RPC v jave na podporu objektovo orientovanej povahy. To umožňuje volanie metód Java na inom virtuálnom stroji Java nachádzajúcom sa na rovnakom alebo vzdialenom počítači. Obmedzením RMI je, že je možné vyvolať iba metódy Java, má to však výhodu v tom, že objekty je možné odovzdávať ako argumenty a návratové hodnoty. Keď sa vezme do úvahy výkon, RMI je pomalšie ako RPC z dôvodu zapojenia bytecode do Java Virtual Machine, ale RMI je veľmi programátorsky prívetivý a jeho použitie je veľmi jednoduché.
RMI používa zabudované bezpečnostné mechanizmy v Jave a tiež poskytuje továreň na sokety, ktorá umožňuje použitie vlastných protokolov transportnej vrstvy iných ako TCP. RMI navyše poskytuje metódy na obchádzanie brán firewall. Kroky, ktoré sa vyskytujú v RMI, sú podobné ako v prípade RPC. Implementácia RMI sa stará o detaily vnútornej siete, kde sa ich programátor nemusí obávať.
Aký je rozdiel medzi RPC a RMI?
• RPC je jazykovo neutrálne, zatiaľ čo RMI je obmedzené na Javu.
• RPC je procedurálne ako v C, ale RMI je objektovo orientované.
• RPC podporuje iba primitívne dátové typy, zatiaľ čo RMI umožňuje objekty odovzdávať ako argumenty a návratové hodnoty. Pri použití RPC musí programátor rozdeliť všetky zložené objekty na primitívne dátové typy.
• RMI sa dá ľahko programovať pomocou tohto RPC.
• RMI je pomalšie ako RPC, pretože RMI zahŕňa vykonávanie bajtového kódu Java.
• RMI umožňuje použitie návrhových vzorov kvôli objektovo orientovanej povahe, zatiaľ čo RPC túto schopnosť nemá.
Zhrnutie:
RPC vs RMI
RPC je jazykovo neutrálny mechanizmus, ktorý umožňuje volanie procedúry na vzdialenom počítači. Jazykovo neutrálna funkcia však obmedzuje dátové typy, ktoré sa odovzdávajú ako argumenty, a vracia hodnoty primitívnym typom. RMI je implementácia RPC v Jave a podporuje tiež odovzdávanie objektov, čo uľahčuje život programátora. Výhodou RMI je podpora návrhu zameraného na objekt, ale obmedzenie na Javu je nevýhodou.
Obrázky so zdvorilosťou: