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.
.
Komponen CORBA yang terletak di sisi Server
CORBA menggunakan interface definition language (IDL) untuk menunjukkan
interface atau antarmuka yang dapat digunakan oleh program atau obyek lain.
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