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 jazyku Java. RPC je jazykovo neutrálne, ale podporuje iba primitívne dátové typy, ktoré sa majú odovzdať. Na druhej strane, RMI je obmedzené na Java, ale umožňuje prechod objektov. RPC sa riadi tradičnými procesnými jazykovými konštrukciami, zatiaľ čo RMI podporuje objektovo orientovaný dizajn.
Čo je RPC?
RPC, čo je skratka pre Remote Procedure Call, je typ medziprocesovej komunikácie. To umožňuje volanie funkcie v inom procese spustenom na lokálnom počítači alebo vzdialenom počítači. Tento koncept sa objavil už dávno v roku 1980, ale prvá slávna implementácia bola videná v Unixe.
RPC zahŕňa niekoľko krokov. Klient vykoná volanie procedúry na lokálnom počítači ako zvyčajne. Modul nazývaný klient stub zhromaždí argumenty a vytvorí správu a odošle ju operačnému systému, Operačný systém vykoná systémové volanie a odošle túto správu vzdialenému počítaču. Operačný systém na serveri zhromaždí správu a odovzdá ju modulu na serveri s názvom server stub. Potom server stub zavolá procedúru na serveri. Nakoniec sa výsledky odošlú späť klientovi.
Výhodou používania RPC je, že je nezávislé od detailov siete. Programátor musí špecifikovať iba abstraktným spôsobom, zatiaľ čo operačný systém sa postará o detaily internej siete. To uľahčuje programovanie a umožňuje RPC pracovať v akejkoľvek sieti napriek fyzickým rozdielom a rozdielom v protokoloch. 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 vo všeobecnosti jazykovo neutrálne, a preto obmedzuje typy údajov na tie 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 jazyku Java na podporu objektovo orientovaného charakteru. To umožňuje volanie metód Java na inom stroji Java Virtual, ktorý sa nachádza na rovnakom počítači alebo na vzdialenom počítači. Obmedzenie RMI je v tom, že je možné vyvolať iba metódy Java, ale to má tú výhodu, že objekty môžu byť odovzdané ako argumenty a návratové hodnoty. Keď vezmeme do úvahy výkon, RMI je pomalší ako RPC kvôli zapojeniu bajtkódu na Java Virtual Machine, ale RMI je veľmi priateľský k programátorom a je veľmi jednoduchý na používanie.
RMI používa vstavané bezpečnostné mechanizmy v jazyku Java a tiež poskytuje továreň soketov, ktorá umožňuje používanie protokolov transportnej vrstvy iných ako TCP. RMI navyše poskytuje metódy na obídenie firewallov. Kroky, ktoré sa vyskytujú v RMI, sú podobné ako RPC. Implementácia RMI sa stará o detaily internej siete, kde sa o ne programátor nemusí starať.
Aký je rozdiel medzi RPC a RMI?
• RPC je jazykovo neutrálne, zatiaľ čo RMI je obmedzené na Java.
• 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 odovzdávanie objektov ako argumentov a návratových hodnôt. Pri používaní RPC musí programátor rozdeliť všetky zložené objekty na primitívne dátové typy.
• RMI je jednoduché naprogramovať RPC.
• RMI je pomalšie ako RPC, pretože RMI zahŕňa spustenie bajtkódu java.
• RMI umožňuje použitie návrhových vzorov vďaka 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 typy údajov, ktoré sa odovzdávajú ako argumenty a návratové hodnoty na primitívne typy. RMI je implementácia RPC v jazyku Java a podporuje aj odovzdávanie objektov, čím uľahčuje život programátora. Výhodou RMI je podpora objektovo orientovaného dizajnu, nevýhodou je však obmedzenie na Javu.