Tuesday, November 25, 2008

ActiveX Component

Bagi beberapa penguna bahasa Visual Basic ( selanjutnya kita sebut VB ) akan terdengar canggung dengan judul di atas. Terminologi di atas merupakan “Panggilan” saja, tapi tekniknya mungkin sudah sering dipakai dalam pekerjaan sehari-hari.
Sebelum ke sana mari kita lihat dasarnya dahulu dan term yang di pakai pada artikel ini adalah term VB developer.

- ActiceX Component
- Com and ActiveX
- Component Binding
- Late Binding
- Early Binding
- Tips
- Kesimpulan

ActiveX Component

ActiveX Component sebuah standar Container Class yang dapat di gunakan oleh satu atau lebih aplikasi.
Agak membingungkan bukan, untuk lebih mudahnya seperti ini:

Anda memiliki sebuah Public Metode di dalam Class anda dan Class anda ini ada didalam sebuah Component yang memiliki standar untuk dapat berbicara secara binary dengan binary lainnya sesuai standar yang ada.

ActiveX Component biasa di sebut Server Aplikasi, karena ia meng-service aplikasi yang menggunakannya.
Sedang yang memanggil-nya di sebut Client Aplikasi. Tentu karena ia meng-consume ActiveX server tersebut.

Contohnya:

Microsoft Excel, ia merupakan software yang di buat dengan Visual C++. Dan ia membuat ActiveX atau OLE object-nya agar pengguna VB dapat meng-akses atau membuat sebuah Worksheet Excel di dalam VB aplikasi.

ActiveX Excel bisa di sebut sebagai Server aplikasi dan VB tentu Client Aplikasinya.
COM and ActiveX

Component Object Model ( selanjutnya kita sebut COM ) merupakan teknologi di belakang ActiveX ini. COM ini yang membantu kita meng-expose method dan property kita kepada object lain serta membuat kedua object itu saling ber-’bicara’.

Implement dari Interface ( baca Antar Muka ) IUnKnown yang membuat COM kita melakukan keajaibannya.
( sebetulnya ada satu lagi, mungkin di topik yang lain )
Setiap ActiveX yang kita buat, harus meng-implement IUnknown ini. Sebagai VB developer, ini sudah dilakukan secara automatis oleh IDE VB.

Sekarang kita akan melihat secara detail bagaimana ia bekerja.

1. Ketika VB aplikasi kita bekerja, maka ia akan mencari di Window Registry untuk melihat apakah ada Excel Server-nya,
2. Setelah itu Excel Server itu di invoke/bangkitkan dan load as server ( terjadi di memory ),
3. Client aplikasi ( VB kita ) akan me-request ke pada Excel server lewat interface IUnKnown,
4. Dan Excel server itu juga menjadi client dari VB aplikasi lewat interface IUnKnown.
Walau terdengar sedikit rumit, tapi itu menunjukan mereka menjadi client server bagi aplikasi. VB merupakan client bagi Excel server tapi sekaligus menjadi Server bagi client Excel aplikasi,
5. Pada saat Client VB meng-request kepada IUnKnown, ia menggunakan QueryInterface untuk meminta kepada Excel Server interface yang ia miliki ( dalam hal ini Whorksheet ),
6. Bila Excel Server response-nya maka hasil dari IUnknown yang di kirim oleh client Excel kepada VB Server akan di pergunakan oleh VB sebagai bagian dari aplikasi-nya.
Jadi setiap metode dan property yang di declare class akan memiliki interface IUnKnown, agar dapat di akses oleh penggunan interface IUnKnown lainnya.

Analoginya seperti kita meng-contact seseorang lewat telepon. kita men-dial nomor, mendapatkan respon dan merespon dengan pembicaraan. Kita menjadi Client bagi yang kita telepon dan kita menjadi Server bagi yang kita telepon.
Component Binding

Saat process kita me-request dan meng-load ActiveX Server di sebut Component Binding ( baca: Mengikat Component )

Ada 3 macam tipe binding-nya:

1. Early Binding
2. Late Binding
3. Very Early Binding ( tidak ada dalam VB )

Late Binding

Dalam VB kita tanpa perlu me-reference ke binary tertentu. Jadi VB IDE tidak menyimpan GUID dari ActiveX server.

code:

Dim oXL as Object
Set oXL = CreateObject("Excel.Application")

Karena ia tidak di reference maka ia tidak memiliki list dari interface ‘Excel.Application’.
Early Binding

Teknik binding ini yang sering kita pakai dalam VB.
Cara kerjanya agak sedikit berbeda. Early Binding mengharuskan kita menyimpan GUID dari ActiveX server itu.
Biasanya dilakukan di References Dialog pada VB IDE, dan tercatat di Project file.Jadi ketika aplikasi kita meload ActiveX server itu, kita mencari parameter di window registry sesuai dengan GUID yang ada dan mencari file Type LiBrary ( selanjutnya di sebut TLB ).
Dalam TLB ini terdapat list dari Interface yang di miliki oleh ActiveX server itu.
Maka ketika di design time IDE, kita dapat melihat Method dan Property dari ActiveX server-nya. ( maksudnya: namaobject kemudian di titik muncul dropdown dari metode dan property -nya ).

code:

Dim oXL as Excel.Application
Set oXL = new Excel.Apllication
Tips

Secara performa, Early Binding jauh lebih baik dari Late Binding. Jadi untuk VB aplikasi lebih di sarankan menggunakan Early Binding, mengingat overhead yang terjadi ketikan melakukan Late Binding.Lalu kapan kita menggunakan Late Binding? Pada saat kita akan menggunakan remote object maka kita menggunakan Late Binding, seperti pada DCOM ( Distribute Component Object Model ) yang gunakan secara standalone ataupun sebagai transport buat MTS atau COM+.

contoh:

Dim oXL as Object
Set oXL = CreateObject("Excel.Application", "NameServer")

Satu lagi ialah ketika kita menghendaki aplikasi kita me-reference ActiveX karena masalah versioning, karena setiap kita merubah interface maka siganture dari TLB akan berubah.

Untuk Active Server Pages, memang untuk menggunakan COM kita menggunakan Late Binding. Tapi tidak di anjurkan menggunakan hanya CreateObject.

contoh:

Dim oXL
Set oXL = Server.CreateObject("Excel.Application")

Secara Explicit, meng-create object di memory server.
Kesimpulan

Kita tidak membahas COM secara mendalam, topik ini hanya memperkenalkan konsep dari Component Binding dari COM teknologi.
Dari pemaparan di atas kita bisa membedakan Early dan Late Binding dalam penggunaannya di VB.


Klik disini untuk melihat sumber artikel

0 comments:

Angel Save Knight Man in 1995 - Linux, Blogger, Marketing, Business, Internet | Template by - Abdul Munir - 2008