Ho una domanda sulla memorizzazione dei dati per un'applicazione desktop, se devo distribuire un'applicazione senza un database MS SQL, come potrei facilitare il recupero/archiviazione dei dati. So che posso anche serializzare gli oggetti dati in un file (come un file XML), esiste un altro modo più efficiente ed efficace?Qual è il modo migliore per archiviare/recuperare i dati per un desktop senza utilizzare un database?
risposta
SQLite fa molto bene come database incorporato. Ha anche .NET/Mono bindings disponibile.
È possibile esaminare SQL Server Compact Edition.
Ci sono una serie di domande alle quali si potrebbe chiedere di rispondere alla propria domanda. Ai fini di questa risposta, assumerò:
1) È necessario memorizzare una quantità limitata di dati. 2) Funzionalità incorporata (nessun requisito di terze parti o database).
Il più pratico, integrato (intrinseco all'installazione di base di .NET) è un DataSet - in particolare, un DataSet tipizzato.
È possibile aggiungere una quantità indefinita di tabelle e dati al DataSet (limitato dalla memoria disponibile) e salvare e caricare facilmente i dati dal disco. DataSet può essere serializzato facilmente in dati Xml associati allo schema.
Non penso che dovresti chiederti qual è il modo "migliore", ma quale sarà il modo migliore per TE.
Quando si dice che non è possibile avere un database, presumo che si intenda che l'applicazione deve essere autonoma ma potrebbe utilizzare un file di database locale? Se è così e si stima che saranno necessari grandi volumi di archiviazione dei dati, è possibile che si desideri utilizzare uno dei numerosi prodotti di database locali compatti. Ad esempio, SQLite e InnoDB vengono in mente.
Se si memorizzano solo piccole quantità di dati, un file binario XML o semplice potrebbe essere migliore per voi, poiché ridurrebbe il footprint dell'applicazione e rimuoverà una dipendenza da un prodotto di terze parti. A volte (e sottolineo molto raramente!) Utilizzo ancora il classico file INI perché è ben supportato nel codice e produce un codice estremamente compatto.
Per quanto riguarda l'efficienza e l'efficacia, tutto si riduce a come si decide di implementare l'accesso ai dati. Certo, il tipo di database che usi ha un impatto, ma devi anche supportare qualsiasi cosa tu implementi, quindi pagherebbe per vedere come viene definita e documentata l'API del database, se ha una community attiva per il supporto, ecc., e scegli quello con cui ti senti più a tuo agio.
Se si utilizza Windows e è necessario interrogare i dati in modo semplice, considerare il motore di database ESENT integrato (http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx). CodePlex ha un wrapper .NET che include una classe PersistentDictionary (http://managedesent.codeplex.com/) che funziona come un dizionario .NET, ma è supportato da un file di database sul disco.
fantastico, grazie. – aggietech