Dati portatili nell'app C #

1

Ho sviluppato un'applicazione di front-end C # per la gestione di un database SQL ai fini del controllo dei documenti. Il progetto per questo database ha diversi consulenti e un cliente sparsi in una varietà di località geografiche. Preoccupazioni per la sicurezza significa che probabilmente trovare un database connesso ad internet non sarà una buona soluzione. Sto cercando un modo per fornire al cliente e ad altri consulenti la possibilità di accedere ai dati, per scopi di navigazione più di ogni altra cosa, ma mi interessa forse essere in grado di sincronizzare le modifiche apportate da altri nel database principale in basso strada.

L'azienda con cui mi trovo è una società di architettura e usiamo Revit per la nostra modellazione e produzione di disegni. Revit è interessante come applicazione perché i documenti vengono utilizzati come database relazionali. Così mi è venuto in mente che forse posso avere la mia applicazione per creare un documento che è davvero un database relazionale e che può fornire un'applicazione per leggere e manipolare i dati e fornire i dati come documento agli altri giocatori. Quindi non avranno bisogno di accedere al vero database di SQL Server, ma potranno vedere i dati così come erano quando è stato creato il "documento di dati".

Poi ho preso in considerazione la serializzazione. Fondamentalmente, se scrivo solo un modulo serializzato dei dati dalla mia applicazione a un documento, e poi fornisco un'applicazione simile che popola semplicemente il modello dal documento piuttosto che dal database, realizza la stessa cosa. Poiché utilizzo le pratiche ObservableCollections, Linq e MVVM, posso persino riutilizzare gran parte del codice tra le due applicazioni.

Quindi quali sono i vantaggi con i database relazionali portatili che vorrei perdere con i dati serializzati? E qualcuno sa come riesce a farlo Revit? Non penso che sia una soluzione SQLLite o NoSQL, in quanto non vedo nessuno dei database associati a quelli installati sulle macchine Revit.

    
posta Paul Gibson 02.03.2015 - 15:54
fonte

1 risposta

2

Non conosco Revit, ma MS Access fornisce questa funzionalità (trattando i documenti come dati relazionali) da oltre 20 anni. I principali vantaggi rispetto alla serializzazione sono

  • dati esterni: puoi recuperare e manipolare i dati in porzioni, non devi caricare 1 GB di dati per cambiare solo un singolo carattere in un singolo record.

  • accesso parallelo da diversi processi.

  • capacità di indicizzazione (puoi simulare ciò usando i dizionari in-memory, ma potrebbe essere più complesso dell'indicizzazione fornita da un database)

  • metadati
  • : ogni DB relazionale, anche leggero, consente di definire uno schema di database e di interrogarlo anche. Nel caso di MS Access, ad esempio, è possibile utilizzare l'applicazione front-end Access e ispezionare lo schema del DB, definire i tipi di dati, aggiungere una descrizione a ciascun campo, aggiungere uno schema grafico e così via.

  • a seconda del sistema db, ottieni alcune chicche come viste o vincoli.

Penso che la maggior parte di questi punti valga anche per SQLite.

    
risposta data 02.03.2015 - 16:11
fonte

Leggi altre domande sui tag