Definisi RPC
Remote
Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk
mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan
ini sebuah server harus menyediakan layanan remote procedure. Pendekatan yang
dilakuan adalah sebuah server membuka socket, lalu menunggu client yang meminta
prosedur yang disediakan oleh server. Bila client tidak tahu harus menghubungi
port yang mana, client bisa me- request kepada sebuah matchmaker pada sebuah
RPC port yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh
prosedur yang diminta client.
RPC
masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma
procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak
remote procedure. RPC menggunakan socket untuk berkomunikasi dengan proses
lainnya. Pada sistem seperti SUN, RPC secara default sudah ter- install kedalam
sistemnya,
Implementasi RPC
Untuk
proses nya kurang lebih sama dengan RMI. Kalau RMI kita mengenal proxy dan
skeleton, pada RPC dikenal dengan Stub (Client stub dan Server stub)
Gambar
Ilustrasi Implementasi RPC
Remote
Reference Modul dan Communication Modul berada pada tatanan sistem operasi.
Contoh implementasi adalah
Sun Microsystems Open Network Computing (ONC) : RPC specification, XDR
(eXternal Data Representation) standard, UDP atau TCP transport protocol. Xerox
Courier : RPC model, Data representation standard, XNS (Xerox Network
Systems) SPP (Sequenced
Packet Protocol) sbg transport protocol, Apollo s Network Computing
Architecture (NCA), RPC protocol, NDR (Network Data Representation).
Cara Kerja RPC
Tiap
prosedur yang dipanggil dalam RPC, maka proses ini harus berkoneksi dengan
server remote dengan mengirimkan semua parameter yang dibutuhkan, menunggu
balasan dari server dan melakukan proses kemudian selesai. Proses di atas
disebut juga dengan stub pada sisi klien. Sedangkan Stub pada sisi server
adalah proses menunggu tiap message yang berisi permintaan mengenai prosedur
tertentu.
Diagram
diatas memberikan gambaran mengenai flow dari eksekusi dalam proses RPC.
Berikut ini adalah diagram yang akan menjelaskan secara rinci mengenai proses
yang terjadipada klien dan server dalam eksekusi suatu prosedur RPC.
Penjelasan dari diagram
diatas :
- Klien memanggil prosedur stub lokal.
Prosedur Stub akan memberikan parametersuatu paket yang akan dikirim ke
jaringan. Proses ini disebut sebagai marshalling.
- Fungsi Network pada O/S (Operating system –
Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message.
- Kemudian Kernel ini akan mengirim message ke
sistem remote. Kondisi ini dapat berupa connectionless atau
connection-oriented.
- Stub pada sisi server akan melakukan proses
unmarshals pada paket yang dikirim pada network.
- Stub pada server kemudian mengeksekusi
prosedur panggilan lokal.
- Jika eksekusi prosedur ini telah selesai,
maka eksekusi diberikan kembali ke stub pada server.
- Stub server akan melakukan proses marshals
lagi dan mengirimkan message nilai balikan ( hasilnya ) kembali ke jaringan.
- Message ini akan dikirim kembali ke klien.
- Stub klien akan membaca message ini dengan
menggunakan fungsi pada jaringan.
- Proses unmarshalled kemudian dilakukan pada
message ini dan nilai balikan akan diambil untuk kemudian diproses pada proses
lokal.
Proses
diatas akan dilakukan berulang-ulang ( rekursif ) dalam pengeksekusian RPC
dalam suatu remote sistem. Contoh aplikasi untuk meremote pada teknik RPC
(Remote Procedure Call) adalah menggunakan putty untuk melakukan SSH.
Kelebihan dan Kekurangan pada
RPC
Kelebihan RPC
- Relatif
mudah digunakan
- Pemanggilan
remote procedure tidak jauh berbeda dibandingkan pemanggilan local
procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic,
tidak perlu memikirkan low level details seperti soket, marshalling dan
unmarshalling.
- Robust
(Sempurna)
- Sejak th
1980-an RPC telah banyak digunakan dalam pengembangan mission-critical
application yang memerlukan scalability, fault tolerance, dan reliability.
Kelemahan RPC
- Tidak
fleksibel terhadap perubahan
- Static
relationship between client & server at run-time.
- Berdasarkan
prosedural/structured programming yang sudah ketinggalan jaman
dibandingkan Object Oriented Proggraming
- Kurangnya
location transparency
- Misalnya
premrogram hanya boleh melakukan pass by value, bukan pass by reference.
- Komunikasi
hanya antara 1 klien & 1 server (one-to-one at a time).
·
Komunikasi antara 1 klien & beberapa
server memerlukan beberapa koneksi yang terpisah.