Condividi tramite


Consigli sulle strategie di accesso ai dati

Aggiornamento: novembre 2007

In ADO.NET è previsto un modello di accesso ai dati nel quale si apre una connessione, si acquisiscono dati o si esegue un'operazione, quindi si chiude la connessione. Per utilizzare questo modello in ADO.NET sono disponibili due strategie di base: in una è prevista la memorizzazione di dati in un dataset, ovvero una cache di record in memoria, che può essere utilizzata mentre non è attiva la connessione all'origine dati. Per utilizzare un dataset è necessario crearne un'istanza e inserirvi dati provenienti dall'origine mediante un adattatore. È quindi possibile utilizzare i dati presenti nel dataset, ad esempio associando i controlli ai membri del dataset. Per ulteriori informazioni, vedere Cenni preliminari sui dataset in Visual Studio.

Una strategia alternativa consiste nell'eseguire operazioni direttamente nel database. In questo modello viene utilizzata una query TableAdapter o un comando dati nel quale è inclusa un'istruzione SQL oppure un riferimento a una stored procedure. È quindi possibile eseguire la query o il comando per effettuare l'operazione. Per ulteriori informazioni, vedere Recupero di dati nell'applicazione.

Memorizzazione dei dati nei dataset

Un modello comune per l'accesso ai dati nelle applicazioni di Visual Studio consiste nel memorizzare i dati in dataset e nel leggere e scrivere i dati nel database utilizzando dei TableAdapter o degli adattatore dati Il modello del dataset presenta i seguenti vantaggi:

  • Utilizzo di più tabelle   In un dataset possono essere presenti più tabelle, gestite come oggetti discreti. Ogni tabella può essere utilizzata separatamente oppure è possibile stabilire tra di essere relazioni di tipo padre-figlio.

  • Gestione di dati provenienti da più origini   Nelle tabelle di un dataset possono essere presenti dati provenienti da più origini diverse, ad esempio da database diversi, da file XML, fogli di calcolo e così via, tutti nello stesso dataset. Quando i dati sono nel dataset, è possibile gestirli e metterli in relazione in un formato omogeneo, come se provenissero da un'unica origine.

  • Spostamento dei dati da un livello all'altro in un'applicazione distribuita   Organizzando i dati in un dataset, è possibile spostarli facilmente tra il livello di presentazione, il livello aziendale e il livello dati delle applicazioni.

  • Scambio di dati con altre applicazioni   Un dataset rappresenta un potente strumento per scambiare dati con altri componenti dell'applicazione e con altre applicazioni. Nei dataset è previsto un supporto estensivo per funzionalità quali la serializzazione dei dati in formato XML e la lettura e scrittura degli schemi XML.

  • Associazione di dati   Se si utilizzano i form, sarà generalmente più semplice associare i controlli ai dati in un dataset anziché caricare a livello di codice i valori dei dati nel controllo dopo l'esecuzione di un comando.

  • **Gestione di record per il riutilizzo   **Un dataset consente di utilizzare ripetutamente gli stessi record senza dover ripetere le query al database. Utilizzando le funzionalità dei dataset è possibile filtrare e ordinare i record e utilizzare il dataset come un'origine dati se si esegue un'operazione di spostamento.

  • Facilità di programmazione   Quando si utilizza un dataset, è possibile generare un file di classe nel quale la struttura viene rappresentata mediante oggetti di prima classe. A una tabella Customers nel dataset, ad esempio, è possibile accedere come all'oggetto dataset.Customers. La programmazione risulta quindi più semplice, chiara e meno soggetta a errori e viene supportata dagli strumenti di Visual Studio, quali IntelliSense, la Configurazione guidata adattatore dati e così via.

Esecuzione delle operazioni di database in modo diretto

In alternativa è possibile interagire direttamente con il database. In questo modello viene utilizzato un oggetto comando dati nel quale è inclusa un'istruzione SQL oppure un riferimento a una stored procedure. È quindi possibile eseguire il comando per effettuare l'operazione. Per ulteriori informazioni, vedere Comandi e parametri (ADO.NET).

Nota sulla sicurezza:

Quando si utilizzano comandi dati con una proprietà CommandType impostata su Text, controllare attentamente le informazioni inviate da un client prima di passarle al database. Utenti malintenzionati potrebbero tentare di inviare istruzioni SQL modificate o aggiuntive con l'obiettivo di ottenere un accesso non autorizzato o di danneggiare il database. Prima di trasferire l'input di un utente in un database, si consiglia di verificare sempre che le informazioni siano valide. È opportuno utilizzare, quando possibile, query con parametri o stored procedure.

L'esecuzione di operazioni dirette nel database è caratterizzata da vantaggi specifici, tra i quali ricordiamo i seguenti:

  • Funzionalità supplementari   Come accennato, esistono alcune operazioni, quali l'esecuzione dei comandi DDL, che possono essere eseguite solo mediante comandi dati.

  • Maggiore controllo sull'esecuzione   Utilizzando i comandi, e un lettore dati per la lettura dei dati, si ottiene un controllo più diretto sulle modalità e sui tempi di esecuzione di un'istruzione SQL o di una stored procedure e sull'esito dei risultati o dei valori restituiti.

  • Riduzione del sovraccarico   Eseguendo operazioni di lettura e scrittura direttamente nel database, è possibile evitare la memorizzazione dei dati in un dataset. Poiché la quantità di memoria richiesta per il dataset è consistente, questa scelta consente di ridurre in parte il sovraccarico nell'applicazione, con particolare riferimento a situazioni in cui i dati verranno verosimilmente utilizzati una sola volta, come nella visualizzazione dei risultati di una ricerca in una pagina Web. In tal caso, la creazione e il riempimento di un dataset potrebbero rappresentare un passaggio non necessario nella visualizzazione dei dati.

  • Riduzione della programmazione in alcune istanze   In alcuni casi, specialmente nelle applicazioni Web, è necessaria una programmazione supplementare per salvare lo stato di un dataset. Nelle pagine Web Form, ad esempio, la pagina viene ricreata a ogni percorso di andata e ritorno. A meno che non si aggiunga un'ulteriore programmazione per salvare e ripristinare un dataset, anche quest'ultimo viene eliminato e ricreato a ogni percorso di andata e ritorno. Se si utilizza un lettore dati per leggere direttamente dal database, si eviteranno gli ulteriori passaggi necessari a gestire il dataset.

Consigli sull'accesso ai dati

Nelle sezioni seguenti vengono forniti consigli sulla strategia di accesso ai dati da utilizzare con singoli tipi di applicazioni.

Windows Form

In generale nei Windows Form è consigliabile utilizzare i dataset. I Windows Form vengono di norma utilizzati nei rich client nei quali il form e i relativi dati non vengono creati ed eliminati a ogni operazione dell'utente, come invece accade con i Web Form. Di solito nelle applicazioni per Windows Form sono anche disponibili scenari di accesso ai dati che consentono di trarre vantaggio dalle gestione di una cache di record, ad esempio visualizzando i record uno per uno nel form. Per ulteriori informazioni, vedere Creazione di applicazioni dati client.

È consigliabile utilizzare i dataset nelle circostanze seguenti:

  • Quando si utilizzano ripetutamente gli stessi record, come nel caso di un utente che scorre i record.

  • Quando si utilizza l'architettura di associazione dei dati dei Windows Form, appositamente studiata per l'impiego dei dataset.

  • In uno qualsiasi dei casi elencati in precedenza per i Web Form.

Utilizzare una query TableAdapter o un comando dati nelle circostanze riportate di seguito:

  • Quando viene recuperato di valore scalare dal database.

  • Quando viene eseguita una operazione non di tipo query, ad esempio un comando DDL.

  • Nella visualizzazione di dati di sola lettura in un form, ad esempio quando si crea un report. In altre parole, se non è necessario mantenere i dati disponibili dopo avervi avuto accesso, utilizzare un comando dati.

Web Form

In generale è consigliabile utilizzare i comandi dati. Per recuperare i dati, utilizzare un lettore dati. Dato che le pagine Web Form e i relativi controlli e componenti vengono ricreati a ogni percorso di andata e ritorno della pagina, risulta spesso scomodo creare e riempire ogni volta un dataset, a meno che non si intenda anche memorizzarlo nella cache tra un percorso e l'altro.

È consigliabile utilizzare i dataset nelle circostanze seguenti:

  • Quando si desidera utilizzare più tabelle distinte o tabelle provenienti da origini dati diverse.

  • Quando si scambiano dati con un'altra applicazione o con un componente come un servizio Web XML.

  • Quando è richiesta un'elaborazione massiccia con ogni record recuperato dal database. Se si utilizzano un comando e un lettore dati, l'elaborazione del singolo record man mano che lo si legge può portare a tempi di connessione molto lunghi, con relative conseguenze in termini di prestazioni e scalabilità dell'applicazione.

  • Quando nell'elaborazione di dati sono coinvolti record indipendenti, ad esempio informazioni di ricerca nei record correlati.

  • Se si desidera eseguire operazioni XML come le trasformazioni XSLT dei dati.

  • Quando è preferibile utilizzare le agevolazioni di programmazione offerte dai dataset.

Servizi Web XML

I servizi Web XML sono applicazioni Web ASP.NET nelle quali viene quindi utilizzato lo stesso modello della pagine Web Form: il servizio Web XML viene creato ed eliminato a ogni chiamata. Ne consegue che il modello di accesso ai dati di un servizio Web XML è sostanzialmente identico a quello dei Web Form. I servizi Web XML, tuttavia, sono spesso oggetti di livello intermedio il cui scopo consiste, per un'ampia parte, nello scambio di dati con altre applicazioni sul Web.

È consigliabile utilizzare un dataset nei casi seguenti:

  • Quando il servizio Web XML viene utilizzato per inviare e ricevere i dati, ad esempio inviando il dataset come valore restituito di un metodo e ricevendolo come argomento di un metodo. Si tratta di una scelta fondamentale nei servizi Web XML. Anche se esistono altri fattori di cui tenere conto per l'utilizzo di un comando dati, lo scambio di dati con altri componenti indica quasi sempre la necessità di utilizzare un dataset.

  • In uno qualsiasi dei casi elencati in precedenza per i Web Form.

È consigliabile utilizzare un comando dati, ed eventualmente un lettore dati, nei casi seguenti:

  • Quando mediante il servizio Web XML viene recuperato un valore scalare.

  • Quando mediante il servizio Web XML viene eseguita una operazione non di tipo query, ad esempio un comando DDL.

  • Quando viene chiamata una stored procedure dal servizio Web XML per eseguire una logica all'interno del database.

Vedere anche

Concetti

Novità relative ai dati

Dispositivi e accesso ai dati

Altre risorse

Procedure dettagliate relative ai dati

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

ADO.NET