Il progetto ADO è stato introdotto già in COM, successivamente è stato sviluppato nuovamente per la piattaforma .NET, mantenendo però l’utilizzo di ADO con ADO.NET attraverso l’uso dei recordset e grazie a degli adattatori inseriti nel nuovo modello. Perché, quindi, Microsoft ha pensato di realizzare un nuovo modello di classi per l’accesso ai dati? Con l’ampliarsi degli scenari aziendali, reti private che si interconnettono attraverso reti pubbliche, le applicazioni client/server gestionali devono adeguarsi a questa rivoluzione. L’impegno delle aziende e dei produttori di software verso l’XML ed i Web Services sono un segnale di questa necessità di integrazione e del forte impegno di semplificare le applicazioni distribuite su larga scala. In questo scenario i programmi hanno bisogno di gestire i dati in modo indipendente dalla fonte di provenienza e XML è il collante che è stato trovato.
Anche ADO.NET soffre però di problemi, come ad esempio la gestione dei dati durante una possibile disconnessione dalla fonte dati remota, in questo caso ADO utilizza il concetto di recordset, ossia prelevare i dati da remoto, inserirli in un archivio XML locale, lavorare su questo e poi inviare nuovamente le modifiche o le aggiunte alla fonte dati remota.
Le classi di ADO.NET sono suddivise in namespace, in particolare in questo caso System.Data. All’interno di questo namespace troviamo la classe base per la gestione dei dati disconnessi, DataSet che ci permette di gestire in memoria una cache disconnessa indipendente dalla fonte dati, nella quale possiamo inserire viste provenienti da fonti diverse che in memoria diventano tabelle e relazioni basate su chiavi esterne tra queste. I dati in un DataSet sono editabili e gestibili sia attraverso una vista relazionale, sia attraverso una vista XML completamente sincronizzate e provenienti da specifici database, attraverso i cosidetti managed provider. Questi sono ottimizzati per una specifica fonte dati, ma esiste un managed provider che si appoggia su OleDb e che permette di utilizzare le classi provider oggi esistenti e di esporle al nuovo modello di accesso ai dati, questo namespace è il System.Data.OleDb. Esistono tuttavia dei managed provider ottimizzati per una specifica fonte dati, come ad esempio Microsoft SQL Server che è contenuto nel namespace System.Data.SqlClient. Si possono sviluppare tutti i provider che vogliamo e quindi utilizzare varie base dati con lo stesso applicativo, basta cambiare la stringa di connessione al database e poco altro. In futuro ho intenzione di mostrare, qui su questo blog, come creare un provider di dati per MySQL, scritto in ATL.
Oltre alle classi necessarie a permettere la gestione di connessioni ed il caricamento di dataset e l’esecuzione di comandi SQL, nei managed provider troviamo anche la classe DataReader che ci consente di gestire il cursore lato server di sola lettura a scorrimento in avanti ( forward ) per la rapida lettura di dati restituiti dall’esecuzione di una query. In un dataset, oltre ai dati provenienti da un provider, possiamo anche caricare le informazioni direttamente da stream o file XML e questo è molto importante per poter inviare il contenuto su altre piattaforme anche eterogenee tra loro.
In un prossimo articolo spiegheremo la classe DataSet e ne vedremo l’uso pratico nel caricamento di un file XML.
-
Archivi
- Giugno 2023
- Settembre 2021
- Luglio 2021
- Gennaio 2021
- Giugno 2020
- Aprile 2020
- Gennaio 2019
- Aprile 2017
- Marzo 2017
- Novembre 2016
- Ottobre 2016
- Giugno 2016
- Maggio 2016
- Ottobre 2015
- Maggio 2015
- Febbraio 2015
- Gennaio 2015
- Novembre 2014
- Ottobre 2014
- Settembre 2014
- Agosto 2014
- Luglio 2014
- Giugno 2014
- Maggio 2014
- Aprile 2014
- Gennaio 2014
- Dicembre 2013
- Settembre 2013
- Agosto 2013
- Luglio 2013
- Giugno 2013
- Maggio 2013
- Aprile 2013
- Marzo 2013
- Febbraio 2013
- Gennaio 2013
- Dicembre 2012
- Novembre 2012
- Ottobre 2012
- Settembre 2012
- Agosto 2012
- Luglio 2012
- Giugno 2012
- Maggio 2012
- Aprile 2012
- Marzo 2012
- Gennaio 2012
- Dicembre 2011
- Novembre 2011
- Ottobre 2011
- Settembre 2011
- Agosto 2011
- Luglio 2011
- Giugno 2011
- Maggio 2011
- Aprile 2011
- Marzo 2011
- Febbraio 2011
- Gennaio 2011
- Dicembre 2010
- Novembre 2010
- Ottobre 2010
- Settembre 2010
- Agosto 2010
- Luglio 2010
- Giugno 2010
- Maggio 2010
- Aprile 2010
- Marzo 2010
- Febbraio 2010
- Gennaio 2010
- Dicembre 2009
- Novembre 2009
- Ottobre 2009
- Settembre 2009
- Agosto 2009
-
Meta