Gestione di un numero elevato di file app.config

7

Abbiamo molti servizi Windows e applicazioni web che fanno affidamento su molte impostazioni comuni. Attualmente usiamo solo appSettings in base alle esigenze e vengono referenziati per chiave. Alcune impostazioni sono specifiche delle app e sono conosciute solo dal team dell'app, mentre altre sono specifiche dell'ambiente e sono conosciute solo dal team di implementazione. Inoltre abbiamo problemi quando dobbiamo modificare le impostazioni comuni che richiedono la modifica dei file di 100 e il riavvio di tutti i servizi corrispondenti. Con la grande varietà di impostazioni ci sono quelli duplicati che non vengono più utilizzati e molti che non significano la stessa cosa per diverse applicazioni.

Per risolvere il problema ho avuto un'idea di due volte uno scriverebbe un gruppo di sezioni di configurazione personalizzate per l'azienda con sezioni di configurazione personalizzate per ogni app e una per comune. La sezione comune potrebbe accedere a un servizio wcf e verificare che tutte le sue impostazioni siano le impostazioni correnti.

La mia domanda è che sto reinventando la ruota? Ci sono buone strutture / progetti / prodotti che sono progettati per gestire molti file di configurazioni in un ambiente distribuito, e se non è l'approccio che ho deciso di prenderne uno ragionevole.

    
posta rerun 23.05.2011 - 16:49
fonte

4 risposte

0

Suggerisco di utilizzare una sorta di wiki o motore di documentazione sul posto di lavoro.

Certo, puoi caricare file abbastanza simili sul server, ma questo è il posto dove a volte ci dimentichiamo di guardare. Pensa a quante volte hai scaricato un'app per scopi di sviluppo e hai iniziato a leggere README.txt, o sei semplicemente passato alla pagina web di quell'app e hai iniziato a leggere la documentazione. Certo, potrebbe essere solo io con Linux fashion ma ancora ...

Sicuro che questo eliminerà solo il problema che i tuoi colleghi non sanno cosa e come stai lavorando.

Per gestire le impostazioni - basta dividerle. Se sono necessarie alcune impostazioni specifiche per l'app, perché l'app non ha un proprio file di configurazione? Le impostazioni comuni dovrebbero semplicemente rispondere all'ambiente secondo me, mentre le impostazioni delle app personalizzate dovrebbero avere impostazioni per i propri scopi [app], non avere paura della moltiplicazione delle impostazioni, perché sarai in grado di gestire tali impostazioni senza temere che ti capiti qualche altra app. Se pensi che gestire una tale quantità di impostazioni sia più difficile, ricorda che è prassi comune utilizzare un file per modello. Perché non fare lo stesso con le impostazioni? Inoltre c'è l'opzione Name_spacing ma in questo caso il tuo file di configurazione sarà ENORME, quindi ti suggerisco di usare le impostazioni spited proprio come suggerito da @Travis.

    
risposta data 31.05.2011 - 08:17
fonte
4

Abbiamo avuto un problema simile nel mio lavoro. L'abbiamo risolto non utilizzando i file di configurazione. Abbiamo scritto le cose che, una volta modificate, richiedevano che un codice cambiasse in qualsiasi modo nel codice, quindi spostato il resto delle proprietà in una tabella delle impostazioni in un database. Abbiamo indossato in grado di farlo perché controlliamo tutti i server su cui implementiamo il codice. Questo cambiamento ha semplificato drasticamente i nostri sistemi

    
risposta data 31.05.2011 - 05:56
fonte
2

Per le applicazioni correnti, se non è rotto non aggiustarlo - Potresti creare un gran casino se inizi a giocare con le impostazioni inutilmente in diverse applicazioni. Per le nuove applicazioni, semplicemente, inserisci le tue impostazioni condivise in un database.

    
risposta data 31.05.2011 - 09:06
fonte
1

Puoi includere un file esterno nel tuo app.config solo per appSettings. Il file incluso è piuttosto limitato in quello che puoi avere (solo il nodo appSettings) ma è utile se vuoi condividere solo cose.

\Software\Services
    shared.config
    \Service1
        service1.exe
        service1.exe.config
    \Service2
        service2.exe
        service2.exe.config

In questo caso hai appena service1 e service2 riferimento shared.config .

Inoltre, avere un servizio di configurazione è anche qualcosa che ho fatto, esp. quando c'è un gran numero di applicazioni. I servizi sono un po 'più semplici perché spesso risiedono nella stessa casella. Quando hai molte app Web su scatole diverse, hai bisogno di qualcos'altro esterno a cui fare riferimento.

Modifica, avrei dovuto includere un collegamento a un esempio di collegamento .

    
risposta data 31.05.2011 - 04:36
fonte