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.configmodificato è difficile. O sovrascrive il file di configurazione esistente o il% aggiornatoapp.confignon è installato affatto. - Un errore in
app.configspesso 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.xmlcontiene 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.