Saat mengembangkan Aplikasi .NET Windows Forms kami memiliki pilihan di antara App.config
tag tersebut untuk menyimpan nilai konfigurasi kami. Mana yang lebih baik?
<configuration>
<!-- Choice 1 -->
<appSettings>
<add key="RequestTimeoutInMilliseconds" value="10000"/>
</appSettings>
<!-- Choice 2 -->
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" >
<section name="Project1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Project1.Properties.Settings>
<setting name="TABLEA" serializeAs="String">
<value>TABLEA</value>
</setting>
</Project1.Properties.Settings>
</applicationSettings>
</configuration>
.net
web-config
app-config
Jader Dias
sumber
sumber
Jawaban:
Dasarnya
<appSettings>
lebih mudah ditangani - cukup dengan menampar<add key="...." value="..." />
entri dan Anda selesai.Kelemahannya adalah: tidak ada pengecekan tipe, mis. Anda tidak dapat dengan aman menganggap nomor yang ingin Anda konfigurasikan benar-benar ada angka - seseorang dapat memasukkan string ke dalam pengaturan itu ..... Anda cukup mengaksesnya
ConfigurationManager["(key)"]
lalu terserah. Anda tahu apa yang Anda hadapi.Selain itu, seiring berjalannya waktu, proses
<appSettings>
dapat menjadi agak berbelit-belit dan berantakan, jika banyak bagian aplikasi Anda mulai meletakkan barang-barang di sana (ingat file windows.ini yang lama? :-)).Jika Anda bisa, saya lebih suka dan merekomendasikan menggunakan bagian konfigurasi Anda sendiri - dengan .NET 2.0, itu benar-benar menjadi sangat mudah, Dengan begitu, Anda dapat:
Ada serangkaian artikel yang sangat bagus untuk Anda demistifikasi sistem konfigurasi .NET 2.0 pada CodeProject:
Mengungkap misteri konfigurasi .NET 2.0
Menguraikan misteri konfigurasi .NET 2.0
Memecahkan misteri konfigurasi .NET 2.0
Sangat dianjurkan! Jon Rista melakukan pekerjaan yang hebat menjelaskan sistem konfigurasi di .NET 2.0.
sumber
Pengaturan aplikasi dapat dikontrol dari desainer (biasanya ada file Settings.settings secara default) sehingga lebih mudah untuk dimodifikasi dan Anda dapat mengaksesnya secara terprogram melalui kelas Pengaturan di mana mereka muncul seperti properti yang sangat diketik. Anda juga dapat memiliki pengaturan tingkat aplikasi dan pengguna, serta pengaturan default untuk memutar kembali.
Ini tersedia dari .NET 2.0 dan seterusnya dan mencela cara lain untuk melakukannya (sejauh yang saya tahu).
Detail lebih lanjut diberikan di: msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
sumber
Saya telah menggunakan pola yang saya temukan beberapa waktu lalu di mana Anda menggunakan tag xml dasar tetapi bungkus pengaturan dalam kelas konfigurasi statis. Jadi - Aplikasi DIY. Pengaturan.
Pola Konfigurasi Statis DotNetPearls
Jika Anda melakukannya dengan cara ini, Anda dapat:
Sangat membosankan untuk mengatur tetapi berkinerja baik, menyembunyikan referensi untuk nama-nama kunci, dan sangat diketik. Pola semacam ini berfungsi dengan baik untuk konfigurasi yang tidak diubah oleh aplikasi, meskipun Anda mungkin bisa bekerja untuk mendukung perubahan juga.
Konfigurasi:
Kelas konfigurasi:
sumber
Untuk memahami pro dan kontra pengaturan di
app.config
, saya sarankan Anda melihat detail teknis keduanya. Saya telah menyertakan tautan tempat Anda dapat menemukan kode sumber untuk ditangani, menjelaskan lebih banyak detail teknis di bawah ini.Biarkan saya meringkas secara singkat apa yang saya kenali ketika saya bekerja dengannya ( catatan: hal yang sama berlaku untuk
web.config
file situs web / aplikasi web):Pro
Mereka memungkinkan untuk menyimpan data yang diketik, termasuk jenis objek (melalui
serializeAs
properti)Mereka memiliki ruang lingkup pengguna dan aplikasi, yang memungkinkan untuk menyimpan nilai default
Mereka didukung di bagian konfigurasi Visual Studio
String panjang dan / atau data dengan karakter khusus sangat didukung (misalnya, string JSON tertanam yang berisi tanda kutip ganda)
Cons
Pengaturan pengguna disimpan di tempat yang berbeda di profil pengguna (dengan jalur samar), bisa sulit untuk dibersihkan
Pengaturan cakupan aplikasi hanya baca selama runtime aplikasi (hanya pengaturan lingkup pengguna yang dapat diubah selama runtime)
Kode metode Baca / Tulis yang dibuat oleh desainer pengaturan Visual Studio, tidak secara langsung disediakan oleh alat pihak ke-3 (lihat tautan di atas untuk solusi penyelesaian masalah)
Pro
Apakah "ringan", yaitu mudah ditangani
Akses baca dan tulis selama runtime aplikasi
Mereka dapat diedit dengan mudah oleh Administrator di
Manajer Layanan Informasi Internet (IIS)
(Tampilan Fitur -> Pengaturan Aplikasi, perhatikan bahwa nama ikon itu menyesatkan karena hanya dapat menangani AppSettings dan bukan ApplicationSettings)
Cons
Hanya mendukung data string; panjang string dan karakter khusus terbatas
Mereka tidak memiliki ruang lingkup pengguna
Mereka tidak mendukung nilai default
Tidak didukung secara langsung di bagian konfigurasi Visual Studio
sumber
Saya suka bekerja dengan versi yang lebih sederhana untuk menyimpan dan mengakses nilai tunggal.
Saya menulis kelas utilitas untuk mengakses nilai dengan cara yang aman yang memungkinkan untuk nilai default. Jika default tidak disediakan, maka pesan pengecualian yang bermanfaat diberikan.
Anda dapat melihat / mengunduh kelas di sini:
http://www.drewnoakes.com/code/util/app-settings-util/
sumber
App.config
file sama sekali dan menggunakan file konfigurasi Anda sendiri. Banyak perpustakaan yang melakukannya. NLog datang ke pikiran.