Kitas didelis skirtumas tarp šių dviejų yra tas, kad parametrai, perduoti nuotolinėms procedūroms, susideda iš paprastų duomenų struktūrų . Kita vertus, nuotoliniam metodui perduoti parametrai susideda iš objektų .
Palyginimo diagrama
Palyginimo pagrindas | RPC | RMI |
---|---|---|
Palaiko | Procedūrinis programavimas | Objektinis programavimas |
Parametrai | Paprastosios duomenų struktūros perduodamos nuotolinėms procedūroms. | Objektai perduodami nuotoliniams metodams. |
Efektyvumas | Mažesnis nei RMI | Daugiau nei RPC ir remiami šiuolaikinio programavimo metodai (ty į objektą orientuotos paradigmos) |
Pridėtinės išlaidos | Daugiau | Mažiau palyginti |
In-out parametrai yra privalomi. | Taip | Nebūtinai |
Supaprastintas programavimas | Aukšta | žemas |
RPC apibrėžimas
„Remote Procedure Call“ („RPC“) yra programavimo kalbos funkcija, sukurta paskirstytojo skaičiavimo ir vietinių procedūrų kvietimų semantikos pagrindu. Tai yra labiausiai paplitusios nuotolinio aptarnavimo formos ir buvo sukurta kaip būdas sutrumpinti procedūros skambučių mechanizmą, naudojamą tarp tinklų sujungtų sistemų. Jis yra panašus į IPC mechanizmą, kur operacinė sistema leidžia procesams valdyti bendrus duomenis ir tvarkyti aplinką, kurioje skirtingi procesai vyksta atskirose sistemose ir būtinai reikalingi pranešimams.
Suprasime, kaip RPC įgyvendinama per nurodytus veiksmus:
- Kliento procesas kviečia kliento stuburą su parametrais, o jo vykdymas sustabdomas, kol skambutis bus baigtas.
- Tuomet parametrai verčiami į mašiną nepriklausomą formą, surenkant per kliento stuburą. Tada parengiamas pranešimas, kuriame pateikiami parametrų vaizdai.
- Norėdami rasti svetainės tapatybę, su kuria klientas nesutinka su vardų serveriu, kuriame yra nuotolinė procedūra.
- Naudojant blokavimo protokolą, kliento stuburas siunčia pranešimą į svetainę, kurioje yra nuotolinio procedūros skambutis. Šis žingsnis sustabdo klientų stuburą, kol jis gauna atsakymą.
- Serverio svetainė gauna pranešimą, išsiųstą iš kliento pusės, ir konvertuoja jį į kompiuterio formatą.
- Dabar serverio stuburas atlieka ryšį su serverio procedūra kartu su parametrais, o serverio stuburas nutraukiamas, kol procedūra bus baigta.
- Serverio procedūra grąžina sugeneruotus rezultatus į serverio stuburą, o rezultatai paverčiami nepriklausomai nuo kompiuterio formato serverio stube ir sukuria pranešimą su rezultatais.
- Rezultatų pranešimas siunčiamas į kliento stuburą, kuris yra konvertuojamas į kompiuterio formą, tinkantį kliento stubui.
- Pagaliau klientas, „stub“, grąžina rezultatus kliento procesui.
RMI apibrėžimas
Nuotolinio metodo įvedimas (RMI) yra panašus į RPC, bet yra kalbų specifinis ir java bruožas. Sriegiui leidžiama skambinti į nuotolinį objektą. Siekiant išlaikyti skaidrumą kliento ir serverio pusėje, jis įgyvendina nuotolinį objektą, naudodamas stubus ir skeletus. Stubas yra su klientu ir nuotolinio objekto atžvilgiu jis veikia kaip tarpinis.
Kai klientas skambina nuotoliniu būdu, vadinamas nuotolinio metodo stuburas. Kliento stuburas yra atsakingas už siuntinio sukūrimą ir siuntimą, kuriame yra metodo pavadinimas ir surinkti parametrai, ir skeletas yra atsakingas už siuntinio priėmimą.
„Java“ parametrai perduodami metodams ir grąžinami kaip nuoroda. Tai gali būti varginantis RMI paslaugai, nes ne visi objektai yra galimi nuotoliniai metodai. Taigi, ji turi nustatyti, kas galėtų būti priimta kaip nuoroda ir kuri negalėjo.
„Java“ naudoja procesą, pavadintą serializavimu, kai objektai perduodami kaip vertė. Nuotolinis objektas lokalizuojamas pagal vertę. Jis taip pat gali perduoti objektą pagal nuorodą, perduodamas nuotolinę nuorodą į objektą kartu su stubo klasės URL. Perduoti pagal nuorodą apriboja nuotolinio objekto stuburą.
Pagrindiniai RPC ir RMI skirtumai
- RPC palaiko procedūrinio programavimo paradigmas, todėl yra C, o RMI palaiko į objektą orientuotas programavimo paradigmas ir yra java.
- Nuotolinėms procedūroms RPC perduodami parametrai yra įprastos duomenų struktūros. Priešingai, RMI perkelia objektus kaip parametrą į nuotolinį metodą.
- RPC gali būti laikoma senesne RMI versija, ir ji naudojama programavimo kalbomis, kurios palaiko procedūrinį programavimą, ir ji gali naudoti tik metodą, pagal kurį vertinama pagal vertę. Priešingai, RMI įrenginys sukurtas remiantis šiuolaikiniu programavimo metodu, kuris galėtų būti naudojamas pagal vertę arba nuorodą. Kitas RMI privalumas yra tas, kad parametrai, perduoti pagal nuorodą, gali būti pakeisti.
- RPC protokolas sukuria daugiau pridėtinių išlaidų nei RMI.
- RPC perduoti parametrai turi būti „ in-out “, o tai reiškia, kad procedūra, perduodama procedūrai ir išėjimo vertei, turi būti vienodi. Priešingai, nėra prievartos perduoti „ in-out “ parametrus RMI.
- RPC nuorodos negalėjo būti tikėtinos, nes abu procesai turi skirtingą adresų erdvę, tačiau tai įmanoma RMI atveju.
Išvada
Tiek RPC, tiek RMI naudojasi tuo pačiu tikslu, tačiau vartojami skirtingose programavimo paradigmose, todėl turi skirtingus bruožus.