2009-10-14 8 views
6

Ho letto molte affermazioni come "non si dovrebbe intasare il file app.config con le impostazioni personalizzate". Tuttavia, avevo l'impressione che questo fosse esattamente lo scopo del file?App.Config vs file XML personalizzato

È davvero una cosa preferenziale? O ci sono dei veri benefici (oltre alla separazione delle impostazioni) utilizzando un file XML personalizzato, come indicato nel file app.config? Se hai bisogno di separare esplicitamente le impostazioni, sarebbe meglio usare un numero personalizzato ConfigurationSection anziché optare per un file XML personalizzato?

Mi piacerebbe qui le riflessioni di altre persone su questo.

risposta

5

Alcune persone tendono a esagerare con i gestori di sezioni di configurazione personalizzate, a mio modesto parere.

Io tendo ad usarli solo quando ho bisogno di qualcosa che sia molto strutturato; e che è usato/scritto da terze parti (cioè voglio fare qualche convalida stravagante su di esso).

Penso che si possa usare tranquillamente app.config/web.config per tutte le impostazioni pertinenti e utilizzare file XML separati quando è molto chiaro che si tratta di un componente separato dell'app.

1

App.Config sono buoni per la configurazione che sono specifici dell'applicazione: il percorso al database è un buon esempio. Il resto dovrebbe esserne fuori.

Una cosa che si potrebbe voler fare è creare file specifici dell'utente, è quindi possibile utilizzare xml personalizzati che verranno salvati in un IsolatedStore.

+1

Suppongo che il problema sia considerato "specifico dell'applicazione".Poiché presumo che tutte le impostazioni necessarie per l'applicazione siano specifiche dell'applicazione ... – James

5

Dai uno sguardo allo Application Settings Architecture, l'app.config è per Configration per quanto riguarda l'applicazione, questo è un termine abbastanza generale però .. Quindi ti suggerisco di guardare nei file delle impostazioni dell'applicazione.

Non memorizzerei le impostazioni come "carica database all'avvio o meno" nell'app.config. Preferirei utilizzare una memoria alternativa come Impostazioni applicazione per questo, non confondere la configurazione dell'applicazione con le impostazioni, anche se potresti volerlo fare, non farlo. si suppone che app.config abbia una confusione relativa a elementi di livello inferiore come la connessione al database, il provider di appartenenze o qualsiasi altra informazione relativa all'applicazione critica.

1

A mio parere, considero app.config valido per le impostazioni del tempo di distribuzione come la posizione del database o un indirizzo IP o posizione di file di dati critici, ecc. Impostazioni utente come font, colore, preferenze di comportamento dovrebbe andare in un file diverso che puoi facilmente creare e salvare con la serializzazione Xml.

+0

Considereresti la stessa soluzione per cose come i messaggi dell'interfaccia utente ecc.? – James

+0

Se i messaggi dell'interfaccia utente sono qualcosa che l'utente configura direttamente, quindi sicuramente. Ma se stai pensando ai messaggi dell'interfaccia utente in termini di traduzione linguistica, dovresti esaminare gli assembly satellite e il supporto di .NET per la localizzazione. –

2

maggior parte delle impostazioni tendono a cadere in uno dei tre campi: impostazioni

  1. tecniche che influenzano il comportamento interno del codice, per esempio stringa di connessione al database, percorso del file di dati, interruttori di registrazione, interruttori per la gestione degli errori, ecc.
  2. Impostazioni aziendali che influiscono sulla logica di business del prodotto, ad es. "Gli utenti sono autorizzati ad accedere al modulo CRM?"
  3. Valori di profilo specifici dell'utente, ad es. "questo utente ha il permesso di accedere al modulo CRM?".

Il luogo naturale per il tipo 1 è in app.config o web.config, e il luogo naturale per i tipi 2 e 3 è nel database.