Il miglior approccio per mantenere le impostazioni nei file

1

Sto procedendo alla migrazione del modo in cui un'app rende persistente le sue impostazioni.

Ha scritto e letto i dati dal registro; ora si desidera caricare / salvare file XML nella cartella C: \ AppData \ MyApp \ Version per diversi motivi.

Aveva molte cartelle sul registro.

1a domanda: Qual è l'approccio migliore: un mega file con l'intera configurazione o diversi file?

Seconda domanda: l'organizzazione delle cartelle, dei valori e delle chiavi del registro è un gran caos e non corrisponde alla struttura sorgente. C'è molto intreccio tra l'organizzazione e le classi delle cartelle di registro.

Ci sono alcuni valori inseriti / cancellati dal registro SORGENTE. Intendo parti di codice che leggono e scrivono solo una voce. Dato che sto lavorando con i file, non conosco un modo migliore per farlo oltre a caricare e salvare l'intero file! Qualcuno può suggerire approcci migliori?

Terza domanda: più documentazione sull'argomento, per favore!

    
posta sergiol 17.11.2017 - 02:01
fonte

2 risposte

3

Hai provato SQLite ? È un database SQL leggero incorporato incorporato . Molte applicazioni lo utilizzano per archiviare le impostazioni degli utenti e altri casi di utilizzo di persistenza nelle app desktop: tutti i principali browser, sistemi operativi, Skype e altro .

Ovviamente questo significherebbe che le impostazioni dell'utente non saranno "leggibili dall'uomo" in quanto tali. Non tanto quanto XML comunque. È un requisito ed è per questo che stai usando XML?

Puoi anche solo trasportare il file SQLite, nel caso volessi che gli utenti siano in grado di eseguire il porting dell'applicazione (le impostazioni dell'utente sono intatte) su un'altra macchina.

Il problema che dovrai affrontare quando lo metti giustamente, è che in qualsiasi schema di serializzazione / persistenza basato su testo (JSON, XML) se stai salvando automaticamente le Impostazioni utente dovrai SCRIVERE l'intero file al salvataggio. Un database, in virtù degli indici e della sua struttura di archiviazione interna, può evitare questo costo.

Anche se provengo da uno sfondo multipiattaforma, ho visto che la tendenza per le moderne app desktop su Windows è di evitare il registro il più possibile. Soprattutto perché lo scenario di disinstallazione è così doloroso per gli utenti che hanno difficoltà con le app che non cancellano TUTTE le loro voci nel registro di Windows.

Per riassumere, in base a requisiti di leggibilità, portabilità e prestazioni come sopra descritto, puoi scegliere Un file XML di grandi dimensioni, Diversi più piccoli o Un database SQLite.

    
risposta data 17.11.2017 - 21:11
fonte
0

Accettare che avere la persistenza è una buona cosa e che la quantità di dati necessari per quella persistenza può variare da quasi nulla (un singolo carattere o parola), a grandi quantità di dati, con complessità estreme, c'è certamente bisogno essere in grado di apportare modifiche man mano che il sistema cresce.

A seconda della quantità e complessità dei dati di persistenza, uno o più file che utilizzano XML, JSON o cose simili spesso funzionano, finché il volume dei dati diventa "troppo grande".

Mentre decidi tra "un mega file che ha l'intera configurazione o diversi file", considera anche il tipo di dati: sono principalmente dati altamente strutturati o non strutturati.

Se altamente strutturato, allora una soluzione come SQLite è una buona opzione. I dati sono nel DB e indicizzati ecc., La maggior parte dei problemi che hai citato saranno facili da risolvere.

Ho un problema simile: piuttosto che cercare di fornire la persistenza per una singola app, il mio problema è una grande quantità di dati che sono stati aggiunti e letti da diverse app diverse. Nonostante provi vari modi per combinare tutti questi elementi, in modo tale che tutte le voci relative a un oggetto specifico vengano combinate, quindi eliminando i duplicati, non sono riusciti. Solitamente perché le app sono state progettate per funzionare con quantità di dati molto più piccole.

SQLite non funziona per questo, perché i dati non sono ben strutturati: continuo a trovare nuovi elementi che avrebbero dovuto essere nel dizionario dei dati.

Recentemente sono stato introdotto in MongoDB, un tipo di database NoSQL. Per i miei bisogni, dal momento che tutti i miei file sono tali da poter estrarre i dati desiderati e creare documenti JSON, spero che MongoDB (o un tipo simile di DB) sia in grado di combinare, ordinare e deduplicare I bisogno.

Se puoi creare documenti JSON (o alcuni equivalenti) con i dati che hai attualmente e potenziarli con MongoDB o altri programmi NoSQL, dovresti essere in grado di trovare le risposte, come detto in precedenza da Robert Harvey.

Se ti ritroverai con dati ben organizzati, SQLite potrebbe essere un'ottima soluzione, o potresti scoprire che un semplice file XML può funzionare.

    
risposta data 18.11.2017 - 19:47
fonte