Usiamo il normale file app.config
per la configurazione dell'applicazione. Sebbene funzioni per ora ha alcuni inconvenienti piuttosto significativi:
- L'aggiornamento di un'applicazione con
app.config
modificato è difficile. O sovrascrive il file di configurazione esistente o il% aggiornatoapp.config
non è installato affatto. - Un errore in
app.config
spesso rende non valida l'intera configurazione. - I file sono di sola lettura e non possono essere modificati dall'applicazione stessa.
Per superare questi problemi, sto considerando alcune opzioni alternative.
Trasformazione documento XML personalizzato
Un'alternativa sarebbe tornare a un file XML personalizzato per evitare questi inconvenienti. Penso a una soluzione che utilizza trasformazione dei documenti XML .
Il programma di installazione installerà il file di configurazione predefinito default.xml
ed è di sola lettura. Non deve mai essere modificato, perché viene sovrascritto durante un aggiornamento. Contiene tutte le impostazioni predefinite e dovrebbe essere sufficiente per avviare l'applicazione.
Le modifiche possono essere eseguite nei file custom-xxx.xml
elaborati in ordine alfabetico. Le modifiche vengono eseguite utilizzando la sintassi XDT come descritto qui .
Il file risultante verrà scritto in configuration.xml
che è stato effettivamente utilizzato. Il file configuration.xml
non dovrebbe mai essere modificato direttamente, perché verrà sovrascritto quando l'applicazione viene riavviata.
Penso che questo approccio abbia alcuni vantaggi:
- La configurazione predefinita può essere aggiornata durante l'aggiornamento di un'applicazione.
- Le modifiche alla configurazione locale possono essere applicate e verranno mantenute durante gli aggiornamenti.
- Se non è possibile applicare la trasformazione (errore di sintassi), il file viene saltato, ma è sempre possibile leggere la configurazione predefinita.
Ci sono anche alcuni svantaggi:
- XDT non è banale per la maggior parte degli utenti e soggetto a errori
- La modifica della configurazione dall'interno dell'applicazione è difficile, perché è necessario scrivere un file XDT.
- Non tutte le impostazioni possono essere eseguite al di fuori di
app.config
, perché il framework .NET cerca determinate impostazioni in questo file.
Solo personal.xml
L'applicazione ha le impostazioni predefinite specificate nel codice. Queste impostazioni possono essere sostituite dall'applicazione utilizzando un file custom.xml
. Questo ha alcuni vantaggi:
- I valori predefiniti sono specificati nel codice, quindi verranno aggiornati automaticamente quando l'applicazione viene aggiornata.
- Le modifiche alla configurazione locale possono essere applicate e verranno mantenute durante gli aggiornamenti.
- Se
custom.xml
contiene errori, questo file viene saltato e le impostazioni predefinite possono ancora essere utilizzate. - Relativamente facile creare una GUI per modificare le impostazioni e scrivere solo le impostazioni non predefinite.
Ci sono anche alcuni svantaggi:
- Non c'è
default.xml
, quindi non tutte le opzioni sono chiaramente visibili nel file XML. - Quando la configurazione predefinita contiene un elenco, non è possibile rimuovere elementi dall'elenco in
custom.xml
. Le configurazioni dovrebbero essere modellate in modo tale che queste circostanze possano essere gestite.
Wrap-up
Esistono diversi scenari per gestire i file di configurazione. Vorrei sapere come gestire le configurazioni in situazioni in cui i file di configurazione devono essere personalizzati e si desidera mantenere gli scenari di aggiornamento automatici.