Základním rozdílem mezi RPC a RMI je to, že RPC je mechanismus, který umožňuje volání procedury na vzdáleném počítači, zatímco RMI je implementace RPC v java. RPC je jazykově neutrální, ale podporuje pouze primitivní datové typy, které mají být předávány. Na druhé straně je RMI omezeno na Java, ale umožňuje předávání objektů. RPC sleduje tradiční procedurální jazykové konstrukce, zatímco RMI podporuje objektově orientovaný návrh.
RPC, což je zkratka pro vzdálené volání procedur, je typem meziprocesové komunikace. To umožňuje volat funkci v jiném procesu spuštěném v místním počítači nebo vzdáleném počítači. Tento koncept se objevil už dávno v roce 1980, ale první slavná implementace byla vidět v Unixu.
RPC zahrnuje několik kroků. Klient provádí volání procedury v místním počítači jako obvykle. Modul nazvaný klient stub shromažďuje argumenty a vytváří zprávu a předává operačnímu systému. Operační systém provede systémové volání a odešle tuto zprávu do vzdáleného počítače. Operační systém na serveru sbírá zprávu a předá modulu na serveru zvaném server stub. Potom server stub volá proceduru na serveru. Nakonec jsou výsledky odeslány zpět klientovi.
Výhodou použití RPC je to, že je nezávislé na detailech sítě. Programátor musí specifikovat abstraktním způsobem, zatímco operační systém bude pečovat o detaily vnitřní sítě. To usnadňuje programování a umožňuje RPC pracovat v jakékoli síti, navzdory fyzickým a protokolovým rozdílům. Implementace RPC jsou přítomny ve všech běžných operačních systémech, jako jsou Unix, Linux, Windows a OS X. RPC je obecně jazykově neutrální, proto omezuje datové typy na ty nejprimitivnější, protože musí být společné pro všechny jazyky. Přístup v RPC není objektově orientovaný, ale je to tradiční procedurální mechanismus jako v C.
RMI, což je zkratka pro Remote Method Invocation, je API (Application Programming Interface), které implementuje RPC v javě na podporu objektově orientované povahy. To umožňuje volání metod Java na jiném Java Virtual machine umístěném na stejném nebo vzdáleném počítači. Omezení RMI spočívá v tom, že lze vyvolat pouze metody Java, ale to má tu výhodu, že objekty lze předávat jako argumenty a návratové hodnoty. Když je výkon považován za RMI je pomalejší než RPC kvůli zapojení bytecode na Java Virtual Machine, ale RMI je velmi programátorsky přívětivý a jeho použití je velmi snadné.
RMI používá vestavěné bezpečnostní mechanismy v Javě a také poskytuje soketovou továrnu, která umožňuje použití vlastních protokolů transportní vrstvy jiných než TCP. Navíc RMI poskytuje metody obcházení firewallů. Kroky, které se vyskytují v RMI, jsou podobné RPC. Implementace RMI se stará o detaily vnitřní sítě, kde se programátor o ně nemusí starat.
• RPC je jazykově neutrální, zatímco RMI je omezeno na Javu.
• RPC je procedurální jako v C, ale RMI je objektově orientovaný.
• RPC podporuje pouze primitivní datové typy, zatímco RMI umožňuje předávání objektů jako argumentů a návratových hodnot. Při použití RPC musí programátor rozdělit všechny složené objekty na primitivní datové typy.
• Program RMI lze snadno naprogramovat.
• RMI je pomalejší než RPC, protože RMI zahrnuje provádění java bytecode.
• RMI umožňuje použití návrhových vzorů kvůli objektově orientované povaze, zatímco RPC tuto schopnost nemá.
Souhrn:
RPC je jazykově neutrální mechanismus, který umožňuje volání procedury na vzdáleném počítači. Jazykově neutrální funkce však omezuje datové typy, které jsou předávány jako argumenty a vracejí hodnoty na primitivní typy. RMI je implementace RPC v Javě a podporuje také předávání objektů, což usnadňuje život programátora. Výhodou RMI je podpora objektově orientovaného designu, ale nevýhodou je omezení na Java.
Obrázky se svolením: