TL; DR -
Ho un'applicazione standalone che rimarrà relativamente piccola. Sto cercando di valutare tra l'utilizzo di file XML o un database leggero per l'archiviazione locale dei dati che deve essere persistente. Quali fattori dovrei prendere in considerazione quando scelgo tra i due approcci?
Supponiamo di avere un programma con le seguenti funzionalità e requisiti:
- A un utente verrà fornito un elenco a discesa di tutti gli elementi disponibili nel programma, ognuno dei quali rappresenta un diverso tipo di oggetto (ad esempio, auto diverse, componenti tecniche, animali, ecc.) che verranno popolati quando il programma carica dalla selezione disponibile, quindi è dinamico in quanto riflette i dati disponibili con niente hard-coded. Se qualcuno aggiunge / rimuove i file / le voci per un oggetto, non sarà più accessibile nel programma e sparirà dall'elenco a discesa quando verrà ricaricato.
- Sarà possibile per un utente aggiungere un nuovo oggetto (con un'interfaccia di caselle di testo e altri elementi modificabili) alla raccolta di dati e farne uso. I dati devono anche essere facilmente condivisi aggiungendo successivamente i nuovi oggetti alla raccolta di un'altra persona:
- Un pensiero sarebbe semplicemente il trascinamento + rilascio di file in una cartella o la gestione del file in movimento sull'interfaccia
- Un altro potrebbe avere l'interfaccia consentire l'opzione di unire le voci in un file di database condiviso al file dell'utente
Stavo considerando i file di database locali C # per questo, che non sono stato in grado di ottenere una strong comprensione della mia ricerca. Sto assumendo che quello che sto pensando di loro sia vero, ma non ne sono sicuro. Questa è non un'applicazione client-server in qualsiasi modo e verrà eseguita localmente su (ipoteticamente) qualsiasi installazione di Windows moderna.
Il programma è, in breve, un generatore di creature per un gioco di ruolo, inteso a dare all'utente un tempo più semplice a fare i calcoli e le progettazioni per qualsiasi cosa vogliano prendersene la maggior parte dalle loro mani. Idealmente, questa sarà una sorta di applicazione "installa questo e hai fatto", con poco o nulla che deve essere fatto o installato. Ci sono circa 80 campi per ogni oggetto e circa 150 righe di XML (ho un file di modello ma non lavoro sul parser), ma molte sono stringhe semplici o coppie di valori-chiave che non cambieranno quando gli oggetti vengono caricati. I file XML o le righe del database potrebbero facilmente espandersi, poiché alcune cose come l'elenco delle abilità potrebbero espandersi drasticamente per alcune creature (ad esempio alcune creature potrebbero avere una colonna / campo per una determinata sezione, un'altra potrebbe avere 10). Mi aspetto che ci siano nel range di 300-600 scelte possibili, ma come sopra, il numero è dinamico e potrebbe aumentare oltre. Non mi aspetto che superi i 1000
Sono consapevole che i file di puro testo potrebbero essere un'altra opzione, ma la natura del mio programma potrebbe renderli un po 'caotici da leggere / analizzare, forse, ma non sono completamente impossibili se nessuna di queste due opzioni è valida.
La semplicità dell'utilizzo dell'XML, dato che sono file singoli e quindi più facili da condividere, superano la potenziale efficacia dell'opzione database?
Le mie ipotesi sulla questione mi portano a credere quanto segue:
- Se i database locali funzionano nel modo in cui mi aspetto che siano e sono così semplici come spero, non ci saranno dubbi che sarà l'approccio più semplice, a parte il fatto che potrebbe essere difficile condividere solo i dati di UNO oggetto. Vi sono altre parti del codice che possono trarre grande vantaggio anche dall'uso di queste tabelle; se sono ciò che penso che siano, le cose diventeranno molto più facili per me stesso e molto probabilmente per l'utente.
- Dalla precedente esperienza di analisi dell'XML con C #, dovrebbe essere piuttosto semplice, ma forse non altrettanto affidabile o efficiente, eseguire le operazioni specificate con i file XML.
Grazie!