pemrograman jaringan 12

29
Pemrograman Jaringan 12 CORBA

Upload: doantu

Post on 20-Jan-2017

235 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pemrograman Jaringan 12

Pemrograman Jaringan 12

CORBA

Page 2: Pemrograman Jaringan 12

CORBA (Common Object Request Broker Architecture)

• CORBA (www.corba.org) adalah cara lain untuk melakukan pemrograman jaringan terdistribusi dan open system, dimana obyek yang dipanggil tidak hanya berasal dari program yang dibuat dengan bahasa Java saja tetapi juga bisa dibuat dengan bahasa lain.

• Corba di buat oleh OMG (Object Management Group –www.omg.org), suatu organisasi yang mengurusi teknologi berbasis obyek. OMG berdiri tahun 1989 dan juga mengurusi tentang UML.

• Corba dikatakan merupakan standar sistem terdistribusi (distributed sistem standard) karena dengan menggunakan corba, sistem secara keseluruhan dapat saling terhubung dan berkomunikasi antar platform (sistem operasi dan hardware) yang berbeda.

Page 3: Pemrograman Jaringan 12

CORBA (2)• Corba juga dikatakan sebagai open system karena teknologi corba

merupakan suatu standar yang terbuka bagi siapa saja yang ingin menerapkannya. Dengan corba kita dapat membangun aplikasi yang dapat saling berkomunikasi walau satu sama lain menggunakan bahasa pemrograman dan platform yang berbeda.

• CORBA memiliki Interface Definition Interface yang mendukung mapping ke suatu bahasa pemrograman tertentu.

• CORBA menyediakan API untuk berkomunikasi antar obyek secara remote.

• Beberapa yang sudah menerapkan spesifikasi corba adalah:– Borland (VisiBroker): C++ dan Java Mapping– IONA (Orbix) : C++, Java, dan SmallTalk Mapping– Sun Microsystem (JavaIDL)

Page 4: Pemrograman Jaringan 12

Perbandingan RMI & CORBA

Page 5: Pemrograman Jaringan 12

CORBA Architecture

Page 6: Pemrograman Jaringan 12

ORB

• Bertindak sebagai broker (perantara) antara client dan server yang berjalan pada tiap mesin yang berisi API untuk mencari obyek dan menerima request.

• ORB mengkomunikasikan hubungan antar obyek menggunakan sistem IIOP (Internet Inter-ORB Protocol)

• ORB tersedia untuk beberapa platform yang berbeda-beda.

• ORB mencari obyek, merequest remote method melalui interface CORBA, dan mengembalikannya ke client.

• Menangani secara menyeluruh terhadap suatu permintaan (request) dari client ke object atau sebaliknya (response) dari obyek ke client.

• ORB harus tersedia di sisi server dan client.

Page 7: Pemrograman Jaringan 12

ORB (2)

• Pada sisi client, ORB memiliki fungsi:– Menghubungkan ke interface repository / IR

(penyedia definisi interface).– Membantu client dalam menyusun suatu permintaan

(invocation) ke object server secara dinamis dengan menggunakan DII (Dynamic Invocation Interface).

• Pada sisi server, ORB berfungsi:– Selain bertanggung jawab untuk mengirimkan

response dari server ke client yang dituju, ORB juga membantu untuk memulai dan menghentikan operasi terhadap object server yang diminta.

Page 8: Pemrograman Jaringan 12

Stub dan Skeleton

• Digunakan untuk marshalling dan Unmarshalling remote method invocation.– Marshalling: encoding, to pack all information about remote

method invocation to be sent to the remote destination.– Unmarshalling: unpack and decode the message– Stub marshall the method request, and Skeleton unmarshall the

request and forward to actual remote method.– Stub berkomunikasi dengan remote object.

• Ada 2 cara menghasilkan kode stub pada client dan kode skeleton pada server:– Static: SII (static invocation interface) dan SSI (static skeleton

interface), digenerate saat kompilasi IDL.– Dynamic: DII (dynamic invocation interface) dan DSI (dynamic

skeleton interface)

Page 9: Pemrograman Jaringan 12

Object Adapter

• Menerima permintaan dari client. • Berfungsi sebagai dispatcher (menentukan object servant mana

yang dituju).• Membuat suatu remote objek referensi terhadap setiap objek

servant CORBA yang terdaftar padanya. Setiap obyek CORBA akan diberi nama unik, dan setiap nama menunjuk pada suatu obyek servant.

• Dapat mengaktifkan dan menonaktifkan suatu objek servant.• Mengatur security, method invocation dari object servant• Melakukan pemanggilan terhadap sebuah object servant, yaitu

dengan cara statik, yaitu melalui Static Skeleton Interface (SSI), atau secara dinamis dengan menggunakan Dynamic Skeleton Interface (DSI).

• Nama object Adapter untuk CORBA 2.2 ke atas disebut dengan Portable Object Adapter (POA), dan untuk spesifikasi CORBA 2.1 ke bawah disebut dengan Basic Object Adapter (BOA).

Page 10: Pemrograman Jaringan 12

Interface Respiratory

• Database pada sisi server yang berisi semua metadata interface IDL yang telah diregistrasikan ke server, termasuk tipe data, nama method, dan parameternya.

Page 11: Pemrograman Jaringan 12

ORB References

– Berada di sisi client– Membungkus lokasi dari remote obyek yang

akan diakses oleh client.– Client harus mengambil/mencari OR untuk

dapat mengakses remote object.

Page 12: Pemrograman Jaringan 12

IDL (Interface Definition Language)

• IDL interface yang berisi kumpulan method yang akan diakses oleh client.

• Language Dependent Text File berekstensi .idl

• Contoh:

Page 13: Pemrograman Jaringan 12

Langkah Pengembangan CORBA

Page 14: Pemrograman Jaringan 12

Langkah-langkah• Langkah pertama: mendefinisikan interface yang berisi layanan-

layanan yang tersedia oleh obyek server menggunakan bahasa IDL.• Langkah kedua: mengkompilasi bahasa IDL ke bahasa Java. Kita

gunakan IDL-to-Java compiler. Yaitu : idlj. Hasil dari kompilasi ini dihasilkan client stub dan skeleton server.

• Untuk menghasilkan aplikasi client, kita perlu menuliskan aplikasi client dan dikompilasi dan dilink bersama dengan library CORBA serta client stub yang dihasilkan dari IDL compiler.

• Dari sisi server : dari definisi yang sudah didefinisikan perlu dibuat sebuah kelas sebuah kelas yang merupakan implementasi dari interface tersebut. Sehingga sebuah aplikasi server dihasilkan dari kompilasi dan linking antara kode program aplikasi server, implementasi obyek dan skeleton.

Page 15: Pemrograman Jaringan 12

IDL (Interface Definition Language)

Page 16: Pemrograman Jaringan 12

Contoh IDL

• IDL konstanta:interface Konstanta{

const long MyLong = 12345;const string nama = “anton”;const boolean ada = TRUE;

}• Oleh Java akan diterjemahkan menjadi:

public interface Konstanta{• public static final int MyLong = (int)(12345);• public static final String nama = "anton";• public static final boolean ada = (boolean)(true);

}

Page 17: Pemrograman Jaringan 12

• interface Katalog {struct Buku {

string Judul;string Pengarang;long Tahun;

}; void SimpanBuku(in Buku bkbaru);

• };

• Hasilnya:• public final class Buku{• public String Judul = null;• public String Pengarang = null;• public int Tahun = (int) 0; • }

Page 18: Pemrograman Jaringan 12

• enum Status { DIPINJAM, HILANG, RUSAK, ADA };

• Hasilnya menjadi:• private int __value;• private static int __size = 4;• private static Status[] __array = new Status [__size];

• public static final int _DIPINJAM = 0;• public static final Status DIPINJAM = new Status(_DIPINJAM);• public static final int _HILANG = 1;• public static final Status HILANG = new Status(_HILANG);• public static final int _RUSAK = 2;• public static final Status RUSAK = new Status(_RUSAK);• public static final int _ADA = 3;• public static final Status ADA = new Status(_ADA);

Page 19: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

Buat definisi IDL:

Beri nama hello.idl

Page 20: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

• Kompilasi dengan perintah:idlj hello.idl

• Anda akan mendapatkan direktori HelloApp dan di dalamnya terdapat kelas-kelas:– HelloHelper.java

Bertanggung jawab untuk membaca dan menulis tipe data ke stream CORBA dan menterjemahkan dari tipe Any.

– HelloHolder.javaClass ini menyimpan public instance dari tipe Hello. Ketika terdapat tipe parameter out atau inout, kelas ini digunakan.

– Hello.javaDigunakan untuk deklarasi method dan ketika digunakan pada interface lain.

– HelloOperations.javaInterface ini digunakan untuk pemetaan sisi server dan dishare untuk stub dan skeleton.

– HelloPOA.javaClass yang memerankan server skeleton. Class server harus menerapkan dari kelas ini.

– _HelloStub.javaMerupakan class client stub, yang menyediakan fungsi CORBA pada sisi client.

Page 21: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

Buat definisi class implementasi dari antarmuka Hello, disebut juga kelasServant yang merupakan turunan dari kelas HelloPOA yang berada di dalam

package HelloApp yang terbentuk!

Page 22: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

• Import semua kelas-kelas dan package yang dibutuhkan!• Buat obyek ORB dan inisialisasi, lihat baris merah• Buat obyek dari kelas implementasi (POA) atau object servant (BOA)

– jika diperlukan object ORB yang sudah dibuat dapat dijadikan parameter ke object servant, dengan tujuan agar object servant dapat mengkontrol ORB yang digunakan. Lihat baris biru

• Buat referensi dari root POA dan aktifkan POA Manager, lihat warna hijau

• Dapatkan referensi obyek yang dibuat pada langkah sebelumnya dengan bantuan root POA, lihat warna orange

• Buat koneksi ke Naming Service dengan membuat referensi dari object Naming Service yang digunakan, lihat baris coklat

• Daftarkan referensi object yang didapatkan dari langkah sebelumnya ke Naming Service dengan diwakili sebuah nama, lihat warna biru tua

• Jalankan, tunggulah sampai ada permintaan dari client.

Page 23: Pemrograman Jaringan 12

Contoh

Page 24: Pemrograman Jaringan 12

Contoh

Page 25: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

• Buat program client– Inisialisasi obyek ORB– Ambil referensi obyek dari NameService– Kemudian masukkan hasil pengambilan

obyek referensi ke suatu variable obyek lokal dan manipulasilah obyek lokal tersebut!

Page 26: Pemrograman Jaringan 12
Page 27: Pemrograman Jaringan 12
Page 28: Pemrograman Jaringan 12

Pengembangan Aplikasi CORBA

• Kompilasi dengan perintah:– javac HelloApp/*.java– javac HelloImpl.java– javac HelloServer.java– javac HelloClient.java

• Jalankan naming service• Jalankan server

– java HelloServer -ORBInitialPort 50000• Hasilnya:

– HelloServer siappp grak...• Jalankan client

– java HelloClient -ORBInitialPort 50000• Hasilnya:

– Hello world!!

Page 29: Pemrograman Jaringan 12

Praktikum