Saya ingin menyimpan konfigurasi proyek saya yang termasuk
- Ukuran layar
- Posisi layar
- Jalur folder
- Pengaturan pengguna dan sebagainya.
Tempat standar tempat Anda dapat menyimpan ini adalah nilai konfigurasi:
- Daftar
- File INI
- File pribadi (seperti * .cfg)
Bagaimana Anda memilih di antara tempat-tempat ini? Juga, apakah ada pro dan kontra menggunakan salah satunya?
Jawaban:
Daftar:
+
Relatif standar di lingkungan Windows.+
Umumnya dukungan yang baik dari installer, dll.-
Platform API tertentu, jika Anda ingin port aplikasi Anda.-
Tidak bisa dibaca manusia.File INI:
+
Format sederhana.+
Portable.+
Dapat dibaca manusia.-
Mungkin sulit untuk menyimpan informasi yang lebih kompleks (misalnya, apa pun yang bersarang lebih dari dua level).?
Mungkin harus menulis parser Anda sendiri (walaupun tidak sulit) atau menggunakan perpustakaan eksternal seperti SimpleIni (terima kasih kepada Jonathan Merlet untuk komentarnya).File XML (saya rasa ini adalah opsi .cfg):
+
Format standar.+
Portable.+
Mendukung struktur bersarang yang dalam.-
Tidak bisa dibaca manusia.Secara pribadi, untuk aplikasi Windows saya cenderung menggunakan C #, dan pergi dengan file pribadi untuk pengguna, disimpan sebagai XML. Saya melakukan ini biasanya karena keterbacaan manusia biasanya tidak menjadi prioritas dalam jenis aplikasi yang saya tulis (dan aplikasi harus memiliki editor konfigurasi, dalam hal apa pun), dan dalam lingkungan .NET , sangat mudah untuk bekerja dengan XML. Saya sangat sering berakhir dengan objek UserConfiguration yang hanya serial ke dan dari file konfigurasi - hampir tidak ada pengembangan yang terlibat (parsing, casting barang sekitar), dan Anda memiliki konfigurasi Anda siap digunakan dalam lingkungan yang sangat diketik.
sumber
Saya akan menggunakan file INI, mereka adalah pilihan yang lebih ramah manusia:
XML mungkin merupakan opsi yang baik, tetapi tidak bisa mengalahkan kesederhanaan dan keanggunan INI:
INI juga sangat dipahami dan platform independen. Mungkin tidak ada banyak alat yang tersedia untuk mereka seperti untuk file XML, karena, yah, siapa yang membutuhkan alat khusus untuk membaca dan mengedit file INI?
sumber
<window width="600" height="350" />
Preferensi saya adalah file XML. Mereka hierarkis, Anda dapat membengkokkannya sesuai keinginan Anda dengan cara apa pun yang dapat dibayangkan, mereka dipahami dengan baik, platform independen, dan ada beragam perangkat lunak yang tersedia untuk membaca dan menulisnya.
sumber
Untuk memperluas saran Jeff D tentang YAML , inilah intro singkat.
YAML mirip dengan JSON (pada kenyataannya, JSON adalah bagian dari YAML sejak versi 1.2 dari standar YAML, dan dengan demikian JSON yang valid dapat diuraikan oleh parser YAML). Pada pandangan pertama, perbedaan utama adalah bahwa YAML (secara default) menggunakan lekukan daripada tanda kurung untuk menunjukkan hierarki. Ada juga kurangnya tanda kutip untuk string. Contoh cepat dari atas:
Lihat halaman YAML Wikipedia untuk contoh yang lebih baik. Dukungan untuk YAML ada untuk sebagian besar bahasa utama (lihat yaml.org untuk detailnya).
sumber
Anda lupa opsi: Basis Data. Ini sebagian besar digunakan dalam skenario di mana Anda memiliki pengguna masuk ke aplikasi Anda ketika aplikasi Anda tidak dapat mengandalkan pengguna windows login. Ini misalnya ketika aplikasi Anda berjalan di jendela mode kios.
sumber
Preferensi pribadi saya adalah file XML:
Dalam kebanyakan kasus, saya tidak berharap pengguna harus mengedit pengaturan konfigurasi mereka sehingga masalah keterbacaan manusia bukan argumen dalam kasus ini.
Jika mereka perlu mengeditnya, Anda dapat menyediakan alat pengeditan - ini mencegah pengguna melakukan sesuatu yang gila dengan data. Jika mereka ingin mengembalikan pengaturan default, Anda bisa memberi tahu mereka untuk menghapus file x yang mana sebagian besar pengguna akan merasa nyaman melakukannya.
Perhatikan bahwa Anda masih perlu berhati-hati bahwa Anda memiliki izin untuk menyimpan file Anda karena beberapa lokasi tidak memiliki akses tulis secara default di Windows 7 dll.
File INI adalah cara standar yang baik untuk menyimpan konfigurasi dan telah dicoba dan diuji tetapi mereka hanya terasa sedikit 'Windows 3.1' bagi saya!
Mungkin opsi terbaik jika Anda ingin pengguna dapat mengutak-atik data mereka
Saya pribadi akan menjauh dari registri. Untuk satu hal Anda tidak dapat menjamin bahwa pengguna memiliki izin yang diperlukan untuk membaca / menulis ke mana pun Anda ingin menyimpan data Anda.
Dalam OS yang lebih baru di mana virtualisasi registri berperan, ini dapat menyebabkan kebingungan besar karena Anda tidak dapat 'melihat' pengaturan tervirtualisasi - ini telah menggigit kami lebih dari sekali di mana telah menghabiskan waktu berjam-jam untuk mencari tahu mengapa sesuatu tidak berfungsi.
sumber