Minggu, 26 Agustus 2007

ActiveX-DLL with ASP



Shoutz : All echo|staff, yogyafree|staff, The Killer Team
Myztx, vaganci, ^family_code^, TOMMY, adhietslank, ^rumput_kering^, Hartono, etc.
#e-c-h-o, #yogyafree, #javahack, #koncek, #canda, #canda-ops @DAL.NET
newbie_hacker@yahoogroups.com, yogyafree@yahoogroups.com
IT_CENTER@yahoogroups.com, ProgrammerVB@yahoogroups.com
virus_baru@yahoogroups.com
VB-bego.com, Virology.info, Vbtn.com
IA01 dan 1IA07, Lab MaDas angk. 19/2004 @ Gunadarma University
Dan teman2 serta kerabat2 lain yang tidak bisa disebutkan satu-persatu

Notes : - Penulis TIDAK bertanggung jawab atas penggunaan maupun penyalahgunaan dari artikel ini.
- Tujuan dibuat artikel HANYA untuk BAHAN PEMBELAJARAN saja.
- Penggunaan nama, merek, atau logo hanya sebagai CONTOH dan REFERENSI saja, TIDAK ada maksud
mempromosikan pihak tertentu.
- Penulis mohon maaf apabila seluruh/sebagian dari isi artikel ini sudah tersirat dalam
artikel sejenis lainnya.

Main#
ASP atau Active Server Pages adalah produk server-side scripting yang dikeluarkan oleh Microsoft Corporation.
Terdapat beberapa perbedaan antara ASP dengan server-side scripting lainnya, diantaranya :

- Lisensi, seperti yang diketahui ASP adalah bersifat proprietary.
- Distribusi, ASP hanya dapat dijalankan di sistem operasi windows dengan IIS yang terinstall didalamnya.
Walaupun dapat dijalankan di linux/unix dengan Chilisoft ASP, tidak dapat selancar bila di windows.
- Penggunaan COM object yang kental, salah satu keunggulan ASP adalah kekayaannya dalam integrasi dengan COM
Object dalam kinerjanya.
- Dapat berkolaborasi dengan script lainnya, seperti VBScript, JScript, PerlScript, PyhonScript, dan lainnya.
- Dominan memakai ADO dalam konektivitas databasenya.

Dalam perkembangannya, saat ini ASP sudah mengimplementasikan konsep .NET didalamnya. Berikut adalah sejarah singkat
dari perkembangan ASP :

- ASP version 1.0 (distributed with IIS 3.0) , Desember 1996,
- ASP version 2.0 (distributed with IIS 4.0) , September 1997,
- ASP version 3.0 (distributed with IIS 5.0) , November 2000,
- ASP.NET version 1.0 (part of the Microsoft .NET platform) , Januari 2002
- ASP.NET version 1.1 , April 2003
- ASP.NET version 2.0 , November 7 2005)

Pada artikel ini akan dijelaskan bagaimana membuat dan mengimplementasikan ActiveX DLL di halaman ASP. Mengapa menggunakan
ActiveX DLL? Karena komponen tersebut dapat diubah dan dibuat dengan mudah, tentunya jika diimbangi dengan pengetahuan pemograman
yang baik. Secara umumnya, pengaksesan komponen ActiveX DLL dari script ASP adalah :

set obj = Server.createobject(object/file_name.classname)

Objectname adalah nama object/file yang sudah teregistrasi di windows sebelumnya, dan classname adalah nama class dari object
tersebut. Sedangkan untuk pengaksesan fungsi atau method yang ada di object tersebut adalah :

obj.methodname(param)

Param adalah parameter masukan untuk fungsi.

How to build#
Dalam membuat komponen ActiveX untuk ASP perlu diperhatikan hal-hal sebagai berikut :

- Privilege atau hak akses. Jika komponen ActiveX perlu menjalankan suatu program, menghapus/membuat file dan kegiatan akses sistem
lainnya, perlu konfigurasi privilege yang baik. Karena jika tidak maka akan terjadi penolakan hak akses dari sistem operasi.
- Run-time, pada saat eksekusi komponen ActiveX maka komponen tersebut akan diload oleh IIS Worker Process atau w3wp.exe. Maka bila
terjadi kesalahan atau kondisi dimana komponen tidak respon, diperlukan penanganan seperti merestart service IIS guna membuka
handle ke file ActiveX DLL tsb.
- Registrasi komponen, registrasi komponen dengan menggunakan tools regsvr32.exe diperlukan agar IIS dapat mengetahui komponen yang
akan dijalankannya. Registrasi dapat dilakukan dengan cara mengetikkan : regsvr32.exe [path/nama DLL] pada kotak Run dan untuk unregister
komponen dengan cara : regsvr32.exe /u [path/nama DLL].

Selanjutnya kita akan membuat contoh komponen ActiveX yang sederhana dengan bahasa pemograman Visual Basic 6.0. Untuk memilih pembuatan ActiveX,
dapat dilakukan dengan cara memilih jenis projek pada jendela pilihan projek. Pilihlah projek New ActiveX DLL. Maka akan tersaji 1 buah class kosong
yang siap digunakan. Perlu diketahui bahwa pengaturan properties class Instancing harus diset ke nilai 5 atau MultiUse. Berikut adalah contoh fungsi
yang akan mengembalikan nilai perhitungan aritmatika :

------------------ START COPy FROM HERE ------------------

Public Function hitung(ByRef x As Integer, ByRef y As Integer) As Integer
hitung = (x + y) * 2
End Function

------------------ STOP COPy FROM HERE ------------------

Lalu simpanlah projek dengan nama coba.vbp dan nama class dengan nama hitung1.cls. Lalu buatlah komponen ActiveX dari projek tersebut dengan memilih
menu File -> Make Coba.dll dari toolbar. Registrasi komponen tersebut dengan command dari kotak Run : Regsvr32.exe coba.dll. Buatlah file ASP berikut
ini :


------------------ START COPy FROM HERE ------------------

<%
dim hasil
set obj = Server.createobject("coba.hitung1")
hasil = obj.hitung(1,2)
Response.Write hasil
%>

------------------ STOP COPy FROM HERE ------------------

Lalu jalankanlah dari browser anda, maka akan terlihat bahwa tercetak angka "6" dari hasil perhitungan fungsi hitung. Memang terlihat masih sangat sederhana,
tetapi komponen ActiveX dapat dibuat dan digunakan untuk keperluan yang sangat banyak, Seperti perhitungan matematis yang rumit, prosedur Pengecekan Anti-Virus,
mengirimkan email secara otomatis, dan lain sebagainya.
Disamping kemudahan menggunakan komponen ActiveX dalam ASP, juga terdapat kekurangannya yaitu pemanggilan fungsi/method dari object diperlukan waktu yang lama.
Bahkan untuk membuat object itu sendiri juga diperlukan waktu yang lama. Berikut adalah tabel perbandingan antara waktu eksekusi VBS, JS dan VB :

Time taken by same code in VB/VBS/JS [misc].

VB Code VBS JS VB5
Application("A2"), 0items 35 54 7
Application("A4"), 1000items 42 65 15
request.querystring 124 8
request.querystring("A") 176 161 47
request.querystring.Item("A") 210 205 47
request.servervariables("HTTP_REFERER")177 175 55
request.ServerVariables("REMOTE_ADDR") 205 175 74
request.servervariables("X") 224 226 95
request.servervariables("HTTP_COOKIE") 318 109
request.cookies("AAA") 165 160 47
request.totalbytes 61 61 3
A = X & "AAAA" 4.6 1.7
A = "" & Now() 40.7 29.3
D = Now 10.8 9.8
A = FormatNumber(5.5,2) 17.6
A = Format(5.5, "0.00") 52.4
A = Left(X,2) 5.8 1.7
D = InStr(X, "bb") 4.4 1.4
Call sub 7.4 1.4
CreateObject("ADODB.Connection") 1110 471
CreateObject("ADODB.Recordset") 751 83
CreateObject("Scripting.Dictionary") 590 257
CreateObject("Scripting.FSO") 350 27

Penggunaan memory juga mempengaruhi kinerja dari ASP. ASP mempunyai karakteristik menyimpan file include di dalam memory setiap dipanggil. Jadi bila
Terdapat banyak file include, maka akan membebani sistem itu sendiri. Contohnya bila terdapat 100 kB file include dan tiap byte dari file tersbut memakan
3 byte di memory dan file tersbut di include ke dalam 100 file ASP, maka 100 * 3 * 100 = 30 MB jumlah memory yang digunakan.
Sedangkan pada penggunaan komponen ActiveX pada ASP akan sedikit menguntungkan, karena komponen akan terus di memory begitu ia diload atau di eksekusi
hingga di bebaskan kembali oleh IIS.

Penutup#
Penggunaan komponen ActiveX di halaman ASP sangat mudah dibuat dan diimpelemntasikan. Komponen ActiveX dapat mmebaut konten web lebih dinamis dan membantu
perhitungan matematis bila diperlukan. Penggunaan komponen ActiveX juga terdapat kelemahannya, seperti pembuatan dan pemanggilan object yang cukup memakan waktu.

Referensi#
http://en.wikipedia.org/wiki/Active_Server_Pages
http://www.motobit.com/tips/detpg_DLLinclude/
http://www.planet-source-code.com/
http://support.microsoft.com/kb/249873
http://www.google.co.id/

Tidak ada komentar: