Perbedaan mendasar antara RPC dan RMI adalah bahwa RPC adalah suatu mekanisme yang memungkinkan pemanggilan suatu prosedur pada komputer jarak jauh sementara RMI adalah implementasi RPC di java. RPC adalah bahasa netral tetapi hanya mendukung tipe data primitif untuk diteruskan. Di sisi lain, RMI terbatas pada Java tetapi memungkinkan objek yang lewat. RPC mengikuti konstruksi bahasa prosedural tradisional sementara RMI mendukung desain berorientasi objek.
RPC, yang merupakan singkatan dari Remote Procedure Call, adalah jenis komunikasi antar-proses. Ini memungkinkan memanggil fungsi dalam proses lain yang berjalan di komputer lokal atau komputer jarak jauh. Konsep ini muncul sejak lama pada tahun 1980, tetapi implementasi terkenal pertama kali terlihat di Unix.
RPC melibatkan beberapa langkah. Klien melakukan panggilan prosedur pada komputer lokal seperti biasa. Modul yang disebut klien rintisan mengumpulkan argumen dan membuat pesan dan meneruskan ke sistem operasi, Sistem operasi melakukan panggilan sistem dan mengirim pesan ini ke komputer jarak jauh. Sistem operasi di server mengumpulkan pesan dan meneruskan ke modul di server yang disebut server stub. Kemudian server stub memanggil prosedur di server. Akhirnya, hasilnya dikirim kembali ke klien.
Keuntungan menggunakan RPC adalah tidak tergantung pada detail jaringan. Programmer hanya perlu menentukan secara abstrak sementara sistem operasi akan menangani rincian jaringan internal. Jadi ini membuat pemrograman lebih mudah dan memungkinkan RPC bekerja di jaringan apa pun terlepas dari perbedaan fisik dan protokol. Implementasi RPC hadir di semua sistem operasi utama seperti Unix, Linux, Windows dan OS X. RPC umumnya netral bahasa sehingga membatasi tipe data untuk yang paling primitif karena mereka harus umum untuk semua bahasa. Pendekatan dalam RPC tidak berorientasi objek, tetapi merupakan mekanisme prosedural tradisional seperti dalam C.
RMI, yang merupakan singkatan dari Remote Method Invocation, adalah API (Application Programming Interface) yang mengimplementasikan RPC di java untuk mendukung sifat berorientasi objek. Ini memungkinkan pemanggilan metode Java pada mesin Java Virtual lain yang berada di komputer yang sama atau yang jarak jauh. Keterbatasan RMI adalah bahwa hanya metode Java yang dapat dipanggil, tetapi ini dilengkapi dengan keuntungan bahwa objek dapat dilewatkan sebagai argumen dan mengembalikan nilai. Ketika kinerja dianggap RMI lebih lambat daripada RPC karena keterlibatan bytecode pada mesin Java Virtual, tetapi RMI sangat ramah programmer, dan sangat mudah digunakan.
RMI menggunakan mekanisme keamanan inbuilt di Jawa dan juga memberikan pabrik soket yang memungkinkan penggunaan protokol lapisan transport non-TCP kustom. Selain itu, RMI menyediakan metode untuk mem-bypass firewall. Langkah-langkah yang terjadi di RMI mirip dengan RPC. Implementasi RMI menjaga rincian jaringan internal di mana programmer tidak perlu khawatir tentang mereka.
• RPC netral bahasa sedangkan RMI terbatas pada Java.
• RPC bersifat prosedural seperti dalam C, tetapi RMI berorientasi objek.
• RPC hanya mendukung tipe data primitif sementara RMI memungkinkan objek dikirimkan sebagai argumen dan mengembalikan nilai. Saat menggunakan RPC, programmer harus membagi objek majemuk menjadi tipe data primitif.
• RMI mudah memprogram RPC itu.
• RMI lebih lambat dari RPC karena RMI melibatkan eksekusi bytecode java.
• RMI memungkinkan penggunaan pola desain karena sifat berorientasi objek sementara RPC tidak memiliki kemampuan ini.
Ringkasan:
RPC adalah mekanisme netral bahasa yang memungkinkan pemanggilan suatu prosedur pada komputer jarak jauh. Namun, fitur netral bahasa membatasi tipe data yang diteruskan sebagai argumen dan mengembalikan nilai ke tipe primitif. RMI adalah implementasi RPC di Java dan mendukung passing objek juga, membuat kehidupan programmer lebih mudah. Keuntungan dari RMI adalah dukungan desain berorientasi objek, tetapi keterbatasan untuk Java adalah kerugian.
Gambar: