Come devo archiviare i dati di sola lettura da distribuire con la mia applicazione?

17

Sto sviluppando un'applicazione desktop e questa applicazione richiede alcune informazioni da eseguire, ma non modifica nessuna di queste informazioni (i dati devono essere caricati su ogni esecuzione dell'app, ma i dati sono mai modificati). I dati devono essere archiviati sullo stesso computer in cui è in esecuzione l'app (archiviazione sul lato client?).

È anche meglio se l'utente non può facilmente modificare queste informazioni (supponendo che non abbiano molta conoscenza IT).

Come dovrei conservare questo tipo di informazioni? Un database locale? XML che viene inviato con l'applicazione?

Sto usando WPF.

    
posta appa yip yip 20.07.2016 - 16:15
fonte

4 risposte

14

Un file binario sarebbe la risposta ovvia, ma dipende da come lo stai caricando - potresti anche renderti la vita facile, se puoi.

L'XML potrebbe essere una buona scelta dato che ci sono metodi incorporati in C # per leggerlo. Puoi aggiungere un checksum ai tuoi dati, in modo che se l'utente lo modifica, il checksum non corrisponderà più (è necessario per aggiungere un assegno per assicurarsi che il checksum sia valido)

Un db locale potrebbe creare più problemi perché hai altre dipendenze necessarie per potervi accedere

    
risposta data 20.07.2016 - 16:24
fonte
21

Se i dati non cambiano mai e sono di sola lettura , inseriscili in un file di codice come elenco di costanti.

public readonly string AppStartUpData = "MyAppNeedsThis";

Se questi dati sono diversi per distribuzione, allora un file esterno va bene.

.Net è dotato di file .config (App.Config) integrati. Si dovrebbero usare quelli in quanto esistono metodi standard (integrati nel framework) per leggere le informazioni da essi.

Usa i file di configurazione nel caso in cui un'impostazione debba cambiare (mai dire mai) poiché sono solo file di testo (Xml). Se sono disponibili informazioni sensibili, è possibile crittografare un'impostazione se necessario.

    
risposta data 20.07.2016 - 16:40
fonte
15

Puoi sempre aggiungere un file al tuo progetto e impostare il suo tipo di build su Embedded Resource in modo che sia incorporato direttamente nell'applicazione stessa.

In alternativa un file che è crittografato e collocato in una posizione accessibile.

    
risposta data 20.07.2016 - 17:12
fonte
6

Se non vuoi che l'utente dia una sbirciatina ai dati, devi serializzarli in un file di dati binari.

Solo l'app conoscerà la lunghezza dei blocchi da leggere.

Non conosco C # ma in Java dovresti creare il file in questo modo:

FileOutputStream fos = new FileOutputStream(file);      
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(var1);
oos.writeObject(var2);
oos.writeObject(var3);
oos.writeObject(var4);

... e loro lo leggono così:

FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
Object o[] = new Object[4];
o[0] = ois.readObject();
o[1] = ois.readObject();
o[2] = ois.readObject();
o[3] = ois.readObject();
    
risposta data 20.07.2016 - 16:22
fonte

Leggi altre domande sui tag