Sto usando i seguenti framework di configurazione home-grown per gestire la configurazione dei miei progetti per un paio di anni a questa parte:Sostituzione framework di configurazione, alla ricerca di una alternativa
I primi uno imita i file di Java
.properties
(un gruppo di lineesupergroup.subgroup.property=value
con supporto per le raccolte) e funziona bene per molte situazioni (trovo che sia il migliore per le piccole applicazioni). Questo è buono per molto semplice configurazioneUn secondo basato su
DataContractSerializer
(e facoltativamenteXmlSerializer
) che consente tutte le funzionalità del primo con tutti i vantaggi di XML e meno idraulici per farlo funzionare. Questo è buono ma poco pratico e ingombrante da gestire senza un'interfaccia utente esplicita sopra di esso per mitigare i grattacapi di insegnare agli utenti finali a modificare XML.
Entrambi i quadri maresciallo esistente da e POCOS senza problemi per consentire l'accesso ai valori di configurazione attraverso proprietà/campi (attraverso manuale/serializzazione automatica rispettivamente), quindi sono molto facili da lavorare come sviluppatore.
Ora che sto rivedendo la loro capacità di abilitare il database e la configurazione fluente, sto cercando un'alternativa pronta all'uso (preferibilmente open source). Non ho alcun problema a rielaborare tutti i miei progetti esistenti se riesco a ridurre la duplicazione di codice non necessaria e consentire loro l'accesso a DB e una configurazione fluente (oltre alle loro capacità esistenti).
Qualche suggerimento o vale la pena girare il mio per ottenere le funzionalità che sto cercando?
Nella mia ricerca ho trovato this domanda potenzialmente duplicato cui risponde Nini ma non è stato aggiornato in quasi 2 anni e supporta solo le opzioni ho già coperti (basata sulla sua documentazione in ogni caso). Ho perso qualcosa nella mia ricerca o c'è un'alternativa migliore?
Aggiornamento
Le caratteristiche esplicite che sto cercando sono:
- file XML
- INI/Java-like
properties
file - Database (almeno MS SQL e SQLite, opzionalmente MySQL e qualsiasi altro come si possa immaginare)
- Fluente (generazione codice non richiesta)
- Una sorta di API di estensione per consentirmi di aggiungere le mie fonti
- È necessario serializzare su/da una qualsiasi delle origini dati per essere accessibile tramite proprietà/campi.
- supporto Enumeration
Sarei interessato ad estendere un quadro esistente se è abbastanza aperta per fare quello che devo fare, ma per il resto probabilmente non è una buona misura.
UPDATE
La funzionalità dal System.Configuration
spazio dei nomi esistente è grande, e io sono a conoscenza di come ben si può lavorare, ma in generale non fa quello che sto cercando. L'ho usato (anche in scenari avanzati) ma essendo che consente solo un'estensibilità XML limitata: non è quello che sto cercando.
Se devo dare una qualsiasi delle funzionalità predefinite, direi che la configurazione fluente è la meno importante (sarebbe estremamente difficile fornire comunque un'interfaccia valida per questo in genere). Metterò insieme qualcosa in cima a quello che trovo.
Il solo fatto che siano trascorse più di 24 ore (e più di 125 visualizzazioni) e nessuno è stato in grado di offrire un ragionevole alterativo mi dice che probabilmente non esiste. Inizierò da solo nella speranza che qualcuno possa fornire un'alternativa interessante.
Puoi esplicita le caratteristiche che sono dopo? Accesso al DB (che significa memorizzazione della configurazione in un repository centrale, credo) e configurazione fluente. Qualunque altra cosa? –
@VincentHubert - Aggiornato con i requisiti minimi. –
in termini di progetto di rilavorazione, tenere a mente interfaccia non Implementazione - IMHO, questo è il genere di cose in cui si crea un'interfaccia che definisce come si desidera che il codice sia in grado di interagire con qualsiasi cosa sembra essere il quadro attuale configurazione. Quindi se qualcosa non soddisfa tutte le tue esigenze, puoi semplicemente "colmare le lacune" per implementare l'interfaccia –