Skirtumas tarp RPC ir RMI

RPC vs RMI
 

Pagrindinis skirtumas tarp RPC ir RMI yra tas, kad RPC yra mechanizmas, leidžiantis iškviesti procedūrą nuotoliniame kompiuteryje, o RMI yra RPC įgyvendinimas Java. RPC yra kalba neutrali, tačiau palaiko tik primityvius perduodamus duomenų tipus. Kita vertus, RMI apsiriboja „Java“, tačiau leidžia perduoti objektus. RPC vadovaujasi tradicinėmis procedūrinės kalbos konstrukcijomis, o RMI palaiko į objektą orientuotą dizainą.

Kas yra RPC?

RPC, kuris reiškia „Remote Procedure Call“, yra tarpprocesinio ryšio rūšis. Tai leidžia paskambinti funkcijai kitame procese, vykdomame vietiniame ar nuotoliniame kompiuteryje. Ši koncepcija atsirado labai seniai, 1980 m., Tačiau pirmasis garsus įgyvendinimas buvo pastebėtas Unix.

RPC apima kelis etapus. Kaip įprasta, klientas procedūrą iškviečia vietiniame kompiuteryje. Modulis, vadinamas kliento stuburu, surenka argumentus ir sukuria pranešimą bei perduoda jį operacinei sistemai. Operacinė sistema sušaukia sistemą ir siunčia šį pranešimą į nuotolinį kompiuterį. Operacinė sistema serveryje renka pranešimą ir perduoda serverio moduliui, vadinamam serverio stuburu. Tada serverio strypas iškviečia procedūrą serveryje. Galiausiai rezultatai grąžinami klientui.

RPC naudojimo pranašumas yra tas, kad jis nepriklauso nuo tinklo detalių. Programuotojas tiesiog turi nurodyti abstrakčiai, o operacinė sistema prižiūrės vidinio tinklo detales. Taigi tai palengvina programavimą ir leidžia RPC veikti bet kuriame tinkle, nepaisant fizinių ir protokolų skirtumų. RPC diegimai yra visose pagrindinėse operacinėse sistemose, tokiose kaip „Unix“, „Linux“, „Windows“ ir „OS X“. RPC paprastai yra kalbų atžvilgiu neutrali, taigi ji riboja duomenų tipus iki pačių primityviausių, nes jie turi būti bendri visoms kalboms. RPC metodas nėra orientuotas į objektą, tačiau tai yra tradicinis procedūrinis mechanizmas, kaip C atveju.

Kas yra RMI?

RMI, reiškiantis nuotolinį metodų iškvietimą, yra API (taikomojo programavimo sąsaja), įgyvendinanti RPC „Java“ programoje, kad būtų palaikomas objekto orientuotas pobūdis. Tai leidžia skambinti „Java“ metodais į kitą „Java“ virtualią mašiną, esančią tame pačiame ar nuotoliniame kompiuteryje. RMI apribojimas yra tas, kad galima remtis tik „Java“ metodais, tačiau tai suteikia pranašumą, kad objektai gali būti perduodami kaip argumentai ir grąžinimo reikšmės. Kai laikoma, kad RMI yra lėtesnis nei RPC dėl baitinių kodų įtraukimo į „Java“ virtualią mašiną, tačiau RMI yra labai palankus programuotojams ir juo labai lengva naudotis.

RMI naudoja „Java“ įmontuotus saugos mechanizmus ir taip pat suteikia lizdo gamyklą, leidžiančią naudoti ne TCP pasirinktinius transportavimo sluoksnių protokolus. Be to, RMI pateikia metodus, kaip apeiti ugniasienes. Žingsniai, kurie vyksta RMI, yra panašūs į RPC. Įdiegus RMI, atsižvelgiama į vidinio tinklo detales, kai programuotojui nereikia dėl jų jaudintis.

Kuo skiriasi RPC nuo RMI?

• RPC yra neutrali kalba, o RMI apsiriboja „Java“.

• RPC yra procedūrinis, kaip ir C, tačiau RMI yra orientuotas į objektą.

• RPC palaiko tik primityvius duomenų tipus, o RMI leidžia perduoti objektus kaip argumentus ir grąžinti reikšmes. Naudodamas RPC, programuotojas turi suskaidyti visus sudėtinius objektus į primityvius duomenų tipus.

• RMI lengva programuoti tą RPC.

• RMI yra lėtesnis nei RPC, nes RMI apima „Java“ baitų kodo vykdymą.

• RMI leidžia naudoti projektavimo modelius dėl objekto orientuoto pobūdžio, o RPC neturi šios galimybės.

Santrauka:

RPC vs RMI

RPC yra kalba neutralus mechanizmas, leidžiantis iškviesti procedūrą nuotoliniame kompiuteryje. Tačiau kalbos neutralus bruožas riboja duomenų tipus, kurie perduodami kaip argumentai, ir grąžina reikšmes į primityvius tipus. RMI yra RPC diegimas „Java“ ir palaiko objektų praėjimą, taip palengvindamas programuotojo gyvenimą. RMI pranašumas yra objekto orientuotas projektavimo palaikymas, tačiau apsiribojimas „Java“ yra trūkumas.

Vaizdai maloniai:

  1. CAPS verslo sinchroninis ir asinchroninis RPC (CC BY-SA 3.0)