Selasa, 22 April 2014

Objek Terdistribusi dan CORBA

Middleware adalah objek terdistribusi yang dirancang untuk menyediakan model pemrograman berdasarkan prinsip-prinsip berorientasi objek.

Emmerich [ 2000 ] melihat objek terdistribusi seperti evolusi alami dari tiga kegiatan :

  • Pada sistem terdistribusi , middleware sebelumnya didasarkan pada model client-server dan ada keinginan untuk abstraksi pemrograman yang lebih canggih .
  • Dalam bahasa pemrograman , karya sebelumnya dalam bahasa berorientasi objek seperti Simula - 67 dan Smalltalk menyebabkan munculnya lebih utama dan sangat digunakan bahasa pemrograman seperti Java dan C + + ( bahasa yang digunakan secara ekstensif dalam sistem terdistribusi ) .
  • Dalam rekayasa perangkat lunak , kemajuan yang signifikan dibuat dalam pengembangan metode desain berorientasi obyek , yang menyebabkan munculnya Unified Modelling Language ( UML ) sebagai notasi industri - standar untuk menentukan ( potensi terdistribusi ) pada sistem perangkat lunak berorientasi objek .


Dengan kata lain, melalui pendekatan berorientasi objek dalam sistem terdistribusi, pengembang tidak hanya disediakan dengan abstraksi pemrograman ( seperti pada bahasa seperti C + + dan Java  ) , tetapi juga dapat menggunakan object - oriented prinsip-prinsip desain , alat dan teknik ( termasuk UML ) dalam pengembangan software sistem terdistribusi . Ini merupakan langkah maju yang besar di daerah di mana , sebelumnya , teknik desain seperti itu tidak tersedia . 


Middleware pada objek terdistribusi menawarkan abstraksi pemrograman berbasis object oriented Contoh middleware objek terdistribusi adalah Java, RMI dan CORBA .
Java RMI dan CORBA berbagi banyak kesamaan ,namun ada satu perbedaan yang terpenting : yaitu penggunaan Java RMI dibatasi untuk pengembangan berbasis Java , sedangkan CORBA adalah solusi yang memungkinkan multi-bahasa berbasis objek untuk dapat ditulis dalam berbagai bahasa  .
CORBA
       Pada tahun 1989 object Management group (0MG) dibentuk melakukan standarisasi terhadap arsitektur aplikasi menggunakan obyek terdistribusi sehingga aplikasi yang dibuat oleh sebuah vendor dapat birenteraksi dengan vendor Iainnya dengan berbagai perarigkat jaringan dan sistem operasi. Standar yang dikePuarkan oleh 0MG disebut Common Object RequestBroker Architektur (CQRBA). Spesifikasi CORBA ini berisi sebuah spesifikasi infrastruktur yang disebut Object request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote, yang meliputi antarmuka program, protokol komunikasi don model obyek atau layanan yang memungkinkan untuk saling berkomunikasi dalam berbagai platform.
.
CORBA menggunakan interface definition language (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain.
  Komponen CORBA yang terletak di sisi Server

1. Server Side ORB Interface
2. Static IDL Skeleton
3. Dynamic Skeleton Interface
4. Object Adapter
5. Server Side Implementation

Komponen CORBA pada sisi Client:
1.     Client Application
2.     Client IDL Stubs
3.     Dynamic Invocation Interface
4.     Interface Repository
5      Client Side ORB Interface

Komponen Object Request Broker (ORB)

          Inti dari CORBA adalah ORB, dimana ORB  bertanggungjawab untuk menjalankan semua mekanisme yang dibutuhkan, antara lain yaitu:

1.  menemukan implementasi obyek untuk memenuhi suatu request,
2.  menyiapkan implementasi obyek untuk menerima suatu request,
3.  melakukan komunkasi data untuk memenuhi suatu request.

          Sebuah permintaan (request) yang dikirimkan suatu client ke suatu object implementation akan melewati ORB. Dengan ORB, yang terdiri dari interface, suatu entitas dapat berkomunikasi dengan object implementation tanpa adanya batasan platform, topologi jaringan, bahasa pemrograman, dan letak obyek
Client
Secara umum, client adalah suatu program/proses yang melakukan request pada suatu objek. Terdapat pula client relative, yaitu suatu objek yang menjadi client dari objek lainnya.Client suatu objek harus mengakses OR (Object Reference) suatau objek tertentu untuk melakukan operasi pada suatu objek. Client hanya mengetahui struktur logika suatu objek melalui interface yang dimiliki objek tersebut dan behaviour yang dimiliki objek tersebut saat dipanggil.Secara umum, client mengakses objek dan ORB melalui language mapping.Client dapat bersifat portable dan seharusnya dapat berjalan tanpa harus mengubah kode pada ORB yang mendukung language mapping berbeda dengan objek instance yangmengimplementasikan interface berbeda.
Untuk membuat suatu request, client dapat menggunakan :
1. DII (Dynamic Invocation Interface) yaitu suatu interface yang tidak tergantung pada
inteface objek yang dituju
2. IDL Stub, yang tergantung pada interface objek yang dituju.
(cth: Untuk fungsi-fungsi tertentu, client dapat berinteraksi secara langsung dengan ORB)
Object Implementation (OI)
Suatu Object Implementation (OI) menyediakan semantik dari objek, yangumumnya dilakukan dengan mendefiniskan data untuk object instance dan kode untuk method-method objek tersebut. Seringkali kita menggunakan objek lain atau menggunakan software tambahan untuk mengimplementasikan sifat suatu objek.

Object Implementation (OI) menerima suatu request melalui
1. IDL Skeleton
2. Dynamic Skeleton Interface(DSI)
Object Implementation (OI) dapat memanggil Object Adapter (OA) dan ORB pada saat memproses sebuah request.
Interface
Inteface suatu objek dapat didefinisikan dengan cara statis, yaitu menggunakan IDL (Interface Definition Languange). IDL mendefiniskan tipe suatu objek berdasarkan operasi-operasi (yang mungkin dijalankan pada objek tersebut) dan parameter operasi tersebut.
Interface dapat pula ditambahkan ke dalam suatu IRS (Interface Repository Service) yang menggambarkan komponen-komponen dari interface suatu objek. Client dapat mengakses komponen-komponen ini saat runtime.Client meminta suatu request dengan melakukan akses ke OR (Object Reference)suatu objek yang dituju dan mengetahui tipe dari objek dan operasi-operasi yang dapat dilakukan pada objek tersebut. Client menginisialisasi request dengan memanggil rutinrutin suatu stub yang sesuai dengan objek atau membangun request secara dinamik.
Interface dinamik dan interface stub harus memeiliki semantic request yabng msa dalam pemanggilan suatu request.ORB mencari implementation code yang dituju, mengirimkan parameterparameter dan mentransfer kontrol pada Object Implementation memalui IDL Sekeleton atau Dynamic Skeleton. Secara spesifik, skeleton berupa interface dan OA (ObjectAdapter). Dalam mengolah suatu request, Object Implementation memberikan service pada ORB melalui OA (Object Adapter). Saat suatu request selesai dijalankan, kontrol dan nilai keluaran dikembalikan ke client. OI dapat memilih OA yang akan digunakan.Keputusan pemilihan OA ditentukan oleh jenis service yang dibutuhkan oleh OI tersebut.Infomasi tentang OI diberikan pada saat instalasi dan disimpan dalam IR(Implementation Repository) yang digunakan selama pengiriman hasil request.Dalam arsitekturnya, ORB tidak perlu dimplementasikan dalam sebuah komponen tunggal namun, ORB didefinisikan menggunakan interface-interface yang dimilikinya. Interface-interface tersebut dikelompokan menjadi:
1. operasi yang sama untuk semua implementasi ORB
2. operasi khusus untuk tipe objek tertentu
3. operasi khusus untuk style OI tertentu
Object Reference (OR)
Object Reference (OR) merupakan informasi yang dibutuhkan untuk menentukan sebuah objek dalam ORB. Client dan Object Implementation (OI) memiliki bagaian yang tertutup dari OR dengan language mapping, yang kemudian disekat dari representasi aktualnya. Dua implementasi ORB dapat memiliki representasi OR yang berbeda.Representasi OR pada sisi client hanya valid selama masa hidup client tersebut.Semua ORB harus menyediakan language mapping yang sama untuk sebuah OR(umumnya disebut objek) untuk sebuah bahasa pemrograman tertentu. Hal ini memungkinkan sebuah program ditulis dalam bahasa apapun untuk mengakses OR secara independen terhadap ORB terntentu.
Interface Definition Language (IDL)
Objek-objek CORBA dispesifikasikan menggunakan interface, yang merupakan penghubung anatara client dan server. Interface Definition Language (IDL) digunakan untuk mendefinisikan interface tersebut.IDL menentukan tipe-tipe suatu objek dengan mendefinisikan interface-interface objek tersebut. Sebuah interface terdiri dari kumpulan operasi dan parameter operasi tersbut. IDL hanya mendeskripsikan interface, tidak mengimplementasikannya. Meskipun sintaks yang dimiliki oleh IDL menyerupai sintaks bahasa pemrograman C++ dan Java., perlu diingat, IDL bukan bahasa pemrograman.Melalui IDL, Object Implementation (OI) akan memberitahu client yang akan mengakses operasi apa saja dan method apa saja yang harus dipanggil client tersebut.Dari definisi IDL, objek-objek CORBA dipetakan ke bahasa pemrograman –C,C++, Java, dan lain-lain—yang memiliki IDL mapping.
Bahasa Pemrograman yang berbeda dapat mengakses objek-objek CORBA dalam bebagai cara yang berbeda. Pemetaan dari IDL ke bahasa pemrograman tertentu harus sama untuk semua implementasi ORB. Language Mapping ini menyertakan definisi tipe data untuk bahasa  pemrograman terntentu dan procedure interface untuk mengakses objek melalui ORB. Ini meliputi:
1. Struktur dari client stub interface (tidak dibutuhkan untuk bahasa OOP)
2. Dynamic Invocation Interface
3. Implementation Skeleton
4. Object Adapters
5. Direct ORB Interface
Language Mapping juga mendefinisikan interaksi antara pemanggilan objek dan langkah kontrol pada client dan implementasi. Pemetaan yang paling umum menyediakan syncrhonous call, dimana rutin mengembalikan nilai pada saat operasi suatu objek selesai dilakukan. Pemetaan tambahan memungkinkan sebuah call diisisiasi dan kontrol dikembalikan kepada program.
 Dynamic Invocation/Skeleton Interface
IDL interface yang digunakan oleh sebuah client ditentukan pada saat client dikompilasi. Hal tesebut mengakibatkan seorang programmer hanya dapat menggunakan server-server yang terdiri dari objek-objek yang mengimplementasikan interfaceinterface tersebut.
Bila suatu aplikasi membutuhkan interface-interface yang tak didefiniskan saat kompilasi, maka diperlukan DII (Dynamic Invocation Interface) atau pun DSI (Dynamic Skeleton Interface).DII memungkinkan suatu aplikasi/client memanggil operasi-operasi dari sembarang interface. DSI menyediakan suatu cara untuk mengirim request dari sebuah ORB ke sebuah Object Implementation (OI) tanpa harus mengetahui tipe dari objek pada saat kompilasi.
Dynamic Invocation Interface (DII)
CORBA mendukung DII dan SII. Operasi invocation dapat dilakukan menggunakan static interface ataupun dynamic interface. Static Invocation Interface (SII) ditentukan pad saat kompilasi dan dihubungkan dengan client mengunakan stub.Sedangkan Dynamic Invocation Interface (DII) memungkinkan apliaksi di sisi client untuk menggunakan server object tanpa perlu mengetahui tipe obek-objek tersebut saat kompilasi.
DII memungkinkan client untuk mendapatkan sebuah instance dari objek CORBA dan membuat invocation pada objek tersebut dengan menciptakan request yang sifatnya dinamis. DII  menggunakan Interface Repository (IR) untuk memvalidasi dan mengambil identifier operasi pada suatu request yang dibuat.Client menggunakan Interface Repository (IR) untuk mempelajari tentang interface-objek yang tidak diketahui dan client menggunakan DII untuk memanggil methods suatu objek.
Empat tahap yang diperlukan saat penggunaan Dynamic Invocation Interface (DII):
1. Mengidentifikasikan target objek yang akan dipanggil
2. Mendapatkan target interface dari objek tersebut
3. Membangun invocation
4. Mengirim request untuk mendapatkan respon
Aplikasi-aplikasi client yang menggunakan Dynamic Invocation Interface (DII) tidak lebih efisien dari yang menggunakan SII, tapi ada dua keuntungan menggunakan DII,yaitu:
-Aplikasi client dapat melakukan permintaan kepada setiap operasi meskipun tersebut tidak diketahui pada saat aplikasi dikompilasi.
-Apliaksi client tidak harus dikompilasi ulang untuk mengakses OI yang diaktivasi ulang.
 Dynamic Skeleton Interface (DSI)
Dynamic Skeleton Interface (DSI) menyerupai DII, namun tereletak di sisi server. DSI memungkinkan server ditulis tanpa harus mempunyai skeleton-skeleton atau informasi tentang waktu kompilasi, dan untuk objek mana server ini diimlementasikan. Fungsi utama Dynamic Skeleton Interface (DSI) adalah mendukung implementasi gateway antara ORB yang memiliki protocol komunikasi berbeda.
Object Adapter (OA)
Object Adapter (OA) merupakan cara utama bagi sebuah Object Implemetation (OI) untuk mengakses service yang disediakan oleh ORB. Tugas utamanya adalah melakukan masking (menutupi) perbedaan dalam implementasi objek untuk memperoleh portability yang lebih tinggi.
ORB Interface
ORB Interface Merupakan interface yang berhubungan langsung dengan ORB yang sama untuk semua ORB dan tidak tergantung pada interface suatu objek atau Objek Adapter (OA). Karena banyak fungsionalitas ORB yang disediakan melalui OA, stub,skeleton, maupun dynamic invocation; maka ada sedikit operasi yang umum bagi semua objek.
 Inteface Repository (IR)
Interface Repository (IR) merupakan online database yang berisi tentang meta informasi tentang tipe dari objek ORB. Meta ionformasi yang disimpan meliputi informasi tentang modul, interface, operasi, atribut, dan eksepsi dari objek.Interface Repository (IR) menyediakan cara lain untuk menentukan interface ke suatu objek. Interface ini dapat ditambahakan ke layanan IR. Dengan menggunakan IR,sebuah client akan mencari objek yang tidak diketahui pada saat kompilasi, menemukan informasi tentang interface objek tersebut dan implementasi suatu aktivasi dan deaktivasi.
ORB biasa menggunakan IR untuk:
1. menyediakan interoperability antar implementasi ORB yang berbeda
2. menyediakan type checking dari signature sebuah request yang melalui SII dan DII
3. Mengecek kebenaran grafik inheritance
4. Mengelola instalasi dan distribusi interface definition alam sebuah jaringan
5. Mengeizinkan designer apliaksi untuk memodifikasi interface definition
6. Mengizinkan language compiler untuk mengcompile stub dan skeleton dari IR
bahkan langsung dari file IDL.
Implementation Repository
Implementation Repository terdiri dari informasi yang memperbolehkan ORB untuk mencari dan mengaktivasi implementasi suatu objek. Meskipun untuk suatu ORB atau lingkungan operasi, Implementation Repository merupakan tempat yang konvensional untuk menyimpan suatu informasi.
 Internet Inter-ORB Protocol (IIOP)
CORBA mendefinisikan IIOP (Internet Inter-ORB Protocol) untuk mengatur bagaimana objek berkomunikasi melalui jaringan. IIOP merupakan open protocol yang berjalan diatas TCP/IP.

Tidak ada komentar:

Posting Komentar