REMOTE METHOD INVOCATION
Sistem
komputasi terdistribusi yang bekerja di banyak tempat mengharuskan beberapa
komputer untuk bisa berkomunikasi satu sama lain. Untuk komunikasi, bahasa Java
mendukung pemakaian socket yang sifatnya fleksibel dan mencukupi untuk
keperluan komunikasi umum. Tapi di sisi lain, untuk membuat socket, klien dan
server harus terhubung melalui protokol pada application level untuk
meng-encode dan men-decode data-data yang akan dikirimkan. Protokol itu sendiri
ternyata sulit untuk dibuat dan bisa menjadi rentan terhadap error.
Alternatif
lain dari socket adalah dengan menggunakan Remote Procedure Call (RPC),
yang mengabstraksi interface komunikasi ke level pemanggilan procedure.
Programmer tidak akan menangani socket secara langsung, dan seolah-olah
memanggil prosedur lokal, padahal argumen dari prosedur lokal tersebut
dipaketkan dan dikirimkan ke tujuan jarak jauh. Tapi RPC tidak bisa langsung
dipakai dalam sistem objek terdistribusi. Dalam sistem objek terdistribusi, diperlukan
komunikasi antara objek-objek yang ada di level program, yang berada dibanyak
tempat. Oleh karena itu, sistem objek terdistribusi memerlukan suatu Remote
Method Invocation (RMI). Pada sistem yang memakai RMI, sebuah objek lokal
yang dinamakan stub mengurus pemanggilan method pada objek jarak jauh.
- DEFINISI
RMI adalah sebuah tekhnik pemanggilan method remote yang
lebih secara umum lebih baik dari RPC. RMI menggunakan paradigma pemrograman
berorientasi obyek. 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.
- TUJUAN
Adapun
tujuan dari RMI yaitu
1.
Menyediakan
fasilitas bagi programmer untuk dapat mendistribusikan objek yang digunakan
pada beberapa proses yang berbeda.
2.
Dapat
berjalan dalam satu mesin ataupun di beberapa mesin yang terhubung dengan
jaringan.
- APLIKASI OBJEK TERDISTRIBUSI
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.
Sebagai
contoh.:
Pada paket Whiteboard, RMI digunakan untuk program-program Chat, Whiteboard dan Projector. Dalam program Chat, RMI digunakan untuk memasukkan input dari para pengguna, baik dosen maupun mahasiswa, ke komputer server. Setelah itu, server akan mengeluarkan output berupa hasil percakapan antar pengguna kepada semua komputer klien. Pada Whiteboard, penggunaan RMI terletak pada pengiriman graphics dan image antara komputer server dan klien. Sedangkan pada Projector, RMI digunakan agar dosen, sebagai klien, bisa mengatur indeks tampilan pada Projector yang berlangsung pada komputer mahasiswa, yang berfungsi sebagai klien lainnya.
Pada paket Whiteboard, RMI digunakan untuk program-program Chat, Whiteboard dan Projector. Dalam program Chat, RMI digunakan untuk memasukkan input dari para pengguna, baik dosen maupun mahasiswa, ke komputer server. Setelah itu, server akan mengeluarkan output berupa hasil percakapan antar pengguna kepada semua komputer klien. Pada Whiteboard, penggunaan RMI terletak pada pengiriman graphics dan image antara komputer server dan klien. Sedangkan pada Projector, RMI digunakan agar dosen, sebagai klien, bisa mengatur indeks tampilan pada Projector yang berlangsung pada komputer mahasiswa, yang berfungsi sebagai klien lainnya.
Aplikasi RMI sering kali terdiri dari dua program terpisah
yaitu server dan client.
1.
Aplikasi
Server
·
Membuat
beberapa remote objek
·
Menyediakan
referensi terhadap objek-objek tersebut sehingga dapat diakses
·
Menunggu
RMI client merequest server
2.
Aplikasi
Client
·
Mendapatkan
referensi remote ke satu atau lebih objek remote di server
·
Menjalankan
method dari objek tersebut
·
Meminta
pemanggilan ke beberapa remote objek berbasarkan referensi yang diterimanya.
RMI menyediakan mekanisme dimana server dan client
berkomunikasi dan memberikan informasi secara timbal balik, aplikasi ini
disebut aplikasi obyek 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 PEMBUATAN
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
mengetahui methods 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
mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client
Model RMI – Remote Interface
- Remote interface – mendefinisikan method apa saj ayang dapat diakses oleh client
- Pada contoh gambar slide 8, objek B dan F harus memiliki remote interface
- Contoh :
- CORBA menggunakan IDL untuk definisi Interface objek server
- RMI menggunakan interface Java untuk definisi objek server
Protokol Request/Reply untuk RMI
public byte[] doOperation
(RemoteObjectRef o, int methodId, byte[] arguments), sends a request message to the
remote object and returns the reply. The arguments specify the remote object,
the method to be invoked and the arguments of that method.
public byte[] getRequest (); acquires a client request via the
server port.
public void sendReply (byte[] reply,
InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet
address and port.
- CARA KERJA
Dalam model ini, sebuah proses memanggil method dari objek
yang terletak pada suatu host/computer remote. Dalam paradigma ini, penyedia
layanan mendaftarkan dirinya dengan server direktori pada jaringan. Proses yang
menginginkan suatu layanan mengontak server direktori saat runtime, jika
layanan tersedia, maka referensi ke layanan akan diberikan. Dengan menggunakan
referensi ini, proses dapat berinteraksi dengan layanan tsb. Paradigma ini
ekstensi penting dari paradigma RPC. Perbedaannya adalah objek yang memberikan
layanan didaftarkan (diregister) ke suatu layanan direktori global, sehingga
memungkinkan untuk ditemukan dan diakses oleh aplikasi yang meminta layanan
tersebut.
Contoh aplikasi untuk meremote pada teknik RMI (Remote Method
Invocation) menggunakan teamviewer untuk meremote computer lain.
Teamviewer adalah suatu program yang cukup sederhana dan sangat mudah digunakan untuk beberapa keperluan terutama melakukan akses PC secara remote melalui internet.
Teamviewer adalah suatu program yang cukup sederhana dan sangat mudah digunakan untuk beberapa keperluan terutama melakukan akses PC secara remote melalui internet.
Cara Meremote : Tampilan utama TeamViewer, jika sudah tampil
(Ready to connect (secure connection)) maka sudah siap melakukan koneksi ke PC
lain, kemudian masukan ID PC klien jika koneksi berhasil maka akan muncul kotak
“Password”, isi password teamviewer PC yang akan anda remote. Jika berhasil
maka akan tampil desktop PC yang diremote tersebut. Jika ingin melakukan File
Transfer, maka pilih “File Transfer” pada bagian pilihan yang terlihat dibawah
kotak ID, kemudian klik “Connect to partner”. TeamViewer Versi Baru
Jika ingin menggunakan password dan ID yang tetap maka cukup tempatkan kursor mouse pada bagian kotak password, maka akan tampil seperti gambar diatas, pilih “Set user definied password” kemudian masukan password yang anda inginkan. Hasilnya Setelah kita melakukan setting pada teamviewer dan setelah login dan memasukkan password tujuan dengan benar maka kita bisa mengakses computer yang kita remote secara penuh.
Jika ingin menggunakan password dan ID yang tetap maka cukup tempatkan kursor mouse pada bagian kotak password, maka akan tampil seperti gambar diatas, pilih “Set user definied password” kemudian masukan password yang anda inginkan. Hasilnya Setelah kita melakukan setting pada teamviewer dan setelah login dan memasukkan password tujuan dengan benar maka kita bisa mengakses computer yang kita remote secara penuh.
- IMPLEMENTASI
Berikut ilustrasi yang terjadi pada metode RMI:
Programmer pada client menulis :
Server_id.service(values_to_server,result_arguments);
Pada sisi server mempunyai fungsi sebagai berikut :
Public service(in type1 arg from
client; out type2 arg to_client)
{——-}
Programmer pada client tidak mengetahui bahwa reply message
yang didapatkan berasal dari server yang dikirim melalui jaringan.
Gambar Ilustrasi Implementasi RMI
Komponen-komponen dam RMI(gambar 2.2) :
·
Object
A(client) : meminta layanan
·
Object
B(server) : menghantarkan layanan
·
Proxy
for B
o Ketika object A mempunyai remote
reference ke object B, maka akan timbul objek proxy B pada host object A. Proxy
terbuat ketika remote object reference digunakan pertama kali.
o Proxy adalah perwakilan objek yang
berada pada remote, dengan kata lain ketika terjadi invokasi dari A ke B
ditangani seolah – olah hanya mengakses Proxy B.
o Ketika invokasi terjadi proxy
menggunakan metode marshals untuk membungkus pesan yang akan dikirim ke server.
Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal
(membuka bungkus) untuk kemudian diteruskan ke client (Object A).
·
Skeleton
for object B
o Pada sisi server, terdapat object
kerangka (skeleton) yang berhubungan ke class, kalau object pada class tersebut
dapat diakses oleh RMI.
o Skeleton menerima pesan kemudian
melakukan unmarshal dan meneruskan ke method object yang dituju. Dan
kemudian menunggu hasil dari object B dan kemudian membungkus hasil (unmarshal)
dan kemudian dikirimkan ke client (Objec A).
o Ada bagian dari skeleton B yang
disebut dengan dispatcher. Dispatcher menerima request dari communication
module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke
corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi
dengan object).
·
Communication
Modul (Modul Komunikasi)
o Communication modul pada client atau
server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode
request dan reply.
·
Remote
Reference Module
o Bagian ini bertugas untuk
menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi
antara mereka disimpan dalam remote object table.
o Yang menggenerate class untuk proxy
dan skeleton adalah middleware.
o Contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada
Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh
middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang
di generate oleh middleware.
- KELEBIHAN DAN KEKURANGAN
Keuntungan
RMI:
·
¨Salahsatu keuntungan RMI adalah kemampuan untuk
download bytecodes (code) dari suatu object’s class, jika class tsb tidak
terdefinisikan di VM-nya penerima.
·
¨Type-type dan metode-metode object (class), yang
terletak dalam satu VM, dapat dikirim ke VM yang lain, yang mungkin saja
remote.
·
¨Sifat-sifat object yang terkirim ini tidak berubah
sama sekali
Kelemahan RMI:
proses pembukaan socket yang kadang-kadang tidak dapat
diimplementasikan lewat jaringan internet, tapi hal ini bisa diatasi
dengan menggunakan Spring HttpInvoker, sama persis dengan RMI tapi lewat
protokol HTTP.
- MASALAH PERANCANGAN UNTUK RMI
Semantik Pemanggilan RMI : doOperation() dapat diterapkan
dalam beberapa cara untuk menyediakan jaminan pengiriman yang berbeda. (George
Coulouris dkk, hal 174)
·
Retry
Requet Message : apakah permintaan Retransmit
pesan sampai baik balasan diterima atau server diasumsikan telah gagal.
·
Duplicate
Filtering : ketika retransmisi digunakan,
apakah untuk menyaring duplikat permintaan pada server.
·
Retransmission
of Result : apakah akan menyimpan history
dari pesan hasil untuk mengaktifkan hasil hilang yang akan kembali tanpa
mengeksekusi ulang operasi pada server.
- DAFTAR PUSTAKA
Sagitri, A. Sekilar Tentang RMI.
pyia.wordpress.com/2012/01/08/rmi-remote-method-invocation-dan-rpc-remote-procedure-call/
0 komentar:
Posting Komentar