Novia's Blog

Do the best for your life

RMI (Remote Method Invocation) dan RPC (Remote Procedure Call) 8 Januari 2012

Filed under: Uncategorized — novia @ 3:01 pm

Perbedaan RMI dan RPC

 

 

RMI (Remote Method Invocation)

 

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

2.        Tujuan

  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.

3.        Aplikasi Obyek Terdistribusi

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.

4.        Cara Kerja RMI

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.

5.        Implementasi RMI

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

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

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

–  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

–          Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class tersebut dapat diakses oleh RMI.

–          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).

–          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)

–          Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.

  • Remote Reference Module

–        Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalam remote object table.

–       Yang menggenerate class untuk proxy dan skeleton adalah middleware.

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

6.        Langkah-langkah  proses dengan RMI :

 

  1. Urutan pemanggilan pada object client mengaktifkan method pada proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B.
  2. Kemudian method yang ada pada proxy melakukan pembungkusan argumen menjadi suatu pesan (marshalling) dan meneruskan ke modul komunikasi.
  3. Berdasarkan pada remote reference yang didapat dari remote reference modul, modul komunikasi memulai request dan reply protocol melalui network.
  4. Modul komunikasi pada server menerima request dari client. Kemudian berdasarkan referensi lokal yang diterima dari remote reference modul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (corresponding method).
  5. Method pada skeleton meng-ekstrak (unmarshalling) argumen pada pesan yang di terima dan mengaktifkan corresponding method (method yang berfungsi untuk melakukan komunikasi) pada object B (server).
  6. Setelah menerima hasil dari object B, method dari skeleton akan membungkus hasil tersebut dalam sebuah pesan (marshalling) dan meneruskan pesan yang sudah dibungkus ke modul komunikasi.
  7. Modul komunikasi mengrimkan pesan tersebut ke client melalui jaringan.
  8. Modul komunikasi pada client menerima hasil (reply) dari server dan meneruskan ke corresponding method pada proxy.
  9. Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan ke object A (client).

 

7.        Contoh RMI dengan menggunakan Java RMI :

Server object akan mencetak ”Hello Ruddy” ke layar & mengembalikan pesan ke klien

Pada sisi server :

–          Server Method

import java.rmi.*;

public interface SimpleInterface       

String printMessage(String name) throws RemoteException;

}

–          Server Object

import java.rmi.*;

import java.rmi.server.*;

public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac

public SimpleServer() throws RemoteException { super(); }

public String printMessage(String name) throws RemoteException {

System.out.println(name);

return(Hello + name);

}

public static void main(String args[]) {

System.setSecurityManager(new RMISecurityManager());

try {

SimpleServer newServer = new SimpleServer();

System.out.println(SimpleServer attempting to

bind to the registry);

Naming.rebind(//ruddy.info:30010/SimpleServer,

newServer);

System.out.println(SimpleServer bound in the registry);

} catch(Exception e) {System.out.println(SimpleServer error: + e.getMessage());

e.printStackTrace();

}}

}

 

Pada sisi client :

import java.rmi.*;

public class SimpleClient {

private static SImpleInterface server = null;

public static void main(String args[]) {

try {

server = (SimpleInterface)

Naming.lookup(//ruddy.info:30010/SimpleServer);

System.out.println(server.printMessage (Ruddy));

} catch(Exception e) {

System.out.println(SimpleClient error: + e.getMessage());

e.printStackTrace();

}}

}

 

 

RPC ( Remote Procedure Call )

 

1.        Definisi

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 dilakukan adalah sebuah server membuka socket, lalu menunggu client yang meminta prosedur yang disediakan server. RPC masih menggunakan cara primtif dalam pemrograman yaitu menggunakan paradigma procedural programming.

2.        Tujuan

RPC digunakan untuk administrasi sistem sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya darimna saja, selama sistemnya terhubung ke jaringan.

3.        Socket

RPC menggunakan socket untuk berkomunikasi dengan proses lainnya.

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

5.        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).

6.        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 meng-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

 

7.        Contoh RPC dengan SUN RPC

Fungsi yg dipanggil client melalui RPC:

bin_date_1:

No arguments.

Result in long integer: waktu saat ini, dlm jumlah detik sejak 00:00:00 GMT,

January 1, 1970.

str_date_1

Mengkonversi hasil bin_date_1 menjadi readable ASCII sring.

Berkas yg dibuat programmer:

Server procedure: date_proc.c

RPC specification file: date.x

Client main function: rdate.c

date.x -> rpcgen ->

Server stub: date_svc.c

date.h

Client stub: date_clnt.c

Generate executable client program:

cc o rdate rdate.c date_clnt.c lrpclib

Generate executable server program:

cc o date_svc date_proc.c date_svc.c lrpclib

 

Tinggalkan komentar