rpc dan rmi

10
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.

Transcript of rpc dan rmi

Page 1: rpc dan rmi

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.

Page 2: rpc dan rmi

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

Page 3: rpc dan rmi

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.

Page 4: rpc dan rmi

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.

Page 5: rpc dan rmi

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

Page 6: rpc dan rmi

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

Page 7: rpc dan 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

Page 8: rpc dan rmi

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

Page 9: rpc dan rmi

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.

Page 10: rpc dan rmi

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.