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, biasanya RPC ini digunakan untuk administrasi
sistem. Sehingga seorang administrator jaringan dapat mengakses sistemnya dan
mengelola sistemnya dari mana saja, selama sistemnya terhubung ke
jaringan.
Kelebihan RPC:
1. 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 socket,
marshalling & unmarshalling.
2. Robust (Sempurna):
Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan
mission-critical application yg memerlukan scalability, fault tolerance, &
reliability.
Kekurangan RPC
1. Tidak fleksibel terhadap perubahan:
Static relationship between
client & server at run-time.
Berdasarkan prosedural/structured
programming yang sudah ketinggalan jaman
dibandingkan OOP.
Prinsip RPC dalam program Client-Server
Skema
RPC ini dilakukan juga pada proses-proses yang running di komputer berlainan
Sebelum
mekanisme RPC digunakan, data harus di-packaging ke dalam format transimisi.
Langkah ini dinamakan marshallin.
Proxy
bertanggung jawab untuk marshalling data, kemudian mengirimkan data dan meminta
instans dari komponen (remote)
Stub menerima
request, unmarshall data, dan memanggil method yang diminta.
Kemudian
proses mengembalikan nilai yang diinginkan
Langkah-langkah
dalam RPC
1. Prosedur
client memanggil client stub
2. Client
stub membuat pesan dan memanggil OS client
3. OS client
mengirim pesan ke OS server
4. OS server
memberikan pesan ke server stub
5. Server
stub meng-unpack parameter-parameter untuk memanggil server
6. Server
mengerjakan operasi, dan mengembalikan hasilnya ke server stub
7. Server
stub mem-pack hasil tsb dan memanggil OS server
8. OS server
mengirim pesan (hasil) ke OS client
9. OS client
memberikan pesan tersebut ke client stub
10. Client
stub meng-unpack hasil dan mengembalikan hasil tersebut ke client
Object
Remote
Meskipun
teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer, tapi
perkembangan yang terjadi di bidang pemrograman berorientasi objek akhirnya
menuntut kehadiran teknologi baru. Sederet teknologi akhirnya benar-benar
muncul, antara lain; RMI (Remote Method Invocation), CORBA (Common Object
Request Broker Architecture), dan SOAP (Simple Object Access Protocol).
Remote
Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote yang
lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma
pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan
kita untuk mengirim obyek sebagai parameter dari remote method. Dengan
dibolehkannya program Java memanggil method pada remote obyek, RMI membuat
pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
Aplikasi RMI
seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi
server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi
terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client
menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client
mendapatkan referensi remote ke satu atau lebih objek remote di server dan
menjalankan method dari objek tersebut.
RMI
menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan
informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi
objek terdistribusi.
Aplikasi
objek terdistribusi seringkali melakukan hal berikut:
•Melokasikan
objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk
mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote
dengan fasilitas penamaan RMI (naming facility) yaitu rmiregistry atau aplikasi
dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari
operasi normal.
•Berkomunikasi
dengan objek remote: Detail dari komunikasi antara objek remote ditangani oleh
RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java
standar.
•Memanggil
(load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil
(caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang
diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.
Ilustrasi
berikut menggambarkan aplikasi RMI terdistribusi yang menggunakan registry
untuk mendapatkan referensi ke objek remote. Server memanggil registry untuk
mengasosiasikan (mengikat) suatu nama dengan objek remote. Client mencari objek
remote dengan namanya pada registry server dan meng-invoke method dari objek.
Ilustrasi ini juga menunjukkan sistem RMI menggunakan Web server untuk
memanggil class bytecodes, dari server ke client dan dari client ke server,
untuk objek-objek yang diperlukan.
Langkah-Langkah Pembuatan Program dengan RMI
Dalam RMI, semua informasi tentang satu pelayanan server disediakan
dalam suatu definisi remote interface. Dengan melihat pada definisi interface,
seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh
server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai
tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik
methods yang disediakan server yang dapat dilihat oleh client. Client
programmer harus dapat langsung dengan melihat ke remote interface. Client
mendapatkan referensi ke remote object melalui RMI registry.
Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6
langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client
Sumber : Ayu Anggriani dkk., Tugas Kuliah Pengantar Sistem Terdistribusi, 2008.