Qual è il modo migliore (e la posizione) per memorizzare le impostazioni non BLOB?
Su Windows, sembra accettabile usare il registro. A mio avviso, il registro era un sistema mal concepito, e invece Users\Username\AppData
dovrebbe essere preferito un semplice file di testo nella directory. È più facile eseguire il backup, meno pericoloso per gli utenti da modificare e più facile da pulire.
Su Linux e la maggior parte degli Unix, la posizione preferita è /home/user/.config/appname
per le impostazioni specifiche dell'utente e /etc/
per le impostazioni globali (a livello di sistema). La posizione meno preferita (ma accettabile) per le impostazioni dell'utente è ~/.appname
, ma in genere non è più favorevole. Questi file dovrebbero essere modificabili dall'utente, quindi è sempre preferibile un formato leggibile dall'uomo.
Non sono d'accordo con la maggior parte delle persone sul fatto che XML sia un formato accettabile per l'archiviazione di dati non BLOB. È, a mio avviso, un formato eccessivamente complesso ed eccessivamente complesso per quelli che di solito finiscono per essere piccoli frammenti di dati strutturati. Preferisco vedere i file in YAML, JSON, ASN.1, coppie nome = valore o formati simili. Avere troppa sintassi rende troppo facile per un utente sbagliare e lasciare il file in un formato non valido.
Dovremmo seguire ogni sistema predefinito o avere una soluzione unificata?
Dipende interamente da te, ma tieni a mente alcune cose:
- Piattaforme come * nix hanno limiti severi su quali posizioni sono scrivibili. Più severo di Windows. Così:
- L'unico posto in cui dovresti scrivere su qualsiasi cosa è nella home directory dell'utente.
- A meno che l'applicazione non sia un servizio di sistema; nel qual caso, tutti i file di dati mutabili devono essere scritti
/var/
. I file di dati non mutabili devono essere conservati nella directory dell'app in /usr/share/
o /usr/local/share/
o/opt/
- I file di configurazione in non
/etc/
devono mai essere scritti dall'applicazione quando è in esecuzione, anche se ha accesso in scrittura ad essi. /etc/
dovrebbe essere il repository per comportamenti predefiniti e nient'altro.
- Piano per l'applicazione per essere installato in uno dei tre posti:
/usr/local/
, /opt/appname
o /home/username/appname
.
- I BLOB devono essere archiviati insieme ad altri file di configurazione se devono essere modificati. È generalmente preferibile utilizzare un formato modificabile dall'utente, quindi si preferisce qualcosa come SQLite o Berkeley DB (poiché ci sono strumenti da riga di comando per ciascuno), ma non è necessario.
- Su Windows, le tue applicazioni dovrebbero sempre e solo scrivere nella directory User. La posizione standardizzata per i file di dati è
Users\User\AppData
. In nessun altro posto sembra accettabile.
- Su Mac OS X, le impostazioni dell'applicazione devono essere archiviate
~/Library/Preferences
insieme a tutti i file plist delle altre applicazioni. plist
sembra essere il formato preferito, ma ti consigliamo di ricontrollare con le linee guida di Apple.
E qual è il miglior modo portatile?
Non c'è "il meglio", a dire il vero. Esistono solo limitazioni e aspettative specifiche della piattaforma. La mia raccomandazione è di attenersi a mezzi specifici della piattaforma, anche se significa scrivere più codice.