Architettura di ADO.NET

L'elaborazione dei dati è stata sempre basata principalmente su un modello a due livelli basato su connessione. Visto l'utilizzo crescente dell'architettura a più livelli per l'elaborazione dei dati, i programmatori si avvalgono di un approccio disconnesso per ottenere applicazioni con scalabilità superiore.

XML e ADO.NET

ADO.NET si avvale di XML per fornire accesso disconnesso ai dati. ADO.NET è stato progettato in stretta associazione con le classi XML in .NET Framework: si tratta di componenti di un'unica architettura.

In .NET Framework ADO.NET e le classi convergono nell'oggetto DataSet. È possibile compilare il DataSet con dati provenienti da un'origine XML, sia che si tratti di un file che di un flusso XML. È possibile scrivere il DataSet sotto forma di XML compatibile con W3C (World Wide Web Consortium), includendone lo schema sotto forma di schema XSD (Schema Definition Language) di XML, indipendentemente dall'origine dei dati nel DataSet. XML, che costituisce il formato di serializzazione nativo di DataSet, rappresenta un supporto eccellente per lo spostamento di dati tra i livelli e rende il DataSet una soluzione ottimale per le attività in remoto relative al contesto dei dati e dello schema da e per un servizio Web XML.

È inoltre possibile sincronizzare il DataSet con un XmlDataDocument, in modo da fornire in tempo reale accesso relazionale e gerarchico ai dati. Per ulteriori informazioni, vedere Sincronizzazione di un DataSet con un XmlDataDocument.

Componenti di ADO.NET

I componenti di ADO.NET sono stati progettati per scomporre l'accesso ai dati dalla modifica dei dati. A ciò concorrono due componenti fondamentali di ADO.NET: il DataSet e il provider di dati .NET Framework, che è costituito da un insieme di componenti che include gli oggetti Connection, Command, DataReader e DataAdapter.

Il DataSet di ADO.NET costituisce il componente principale dell'architettura disconnessa di ADO.NET. Il DataSet è stato espressamente progettato per un accesso ai dati indipendente dall'origine dati. È quindi possibile utilizzarlo con numerose e svariate origini dati, con dati XML o per la gestione di dati locali all'applicazione. Nel DataSet è disponibile un insieme di uno o più oggetti DataTable, costituiti da righe e colonne di dati, oltre a informazioni su chiave primaria, chiave esterna, vincoli e relazioni relative ai dati degli oggetti della DataTable.

L'altro elemento fondamentale dell'architettura di ADO.NET è il provider di dati .NET Framework, i cui componenti sono stati espressamente progettati per la modifica dei dati e per l'accesso rapido, forward-only e di sola lettura ai dati. L'oggetto Connection fornisce connettività a un'origine dati e consente di accedere ai comandi del database per restituire dati, modificare dati, eseguire stored procedure e inviare o recuperare informazioni relative ai parametri. Il DataReader fornisce un flusso di dati ad elevate prestazioni dall'origine dati. Il DataAdapter costituisce infine un ponte tra l'oggetto DataSet e l'origine dati. Gli oggetti Command vengono utilizzati dal DataAdapter per eseguire comandi SQL nell'origine dati in modo da caricare dati nel DataSet e riconciliare le modifiche apportate ai dati nel DataSet fino all'origine dati.

È possibile scrivere provider di dati .NET Framework per qualunque origine dati. .NET Framework viene fornito completo di due provider di dati .NET Framework: il providere di dati .NET Framework per SQL Server e il provider di dati .NET Framework per OLE DB.

Nel diagramma seguente vengono illustrati i componenti dell'architettura di ADO.NET.

Architettura di ADO.NET

Attività remote o marshalling dei dati tra livelli e client

La struttura del DataSet facilita il trasporto dei dati ai client tramite il Web mediante i servizi Web XML, oltre a consentire il marshalling dei dati tra componenti .NET mediante i servizi remoti di .NET. È possibile utilizzare in modalità remota anche un DataSet tipizzato in modo sicuro. Per una panoramica sui servizi Web XML, vedere Cenni preliminari sui servizi Web XML. Per un esempio di utilizzo di un DataSet da parte di un servizio Web XML, vedere Utilizzo di un DataSet da un servizio Web XML.

Per informazioni preliminari sui servizi remoti, vedere Cenni preliminari delle funzionalità remote di .NET. Si noti che è possibile utilizzare gli oggetti DataTable anche con i servizi remoti, ma non è possibile trasportare tali oggetti mediante un servizio Web XML.

Requisiti per la piattaforma ADO.NET

L'SDK di Microsoft .NET Framework (in cui è incluso ADO.NET) è supportato da Microsoft® Windows® 2000, Microsoft® Windows NT® 4 con Service Pack 6a, Microsoft® Windows® Millennium Edition, Microsoft® Windows® 98 e Microsoft® Windows® SE. Per utilizzare il provider di dati .NET Framework per SQL Server o il provider di dati .NET Framework per OLE DB, è necessario installare Microsoft Data Access Components versione 2.6 o successiva.

Nell'esempio di codice seguente viene mostrato come includere lo spazio dei nomi System.Data nelle applicazioni, in modo da consentire l'utilizzo di ADO.NET.

Imports System.Data
[C#]
using System.Data;

Le classi ADO.NET sono contenute in System.Data.dll e sono integrate con le classi XML contenute in System.Xml.dll. Quando si compila codice in cui viene utilizzato lo spazio dei nomi System.Data, disporre riferimenti sia a System.Data.dll che a System.Xml.dll. Per un esempio di compilazione di un'applicazione ADO.NET tramite il compilatore della riga di comando, vedere Esempio di applicazione di ADO.NET.

Selezione di un DataReader o un DataSet

Quando si stabilisce se utilizzare un DataReader (vedere Recupero di dati mediante il DataReader) o un DataSet (vedere Creazione e utilizzo dei DataSet) in un'applicazione, è necessario prendere in considerazione il tipo di funzionalità richiesto dall'applicazione. Utilizzare un DataSet per eseguire le seguenti operazioni:

  • Eseguire attività remote sui dati tra livelli o da un servizio Web XML.
  • Interagire dinamicamente con i dati, associandoli ad esempio a un controllo Windows Form o combinando e correlando dati da più origini.
  • Memorizzare localmente i dati nella cache nell'applicazione.
  • Fornire una visualizzazione XML gerarchica dei dati relazionali e utilizzare strumenti quali XSLT (XSL Transformation) o la query XPath (XML Path Language) sui dati. Per ulteriori informazioni, vedere XML e il DataSet.
  • Eseguire un'elaborazione estensiva dei dati senza richiedere una connessione aperta all'origine dati, in modo da liberare la connessione per consentirne l'utilizzo da parte di altri client.

Se le funzionalità fornite dal DataSet non risultano necessarie, è possibile migliorare le prestazioni dell'applicazione mediante il DataReader, in modo da restituire i dati in modo forward-only e di sola lettura. Benché il DataReader venga utilizzato dal DataAdapter per riempire i contenuti di un DataSet (vedere Compilazione di un DataSet da un DataAdapter), l'utilizzo del DataReader consente di migliorare le prestazioni, liberando memoria altrimenti consumata dal DataSet ed evitando di utilizzare il processo per la creazione e il riempimento dei contenuti del DataSet.

Vedere anche

Cenni preliminari su ADO.NET | Accesso ai dati mediante ADO.NET | Esempio di applicazione di ADO.NET