Dalam membuat aplikasi desktop kadang kita ingin menyimpan informasi tertentu yang berhubungan dengan user.
Walaupun aplikasi itu di pakai oleh banyak user, tapi informasi itu tetap di simpan per-user-nya.
User di sini lebih di asosiasikan dengan windows login user.
Fitur ini sudah lama ada di .Net dan Visual Studio.
Dari Visual Studio 2005 sudah bisa di gunakan untuk aplikasi desktop seperti console, winform dan WPF (ini di versi berikut-nya).
Untuk web aplikasi bisa juga, hanya kurang relevan.
Karena informasi akan di simpan mengunakan privilege user yang login di windows.
Web aplikasi natural-nya sudah multi-user dengan satu privilege user untuk mengakses ke resource OS-nya.
Sayang-nya cara ini tidak di terapkan ke Universal App, Windows Phone dan Store App.
Jadi Application Setting ini lebih ke Desktop Aplikasi.
Prinsip kerja, seperti app.config.
Menggunakan xml sebagai media penyimpanannya dan menggunakan path serta privilege user ketika menulis-nya ke file-system.
Tentu menggunakan ini jauh lebih mudah di bandingkan menggunakan app.config.
Untuk mengunakannya, cukup ke Property Project dan pilih Settings seperti gambar di bawah.
Yang perlu di perhatikan di sini adalah Scope column.
Kalau kita ingin bisa read + write, maka kita pilih User.
Application biasanya di gunakan sebagai read-only setting.
Memanfaatkan Application Setting ini mudah.
Di sini kita coba membuat beberapa variasi dalam penggunaannya.
DataGrid yang ada kita tambahkan Name dan Type-nya, kalau perlu kita juga bisa memasukkan nilai-awal.
Name itu akan bertindak seperti Property sebuah Class, jadi berikan nama yang Informatif.
Di sini kita melihat ada beberapa Type data yang kita buat menjadi Setting.
Ada String, Int32, DateTime, System.Drawing.Size dan System.Drawing.Color.
Gambar di bawah akan memberikan gambaran lebih jelas.
DataGrid diatas akan men-generated class berdasarkan dengan data yang ada di sana.
Kita akan bisa meng-akses 'setting' itu seperti kita meng-akses property.
Mari kita lihat contoh-contoh di bawah.
Warna merah, code untuk meng-akses setting.
Warna orange, code untuk menaruh data ke setting.
Di sini kita memasukkan data dari setting 'ServerPort' yang ber-type Int32, kedalam control NumericUpDown.
Dan di method ChangeNumber, kita merubah isi setting itu dengan data dari control tadi.
Tentu tidak berbeda jauh bila bekerja dengan property lainnya.
Seperti yang ber-type String.
Dan kalau yang data-nya sensitif, kita juga bisa mengacak.
Seperti pada yang di garis warna ungu.
note: method EncryptString hanya ilustrasi saja.
Pembaca dapat membuat sendiri.
Kita bisa juga memanfaatkan, type data String ini untuk data collection (Array, List dan lainnya).
Tentu kita perlu meng-convert-nya, agar lebih sederhana.
Di sini kita menggunakan JSON.Net sebagai converter kita.
Ini bisa juga jadi 'mini database', tapi tetap berbijaksana.
Terlalu banyak akan mempengaruhi performa aplikasi.
Sesuai dengan type datanya, kita juga bisa menyimpan setting dengan type ini.
Di contoh ini, kita menggunakan sebagai 'pengingat' ukuran dari Form-nya.
Seperti halnya di atas, tentu type ini juga sama saja.
Untuk data type DateTime pun tidak banyak bedanya.
Oke, kita sudah tahu bahwa kita menggunakan Application Setting ini seperti menggunakan Property saja.
Pasti ada pertanyaan, Apakah yang kita simpan itu sudah di tulis ke file-system?.
Jawabannya belum.
Oleh karena itu kita perlu memberitahukan ke Application Setting untuk menyimpan informasi tersebut ke file-system.
Caranya, mudah saja.
Ada method Save untuk tujuan itu, sederhana bukan?
Ini kalau kita satu kan code-code di atas, dalam satu Form.
Akan seperti di gambar bawah.
Untuk form-nya, kita buat seperti di gambar.
Apabila ada perubahan, maka button save akan enabled.
Dan bila di click maka perubahan yang ada akan di simpan.
Tentu-nya bila kita menjalankan lagi, aplikasi ini akan bisa me-recall apa yang sudah di simpan.
Application Setting akan membantu banyak bila kita ingin menyimpan informasi yang hanya di peruntukan untuk user itu saja.
Dan itu kita bisa lakukan dengan mudah.
.net c# vb.net winform console wpf