www.tobuku.com
MEMBUAT SSCI_NET DEN DENGAN GAN C# Tingkat:
Mei 2006 Oleh : Feri Djuandi
√ Pemula
Menengah
Mahir
6.1. Kompilasi ssci_net.cs Bagian terakhir dari artikel ini adalah uraian tambahan yang sifatnya opsional karena pembahasan mengenai manajemen aset IT telah tuntas pada bab sebelumnya. Pada bagian ini akan dijelaskan sebuah program yang fungsinya sama seperti ssci_com tapi program ini ini ditulis dengan sebuah bahasa pemrograman berbasis .NET sehingga komponennya dinamakan ssci_net.. Pada kesempatan ini bahasa pemrograman yang dipilih adalah C# dan penulisan programnya menggunakan perangkat Visual Studio .NET. Tujuan penambahan ambahan ulasan ini adalah supaya penulis bisa menunjukkan pada Anda teknik pemrograman komponen berbasis .NET sebagai perbandingan dengan komponen berarsitektur COM. Jika kurang tertarik dengan topik ini, Anda bisa melewatinya – tapi materi ini mungkin sesuatu uatu yang baru bagi Anda dan bisa sedikit menambah wawasan. Komponen ssci_net berbentuk sebuah file dengan nama ssci_net.dll yang ada di dalam direktori media ..\SSCI_NET.. Yang penting dari pembahasan di sini adalah cara penggunaannya, penggunaannya, namun jika Anda berminat melakukan sendiri penulisan atau kompilasi kode programnya, silakan ikuti langkah langkah--langkah berikut ini. 1. Jalankan Ms Visual Studio .NET. 2. Buat sebuah projek baru dan pilih tipenya sebagai Visual C# Projects.. Sebagai template-nya, template pilih Class Library.
3. Sebagai nama projeknya, ketikkan ssci_net dan silakan tentukan sendiri lokasi direktorinya. Klik tombol OK.
Gambar 6.1. Membuat Class Library dengan VC#.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
1
www.tobuku.com Tunggu beberapa saat sampai VS selesai menyiapkan sebuah projek baru berdasarkan template yang dipilih tadi. 4. Sebuah projek bernama ssci_net akan terbentuk seperti yang diperlihatkan oleh Solution Explorer pada gambar di bawah ini. Anda tidak perlu mengeti mengetikkan kkan skrip apapun untuk projek ini karena kode program ssci_net telah disiapkan dalam media yang disertakan dengan artikel ini.
Gambar 6.2. Menambahkan item baru menggunakan Solution Explorer. Klik-kanan kanan pada projek ssci_net kemudian pilih menu Add diikuti pilihan Add Existing Item. Item VS meminta Anda untuk memasukkan nama file yang akan ditambahkan ke dalam projek ini. Arahkan pilihan ke sebuah file di dalam media: ..\SSCI_NET\ssci_net.cs.
Pada Solution Explorer tampak file ssci_net.cs di tambahkan ke dalam projek ssci_net.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
2
www.tobuku.com
Gambar 6.3. Class view ssci_net. Dengan beralih pada tab Class View, perhatikan bahwa namespace yang ada di dalam komponen ini adalah SSCI. 5. Hapuslah file Class1.cs dari projek karena tidak akan dibutuhkan.
Gambar 6.4. 6. Menghapus file Class1.cs dari projek 6. Tambahkan sebuah referensi ke dalam projek ini.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
3
www.tobuku.com
.
Gambar 6.5. Menambahkan referensi. Pilih System.Management dan klik tombol Select. 7. Pada toolbar VS, ubahlah pilihan konfigurasi dari Debug menjadi Release.
Gambar 6.6. Pilihan konfigurasi.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
4
www.tobuku.com 8. Jalankan menu Build Build Solution untuk melakukan kompilasi. Tunggu beberapa saat sampai hasilnya diperoleh. Pastikan tidak ada pesan kesalahan atau peringatan pada window output.
------ Build started: Project: ssci_net, Configuration: Release .NET -----Preparing resources... Updating references... Performing main compilation... Build complete -- 0 errors, 0 warnings Building satellite assemblies... ---------------------- Done ---------------------Build: 1 succeeded, 0 failed, 0 skipped Hasil kompilasi adalah ..\ssci_net\bin\Release.
sebuah
file
ssci_net.dll
yang
berada
di
dalam
direktori
9. Simpan dan tutup projek ssci_net.
6.2. Menggunakan ssci_net.dll Komponen ssci_net.dll yang baru saja dihasilkan adalah sebuah komponen yang bisa digunakan oleh bahasa pemrograman yang mendukung .NET framework. Protokol komponen-komponen .NET berbeda dengan komponen-komponen COM, oleh karena itu bahasa pemrograman yang sudah ada sebelum diperkenalkannya konsep .NET seperti Visual Basic 6, PowerBuilder 9 tidak bisa menggunakan komponenkomponen .NET. Namun demikian, jangan menyalah-artikan bahwa komponen .NET hanya bisa digunakan oleh perangkat pemrograman yang dibuat oleh Microsoft (Visual Studio .NET). Saat ini di pasaran sudah ada beberapa program pengembangan aplikasi di luar Microsoft yang mendukung .NET seperti Borland Delphi 2006 dan PowerBuilder 11 (yang rencananya akan dirilis tahun 2006). Untuk saat ini, akan ditunjukkan bagaimana komponen ssci_net bisa digunakan oleh bahasa pemrograman berbasis .NET. 1. Jalankan Ms Visual Studio .NET. 2. Buat sebuah projek baru dan pilih tipenya sebagai Visual C# Projects. Sebagai template-nya, pilih Console Application.
WMI-FD-06016–MEMBUAT SSCI_NET DENGAN C#
5
www.tobuku.com
Gambar 6.7. 6. Membuat Console Application dengan VC#. 3. Secara default VS menamakan projek tersebut ConsoleApplication1.. Silakan tentukan lokasi direktorinya kemudian klik tombol OK. 4. Pastikan file ssci_net.dll telah ada di dalam hard disk komputer (baik meng meng--copy-nya dari media atau sebagai hasil kompilasi). Tambahkan referensi ke komponen ssci_net.dll untuk projek ini dengan menu Project Add Reference. Reference. Kemungkinan besar ssci_net.dll tidak akan dijumpai dalam daftar komponen sehingga Anda harus mengasosiasikannya secara manual.
Gambar 6.8.. Tombol Browse untuk asosiasi referensi secara manual. Klik tombol Browse dan arahkan ke lokasi file ssci_net.dll yang telah ada di dalam hard disk komputer Anda. WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
6
www.tobuku.com 5. Di dalam projek baru tersebut, akan terbentuk sebuah class bernama Class1. Silakan ketik skrip di bawah ini untuk class tersebut. Sebagai alternatif silakan meng-copy skrip dari file yang ada di dalam media ..\SSCI_NET\ConsoleApplication1. Skrip 6.1. Skrip pada projek ConsoleApplication1. using System; using SSCI; namespace ConsoleApplication1 { /// <summary> /// Summary description for Class1. /// class Class1 { /// <summary> /// The main entry point for the application. /// [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here // string s=""; SSCI.BIOSInformation ssciInfo = new BIOSInformation(); s=ssciInfo.GetInfo; Console.WriteLine (s); Console.ReadLine(); } } }
6. Jalankan program tersebut dengan menu Debug Start atau menekan tombol F5.
WMI-FD-06016–MEMBUAT SSCI_NET DENGAN C#
7
www.tobuku.com
Gambar 6. 6.9. Output program ConsoleApplication1.
Seperti yang tampak pada layar, program akan menampilkan informasi BIOS dalam bentuk dokumen XML. 7. Simpan dan tutup projek tersebut. Jika program ConsoleApplication1 di atas telah di-compile compile atau dijalankan, maka di dalam direktori projek itu akan terbentuk sebuah direktori .. ..\ConsoleApplication1\bin\Debug.. Di sana terdapat file ConsoleApplication1.EXE .EXE hasil kompilasi dan juga file ssci_net.dll yang di-copy di copy oleh VS dari da lokasi yang dipilih ketika menulis kode program ConsoleApplication1.. Berbeda dengan aplikasi yang dibuat berbasis komponen COM, dimana komponen-komponen komponen komponen tersebut harus terlebih dahulu didaftarkan pada Windows registry sebelum bisa dipanggil oleh aplikasi yang menggunakannya – maka sebuah aplikasi yang berbasis .NET tidak membutuhkan registrasi komponen-komponen komponen komponen .NET. Bahkan pada kenyataannya komponen .NET tidak didaftarkan pada Windows registry. Yang perlu perlu bagi sebuah aplikasi untuk bisa menggunakan komponen .NET adalah bahwa komponen komponen-komponen komponen tersebut harus berada di direktori yang sama dengan program aplikasi pemanggilnya. Itulah sebabnya mengapa file ssci_net.dll ditempatkan bersama-sama bersama ConsoleApplication1.EXE. .EXE. Cobalah menghapus file ssci_net.dll tersebut dan jalankan ConsoleApplication1.EXE. .EXE. Apakah ada pesan kesalahan? Implikasi mekanisme ini memberikan kesederhanaan dalam instalasi aplikasi-aplikasi aplikasi aplikasi .NET. Bahkan jika Anda ingat masa-masa masa keemasan DOS dimana instalasi sebuah program cukup dengan sebuah file BAT, maka saat ini Anda bisa kembali ke masa itu. Kembali kepada komponen ssci_net yang ditulis ulang dari ssci_com. Ada cukup banyak perbedaan dalam hal teknik penulisan program pada VB6 dan C#. Seseorang Seseorang mungkin bisa saja menyalin kode program dalam VB6 kemudian menerjemahkannya ke dialek C# baris demi baris. Tapi penulis cenderung berpendapat bahwa konversi kode program dari VB6 ke C# adalah sebuah perombakan yang fundamental karena C# adalah bahasa sa yang begitu kental nuansa OOP OOP-nya, nya, tapi tidak dengan VB6. Sementara dengan C# sebuah program bisa ditulis dengan jauh lebih leluasa dan lebih efisien, sangat disayangkan jika penulisannya masih menggunakan gaya VB6. Tampak bahwa struktur komponen ssci_com ssci_com berbeda dengan ssci_net. Komponen ssci_com memiliki sebuah class bernama cSSCI dengan banyak fungsi f_GetXXX, sementara itu ssci_net memiliki banyak class XXXInformation.. Jika ssci_net juga memiliki sebuah class bernama cSSCI, cSSCI maka itu dimaksudkan untuk mendukung backward compatibility-nya nya dengan ssci_com. Pada contoh berikutnya diperlihatkan bagaimana class cSSCI dalam ssci_net digunakan menyerupai class cSSCI dalam ssci_com. 1. Jalankan Ms Visual Studio .NET. WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
8
www.tobuku.com 2. Buat sebuah projek baru dan pilih tipenya sebagai Visual C# Projects. Sebagai template-nya, pilih Console Application. 3. Secara default VS menamakan projek tersebut ConsoleApplication2. Silakan tentukan lokasi direktorinya kemudian klik tombol OK. 4. Tambahkan referensi ke komponen ssci_net.dll untuk projek ini dengan menu Project Add Reference. 5. Silakan ketik skrip di bawah ini untuk class tersebut. Sebagai alternatif silakan meng-copy skrip dari file yang ada di dalam media ..\SSCI_NET\ConsoleApplication2. Skrip 6.2. Skrip pada projek ConsoleApplication2. using System; using SSCI; namespace ConsoleApplication2 { /// <summary> /// Summary description for Class1. /// class Class1 { /// <summary> /// The main entry point for the application. /// [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here // string s="", t=""; SSCI.cSSCI ssci = new cSSCI(); ssci.f_GetBIOSInformation(ref s, ref t); Console.WriteLine (s); Console.ReadLine(); } } }
6. Jalankan program tersebut dengan menu Debug Start atau menekan tombol F5. Program akan menampilkan informasi BIOS yang sama seperti ditunjukkan oleh program sebelumnya. 7. Simpan dan tutup projek tersebut. Sekalipun komponen-komponen .NET ditujukan terutama bagi perangkat pemrograman berbasis .NET, tapi sebuah komponen .NET masih bisa dipanggil oleh perangkat pemrograman yang tidak mendukung .NET. Ada sebuah opsi di dalam compiler Visual Studio .NET yang memungkinkan sebuah bahasa pemrograman menggunakannya seolah-olah komponen .NET tersebut adalah sebuah komponen COM. Hal ini akan dipraktekkan pada ssci_net. 1. Buka projek ssci_net. 2. Jalankan menu Project ssci_net Properties.
WMI-FD-06016–MEMBUAT SSCI_NET DENGAN C#
9
www.tobuku.com 3. Pada window property, klik folder Configuration Properties.
Gambar 6.10. 6. Window property untuk projek ssci_net.
4. Pada opsi Register for COM Interop, Interop, ubahlah nilainya dari FALSE menjadi TRUE. Klik OK. 5. Lakukan kompilasi sekali lagi untuk mendapatkan ssci_net.dll yang terbaru. terbaru. 6. Simpan dan tutup projek ini. Jika terbiasa bekerja dengan komponen-komponen komponen komponen COM, Anda paham bahwa komponen-komponen komponen tersebut harus didaftarkan dulu pada Windows registry. Demikian pula halnya dengan ssci_net - walaupun ia sebuah komponen .NET, namun agar ia bisa dipanggil oleh program-program program pengguna komponen COM maka satu-satunya satunya cara adalah mendaftarkannya pada Windows registry. Jika file perintah regsvr32.exe digunakan untuk mendaftarkan komponen COM, maka komponen .NET menggunakan file RegAsm.exe. RegAsm.exe. File ini adalah bagian dari .NET Framework Tools yaitu kumpulan perangkat yang terdapat di dalam Microsoft .NET Framework SDK. Informasi mengenai bisa diperoleh dari situs: http://msdn.microsoft.com/library/default.asp?url=/library/enhttp://msdn.microsoft.com/library/default.asp?url=/library/en us/cptools/html/cpgrfassemblyregistrationtoolregasmexe.asp Walaupun Visual Studio .NET telah terinstal, tidak berarti file RegAsm.exe telah ada di dalam komputer. Untuk mendapatkan file tersebut, Anda harus menginstal .NET Framework SDK yang paket instalasinya bisa diperoleh dari situs: http://www.microsoft.com/downloads Ketikkan “sdk” sebagai kata pencariannya. Setelah menginstal .NET Framework SDK, file RegAsm.exe bisa dijumpai di dalam direktori ..\WINDOWS\Microsoft.NET\Framework Framework\v1.1.4322.. Direktori ini mungkin akan berbeda dari satu komputer dan komputer yang lain tergantung dari versi SDK dan service pack .NET framework yang terinstal pada komputer yang bersangkutan. File RegAsm.exe harus dijalankan dari command prompt pada direktori WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
10
www.tobuku.com dimana file itu berada. Jika hanya diketikkan “regasm” atau “regasm.exe” maka file itu akan menampilkan sintaks dan opsi-opsi opsi penggunaannya.
Gambar 6.11. Sintaks perintah RegAsm.
Untuk mendaftarkan komponen .NET ke Windows registry seperti COM, gunakan perintah sebagai berikut. RegAsm [NamaFileDLL DLL] Contoh: C:\WINDOWS\Microsoft.NET Microsoft.NET\Framework\v1.1.4322\ ssci_net \bin\ Release\ssci_net.dll Release
regasm
D:\VS_Projects\ D
Pastikan untuk mengetik RegAsm.exe dan nama file DLL lengkap dengan lokasi/direktorinya.
Untuk menghapus registrasi komponen .NET pada Windows registry, gunakan perintah sebagai berikut. RegAsm [NamaFileDLL DLL] /unregister Contoh: C:\WINDOWS\Microsoft.NET Microsoft.NET\Framework\v1.1.4322\ D:\VS_Projects\ss ssci_net\bin\Release\ ssci_net.dll /unregister
regasm
Untuk membuat file registrasi, gunakan perintah sebagai berikut. RegAsm [NamaFileDLL DLL] /regfile:[NamaFileREG] Contoh: C:\WINDOWS\Microsoft.NET Microsoft.NET\Framework\v1.1.4322\ D:\VS_Projects\ss ssci_net\bin\Release\ ssci_net.dll D:\VS_Projects\ ssci_net\bin\Release\ssci_net.reg
regasm /regfile: /
Perintah ini akan menghasilkan sebuah file registrasi komponen yang bisa dijalankan pada komputer-komputer komputer klien saat menginstal komponen .NET tersebut. Cara ini digunakan untuk menggantikan gantikan pengetikkan perintah yang cukup panjang di atas secara manual dan dilakukan berkali-kali kali pada setiap komputer. Cukup dengan menjalankan file registrasi tersebut, maka proses instalasi bisa dilakukan dengan mudah dan cepat. Alasan lain mengapa file registrasi perlu dibuat
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
11
www.tobuku.com adalah karena pada komputer klien tidak terdapat file RegAsm.exe sehingga registrasi komponen .NET menggunakan file perintah ini hampir tidak mungkin dilakukan. Jika telah berhasil mendaftarkan komponen ssci_net pada Windows registry registry sebagai komponen COM, silakan lanjutkan dengan membuat sebuah program sederhana menggunakan VB6 yang akan memanggil komponen tersebut. 1. Jalankan Microsoft Visual Basic 6. 2. Buat sebuah projek baru dengan tipe Standard EXE. 3. Buat referensi untuk projek ini ke k komponen ssci_net.. Jika tidak dijumpai pada daftar komponen, klik tombol Browse untuk mencarinya secara manual.
Gambar 6.12. Referensi ke ssci_net.
4. Ketikkan skrip di bawah ini pada sebuah objek yang bisa dijalankan. Skrip 6.3. Contoh skrip VB6 menggunakan ssci_net.
Dim objSSCI Dim i As Integer, strXML As String, strErrMsg As String Set objSSCI = CreateObject("SSCI.cSSCI") i = objSSCI.f_GetBIOSInformation(strXML, strErrMsg) If i = 0 Then MsgBox strXML Clipboard.SetText strXML Else MsgBox strErrMsg, vbCritical, "Error" End If 5. Jalankan program di atas.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
12
www.tobuku.com
Gambar 6.13. Output program.
Gambar di atas menunjukkan informasi BIOS dalam dokumen XML yang isinya sama seperti ditunjukkan program-program program sebelumnya. 6. Simpan dan tutup projek tersebut. Sekalipun opsi COM interop pada compiler VS memungkinkan sebuah komponen .NET dipanggil sebagai komponen COM, namun penulis menjumpai sebuah cacat pada saat sebuah string yang sangat panjang dikembalikan oleh komponen tersebut kepada program pemanggilnya menjadi terpotong. Sebagai contoh, silakan modifikasi program VB6 di atas menjadi seperti di bawah ini. Skrip 6.4. Contoh skrip untuk mengembalikan teks yang panjang.
Dim objSSCI Dim i As Integer, strXML As String, strErrMsg As String Set objSSCI = CreateObject("SSCI.cSSCI") i = objSSCI.f_GetSoftwareInformation(strXML, strErrMsg) If i = 0 Then MsgBox strXML Clipboard.SetText strXML Else MsgBox strErrMsg, vbCritical, "Error" End If
Fungsi f_GetSoftwareInformation akan mengembalikan dokumen XML yang sangat panjang (hal ini terutama jika pada komputer tersebut terinstal software-software software software yang cukup banyak). String dari dokumen XML tersebut mungkin akan terpotong padahal pada beberapa literatur yang penulis temui disebutkan ebutkan bahwa tidak ada pembatasan jumlah karakter string. Beberapa forum Internet yang mendiskusikan gejala ini tidak memberikan jawaban yang memuaskan sehingga kasus ini tetap menjadi misteri. Akhirnya penulis berpikir ada baiknya semuanya dikembalikan kkepada epada alamnya. Program pemanggil COM tetap menggunakan komponen-komponen komponen komponen COM dan program berbasis .NET menggunakan komponen-komponen komponen .NET. Teknologi .NET adalah sebuah evolusi dalam dunia pemrograman yang akan segera menjadi standar dan platform.
WMI-FD-06016–MEMBUAT MEMBUAT SSCI_NET DENGAN DEN C#
13