1. Remote Procedure Call (RPC)
Remote Procedure Call (RPC) memungkinkan suatu komponen aplikasi pada
suatu komputer dapat menggunakan komponen (bisa berupa function) yang dimiliki
pada komputer lainnya. Dengan mekanisme seperti ini komponen aplikasi pada suatu
komputer tidaklah harus memiliki sendiri keseluruhan fungsionalitas yang dibutuhkan,
karena dapat menggunakan fungsionalitas yang dimiliki oleh komponen aplikasi
komputer lainya yang digunakan secara Remote.
RPC menyembunyikan detail implementasi komunikasi jaringan seperti
penentuan protokol komunikasi, port yang digunakan, streaming serta hal-halyang
harus dispesifikasikan jika dilakukan pengembangan aplikasi menggunakanlow level
Socket / Socket. Contoh sederhana untuk menganalogikan definisi RPCyaitu terdapat
2 buah komputer,server dan client di dalam suatu share network yang ditunjukan seperti
gambar di bawah ini :
Gambar 1.Simple invoking methods
Pada gambar diatas dapat dilihat bahwa di sisi server terdapat sebuah
services(method) untuk menghitung luas persegi yang memiliki 2 inputan parameter.
Ada sebuahClient yang membutuhkan suatu method untuk menghitung luas persegi
dapat menggunakanmethod LuasPersegi(float p, float l)yang terdapat di sisi
server.Client mengirimkan parameter (passing parameter) ke server,Server akan
melakukan perhitungan kemudian hasil perhitungantersebut akan di kirimkan lagi
kepada Client. Sekali lagi contoh diatas hanyalahkasus sederhana yang dirasakan dapat
memberikan gambaran mengenai ide dasar dari penggunaan teknologi Remote
Procedure Call.
1.1.Model dan Arsitektur RPC
RPC merupakan teknologi yang digunakan untuk membangun komunikasiantar
proses / Inter Process Communication(IPC) yang terdiri dari beberapa stack komponen
yang masing-masing memiliki fungsionalitas yang spesifik. Dibawahini merupakan
arsitektur Remote Procedure Call yang terdiri dari beberapakomponen pembangun antar
lain :Client, Client Stub, Server Stub,dan Server.
Gambar 2. Arsitektur RPC
Berikut ini merupakan fungsionalitas spesifik setiap komponen pembangun RPC.
a. Client Application
Merupakan aplikasi pemanggil procedure yang ada pada Server.Client
memanggil suatu method yang dibutuhkan beserta denganmengirimkan parameter
(passing parameter) kepada Server.
b. Client Stub
Merupakan komponen yang bertanggung jawab atas pembentukan paket request
(marshaling ) yang disertai dengan procedure name atau proceduID yang merupakan
nama atau ID dari method yang direquest oleh Client, serta melakukan pembongkaran
paket (unmarshaling) terhadap reply dari Server.
c. Server Stub
Merupakan komponen yang bertanggung jawab atas penerimaan paket dari
Client, melakukan pembongkaran terhadap paket tersebut (unmarshaling ), melakukan
pemanggilan terhadap method Yang diinginkan Client, serta melakukan marshaling
terhadap hasil eksekusi Server yang akan dikirimkan ke Client.
d. Server Application
Merupakan aplikasi penyedia services (method) yang dibutuhkan oleh Client.
Server menerima request dari Client dan melakukan pengolahan sesuai dengan behavio
dari method tersebut dan parameter yang diberikan oleh Client.
1.2.Komunikasi RPC
Alur komunikasi Remote Procedure Call dapat diilustrasikan dimana ada sebuah
client yang hendak menggunakan method yang ada di sisi server.Client akan me-request
suatu method dengan mengirimkan parameter yang dibutuhkan oleh remote method dan
dikemas menjadi sebuah paket (marshaling) yang dilakukan oleh client stub yang kemudian
akan dikirimkan ke server. Di sisiserver, paket yang dikirimkan oleh client akan diterima
oleh Server Stub yangkemudian dilakukan pembongkaran (unmarshaling) terhadap paket
tersebut dan menentukan procedure atau method yang akan mengeksekusi request
tersebut.Server Stub dapat menentukan method untuk mengeksekusi request dari Client
karena di dalam paket request yang diberikan oleh Client terdapat procedure name atau
procedure id darimethod yang di-request.
Setelah parameter diterima oleh method yang dimaksud, maka Server akan
melakukan eksekusi method sesuai dengan behavior -nya. Setelah selesai,Server akan
mengirimkan hasil eksekusi kepadaClient yang sebelumnya diserahkan keServer Stub
untuk proses pemaketan (marshaling).Server Stubmengirmkan hasiltersebut ke Client
dimana di sisiClient akan diterima oleh Client Stub.Client Stub akan melakukanun
marshaling terdadap reply dari Server dan memberikanya kepada Client.Berikut ini
merupakan gambar model komunikasi yang terjalin antara Server dan Client yang
menggunakan paradigm Remote Procedure Call.
Gambar 3.RPC communication model
Dapat dilihat pada gambar diatas bahwa Client dalam kondisi idle
ataumenunggu setelah mengirimkan request ke Server sampai menerima reply dari
Server. Oleh sebab itu model komunikasi RPC yang ditunjukan pada gambar diatas dan
diilustrasikan sebelumnya merupakan model komunikasi Synchronous Remote
Procedure Call.
Berikut ini merupakan gambaran dari arsitektur RPC yang digabungkandengan
contoh penghitungan luas persegi pada contoh Simple Invoking Method pada halaman
sebelumnya. Dapat dilihat pada gambar dibawah ini bahwa jika Client hendak
menggunakan method yang ada pada Server , maka Client Stub memaketkan request
dimana pada paket tersebut disertakan method name yaitu“LuasPersegi” dan parameter
yang dibutuhkan oleh method tersebut yaitu parameter p yang berarti panjang dan
parameter l yang berarti lebar.
Gambar 4.Model pemaketan request oleh Stub
Paket request dariClient akan ditransmisikan melalui Network Media yang tentu
saja sebelumnya melalaui OS (Operating System). Kalo kitamenginginkan bentuk
paket data yang ditransmisikan melalui media transmisi (Network Media) tentu saja
paket data tersebut tidak bebentuk seperti padagambar diatas, melainkan berupa deretan
bit yang terdiri dari bit 0 dan 1 yang pada media transmisi direpresentasikan dengan
perbedaan tegangan listrik.
Gambar 11. Bit-bit paket data
Untuk sekedar mengingatkan tentang pembungkusan paket data yang akan
ditransmisikan melalui media transmisi bahwa pada setiap layer akan ditambahkan
header tersendiri. Seperti pada gambar diatas bahwa paket data terdiri dari header yang
merupakan set dari beberapa informasi dari setiap layer, paket data itu sendiri, dan
trailer.
1.3.Langkah-Langkah dalam RPC
Gambar 5.Langkah-langkah dalam RPC
Langkah-langkah tersebut antara lain :
1. Prosedur client memanggilclient 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 tersebut 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
1.4. Kelebihan dan Kekurangan RPC
1.4.1. Kelebihan RPC :
1. Mudah digunakan karena pemanggilan remote procedure tidak jauh berbeda
dibandingkan pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi
pada software logic, tidak perlumemikirkan low level details, seperti socket,
marshalling &unmarshalling.
2. Robust atau Sempurna karena RPC telah banyak digunakan dlm pengembangan
mission- critical application yg memerlukan scalability, fault tolerance, dan reliability.
3.Memanggil fungsi yang berada di komputer lain.
4.Komunikasi di atas jaringan.
5.Marshal data (Sebagai pusat data).
1.4.2. Kekurangan RPC
1.Tidak fleksibel terhadap perubahan. Dikarenakan:
a.Hubungan yang statis antaraclient dan server saat sedang berjalan/ bekerja
b.Prosedur/struktur programming yang sudah ketinggalan jamandibandingkan OOP.
2.Kurangnya location transparency, karena:
a.Hanya melakukanpass by value, bukan pass by reference.
b.Komunikasi hanya antara 1 client dan 1 server (one-to-one at atime).
c.Komunikasi antara 1client dan beberapa server memerlukan beberapa koneksi yang
terpisah.
3.Tipe-tipe data terbatas.
4.Cenderung memakai Interface Definition Language (IDL).
2. RMI (Remote Method Invocation)
RMI adalah salah satu bagian dari J2SE yang digunakan untuk membangun
aplikasi terdistribusi menggunakan bahasa Java.RMI adalah kumpulan kelas dalam
Java yang digunakan untuk menangani pemanggilan (invocation) method secara jarak
jauh (remote) dalam suatu jaringan atau Internet,Idenya memisahkan obyek- obyek
secara terdistribusi dalam mesin-mesin yang berbeda.
RMI menggunakan prinsip pemrograman berorientasi obyek dimana obyek satu
dapat saling berkomunikasi dengan obyek lainnya,Untuk membangun aplikasi RMI
dibutuhkan Interface. RMI terdiri dari RMI client dan server.
RMI server biasanya akan membuat beberapa remote obyek dan referensi-nya
yang dapat diakses oleh RMI client menggunakan suatu URL dan menunggu RMI
client meminta ke server. Sedangkan RMI client akan membuat koneksi ke server dan
meminta pemanggilan ke beberapa remote obyek berdasarkan referensi yang
diterimanya. RMI client akan menggunakan remote obyek sebagai lokal obyek.
2.1. Arsitektur RMI
Gambar 6. Arsitektur RMI
RMI Server akan mendaftarkan remote obyeknya ke RMI Registry melalui bind dengan
nama unik. RMI Client yang akan melakukan suatu pemanggilan method dari remote obyek,
harus meminta referensi obyek ke RMI Registry berdasarkan nama kelas obyek tersebut.
Dalam RMI harus ada pendefinisian interface (behaviour) dan implementasi interface
(berupa kelas) , RMI hanya dimiliki oleh bahasa Java saja.
2.2. Teknologi Terkait dengan RMI
•RPC(“Remote Procedure Calls”)
– Developed by Sun
– Platform-specific
•CORBA (“Common Object Request Broker Architecture”)
– Developed by OMG
– Access to non-Java objects (as well as Java)
•DCOM(“Distributed Common Object Model”)
– Developed by Microsoft
– Access to Win32 objects
•LDAP (“Lightweight Directory Access Protocol”)
– Finding resources on a network
Bagian Arsitektur RMI
•Transport Layer
•Remote Reference Layer
•Stubdan Skeleton Layer
•Remote Objects
–Ada pada server
–Diakses seperti layaknya obyek local
2.3. RMI Layers
1. Stub & Skeleton Merupakan interface antara aplikasi dan RMI system. Stub bertindak
sebagai client side proxy sedangkan Skeleton bertindak sebagai server side proxy.
Selama remote invocation stub bertanggung jawab untuk:
–Meminta lokasi remote server obyek pada remote reference layer
–Marshalling : merangkaian argumen pada output stream –Memberitahu remote
reference layer bahwa semua data parameter telah terkirim, sehingga pemanggilan
method sesungguhnya dapat dilakukan oleh server
–Unmarshalling: rangkaian nilai yang diterima dari remote obyek
–Memberitahu remote reference layer bahwa pemanggilan telah lengkap
Skeleton bertanggung jawab untuk:
–Marshalling: nilai kembalian atau exception kepada stub client
–Mengirimkan panggilan method pada server object sesungguhnya.
2. Remote Reference
Remote reference berguna untuk Menemukan lokasi remote obyek,Membuat panggilan
point to point dan rekoneksi secara otomatis, Mengaktifkan proses server baru jika
belum pernah diaktifkan sebelumnya serta Memelihara replikasi (panggandaan) jika
diperlukan.
3. Transport Layer
Transport Layer berguna sebagai Memelihara tabel yang berisi obyek-obyek pada JVM
dan Membuat dan memelihara dua koneksi antara 2 JVM menggunakan TCP/IP.
Transport Layer hanya tersedia di level virtual machine (pada java.net). Menerima dan
merespon setiap pemanggilan dari atau ke server dan client.
4. RMI Registry
Tool RMI registry menggunakan rmiregistry dengan port default 1099. Ketika server
membuat remote method dengan cara membuat lokal obyek yang menerapkan method
dari interface tersebut, maka obyek akan diekspor ke RMI, dan diregisterkan ke RMI
Registry dengan public name. RMI Registry akan membuat layanan listen yang
menunggu permintaan dari client.
Di sisi Client, RMI Registry diakses menggunakan static class naming. Class ini
menyediakan metode lookup() untuk melakukan query ke registry. Metode lookup
menerima URL yang menyatakan nama server dan nama service yang diminta dan
kemudian mengembalikan remote reference obyek yang diminta.
Format URL RMI: rmi://<hostName>[:<name_service_port>]/<service_name>, RMI
registry proses yang berjalan pada host machine.
2.4. 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 dikirimsebagai tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan
server yang dapat dilihat oleh client. Client programmer harus dapat mengetahuimethods apa
yang disediakan server dan bagaimana memanggilnya 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 membuat stub danskeletons.
5.Memulai (start) RMI registry.
6.Menjalankan server dan client.
2.5. Kelebihan dan Kekurangan RMI
Kelebihan RMI
RMI mempunyai beberapa kelebihan yaitu kecepatan dan performa,
Kelemahan RMI
RMI mempunyai kekurangan dalam interopability (kemampuan dalam melakukan operasi
antar platform), kekurangan ini bisa dijelaskan karena RMI tidak memakai suatu standar yang
resmi dalam protokol maupun skema data yang dipakai. Sehingga dalam penerapannya RMI
yang dibuat dalam bahasa java hanya bisa dipanggil oleh aplikasi java. Demikian juga dengan
RMI yang dibuat dengan .Net (remoting) hanya bisa dipanggil dari aplikasi .Net.
Top Related