Condividi tramite


Confronto fra ADO.NET e ADO

Aggiornamento: novembre 2007

È possibile comprendere le funzionalità di ADO.NET confrontandole con specifiche funzionalità di ActiveX Data Objects (ADO).

Rappresentazioni di dati in memoria

In ADO la rappresentazione dei dati in memoria è costituita dal set di record, mentre in ADO.NET è il dataset. Esistono importanti differenze tra i due tipi di rappresentazioni di dati.

Numero di tabelle

Un set di record è simile a una singola tabella. Per contenere dati di più tabelle di database, il set di record deve utilizzare una query JOIN, che unisce i dati di diverse tabelle di database in una singola tabella.

Un dataset rappresenta invece un insieme di una o più tabelle. Le tabelle all'interno di un dataset sono definite tabelle dati, più specificamente esse rappresentano oggetti DataTable. Se un dataset contiene dati di più tabelle di database, conterrà anche più oggetti DataTable. In altre parole, ogni oggetto DataTable corrisponde in genere a una singola tabella o vista del database. In tal modo, un dataset può imitare la struttura del database sottostante.

Un dataset contiene in genere anche relazioni. Una relazione all'interno di un dataset è analoga a una relazione di chiave esterna in un database, vale a dire, associa tra loro le righe delle tabelle. Se, ad esempio, un dataset contiene una tabella sugli investitori e un'altra tabella sugli acquisti di ciascun investitore, potrebbe contenere anche una relazione che collega ciascuna riga della tabella degli investitori con le righe corrispondenti della tabella degli acquisti.

Dal momento che il dataset può contenere più tabelle distinte e conservare le informazioni sulle relazioni tra le tabelle, può contenere strutture di dati molto più numerose rispetto a un set di record, tra cui tabelle con relazioni autoreferenti e tabelle con relazioni molti-a-molti.

Esplorazione dei dati e cursori

In ADO è possibile scorrere in modo sequenziale le righe del set di record mediante il metodo MoveNext. Poiché in ADO.NET le righe vengono rappresentate come insiemi, è possibile scorrere una tabella nello stesso modo in cui si scorre un insieme o si esegue l'accesso a righe specifiche mediante un indice di chiave primaria o un indice ordinale. Gli oggetti DataRelation gestiscono le informazioni sui record principali e di dettaglio e forniscono un metodo per consentire all'utente di recuperare i record correlati al record in uso. Partendo, ad esempio, dalla riga della tabella Investor per "Luigi Bianchi", è possibile passare al gruppo di righe della tabella Purchase in cui sono descritti i relativi acquisti.

Nota:

Le applicazioni Windows Form forniscono il controllo BindingNavigator per spostarsi tra i record di un'origine dati. Per ulteriori informazioni, vedere Controllo BindingNavigator (Windows Form).

Un cursore è un elemento del database che controlla l'esplorazione dei record, la capacità di aggiornare i dati e la visibilità delle modifiche apportate al database da altri utenti. ADO.NET non presenta un oggetto cursore implicito, bensì include le classi di dati che forniscono la funzionalità di un cursore tradizionale. La funzionalità di un cursore di sola lettura di tipo forward-only, ad esempio, è disponibile nell'oggetto DataReader di ADO.NET.

Connessioni aperte ridotte a icona

In ADO.NET le connessioni vengono aperte solo per il tempo necessario per eseguire un'operazione di database, ad esempio una selezione o un aggiornamento. Le righe possono essere lette in un dataset e quindi utilizzate senza mantenere la connessione all'origine dati. In ADO il set di record è in grado di fornire l'accesso disconnesso, anche se è stato progettato principalmente per fornire l'accesso connesso.

Non c'è una differenza significativa tra l'elaborazione disconnessa in ADO e in ADO.NET. In ADO le comunicazioni con il database vengono eseguite mediante chiamate a un provider OLE DB. In ADO.NET la comunicazione con il database avviene attraverso oggetti TableAdapter o adattatori dati, come ad esempio SqlDataAdapter, che effettua una chiamata a un provider OLE DB o alle API fornite dall'origine dati sottostante. La differenza sostanziale sta nel fatto che l'adattatore consente di controllare la modalità di trasmissione al database delle modifiche apportate al dataset, ottimizzando le prestazioni, eseguendo controlli di convalida dei dati o fornendo elaborazioni aggiuntive.

Condivisione di dati tra le applicazioni

La trasmissione di un dataset ADO.NET tra le applicazioni risulta molto più semplice della trasmissione di un set di record disconnesso ADO. Per trasmettere un set di record disconnesso ADO da un componente all'altro, è necessario utilizzare il marshalling COM. Per trasmettere dati in ADO.NET, è necessario utilizzare un dataset, che può trasmettere un flusso XML.

La trasmissione di file XML presenta, rispetto al marshalling COM, i seguenti vantaggi:

Tipi di dati più numerosi

Il marshalling COM fornisce un insieme di tipi di dati limitato, vale a dire quelli definiti dallo standard COM. Dal momento che la trasmissione dei dataset in ADO.NET è basata sul formato XML, non esiste alcuna restrizione relativa ai tipi di dati. Pertanto, i componenti che condividono il dataset possono utilizzare in genere numerosi tipi di dati, in base alle specifiche esigenze.

Prestazioni

È possibile che la trasmissione di un set di record ADO o di un dataset ADO.NET di grandi dimensioni comporti un notevole consumo delle risorse di rete, in quanto maggiore è la quantità di dati trasmessa più intenso diventa l'utilizzo della rete. Sia ADO che ADO.NET consentono all'utente di ridurre la quantità di dati trasmessa. Tuttavia, ADO.NET offre un ulteriore vantaggio in relazione alle prestazioni, in quanto non richiede le conversioni dei tipi di dati. Al contrario, ADO, che consente di trasmettere i set di record tra i componenti mediante il marshalling COM, richiede la conversione dei tipi di dati ADO in tipi di dati COM.

Penetrazione dei firewall

È possibile che un firewall interferisca con due componenti che tentano di trasmettere set di record ADO disconnessi. È importante ricordare che i firewall sono in genere configurati per consentire il passaggio di testo HTML ma per impedire il passaggio delle richieste a livello di sistema, ad esempio il marshalling COM.

Poiché i componenti si scambiano dataset ADO.NET mediante il formato XML, i firewall possono consentire il passaggio dei dataset.

Vedere anche

Concetti

Vantaggi di ADO.NET

Altre risorse

Guida introduttiva all'accesso ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Visualizzazione di dati su form nelle applicazioni Windows

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati

Risorse di dati