Come spiegato in un precedente articolo, la teoria della programmazione ad oggetti, ritiene necessario che l’interfaccia utente sia separata dalla gestione dei dati e dalla elaborazione di questi.
La struttura che fa da sostegno all’interfaccia utente e alle logiche dell’applicativo si chiama Data Access Layer.
Il Data Access Layer (da ora in poi DAL) di un’applicazione è il livello di interazione con la base di dati, dove si effettuano le connessioni e si eseguono query di selezione, inserimento, aggiornamento o cancellazione.
Questo strato nella struttura delle applicazioni è fondamentale per poter accedere ai dati in un database e per eseguire le classiche operazioni di lettura, scrittura ed eliminazione.
E’ costituito praticamente da una astrazione del database fisico in una serie di classi utilizzabili da linguaggi ad oggetti.
Vengono costruite delle classi che si occupano di tutte le operazioni tra il database e il programma.
Un esempio di framework utilizzabile come DAL è MS Entity Framework.
Un DAL deve poter leggere una Tabella di un Database e riempire una classe che contenga come elementi tutti i suoi Campi.
Questo consente allo sviluppatore di poter lavorare solo con gli oggetti, senza conoscere alcuna istruzione di interfacciamento col Database.
Oltretutto un DAL può anche essere sviluppato in due livelli, in cui il primo livello è composto dall’interfaccia tra il DAL e il Database, mentre il secondo si preoccupa di interagire col programma e fare da tramite con il primo livello.
Un DAL così costituito permette una altissima astrazione dell’interfaccia col Database, poiché basterà sostituire il primo livello per potersi connettere con un’altro Database.
Quali funzioni deve avere un DAL ?
Innanzitutto deve avere un applicativo che generi, partendo dalla struttura del DB, le classi che utilizzeremo.
Ogni classe creata avrà come nome quello di una Tabella del DB e dovrà contenere come proprietà tutti i campi della stessa.
Funzioni necessarie sono quelle di lettura di un record tramite campi chiave, la possibilità di inserire un nuovo record, di modificare uno già esistente o di eliminarlo.
Queste sono le funzionalità di base che dovrà avere sempre un DAL.
Ci sono poi altre funzionalità che potrebbero essere utili, come la creazione di una lista di record o altre funzioni specifiche della Tabella.
Lavorando con il Microsoft .Net Framework e con MS SQL Server come Database, io utilizzo il framework di accesso ai dati ADO.Net, che rappresenta una interfaccia tra il Database e il framework di sviluppo.
Ho provato alcuni DAL creati da questo Framework, ma non rispondevano alle mie necessità.
Io volevo un DAL che creasse l’astrazione tra il Database e l’applicativo, che generasse del codice in automatico per la lettura, la correzione e l’eliminazione, ma soprattutto volevo sfruttare una delle caratteristiche dei Database per velocizzare queste operazioni, le Stored Procedures. Queste funzioni permettono di avere comandi precompilati ed ottimizzati, per accedere ai dati e interagire con loro.
Mi serviva anche avere la possibilità di scegliere se creare, utilizzare queste Stored Procedures o interfacciarmi con comandi diretti solamente.
Un’altra cosa essenziale era la necessità di creare funzioni che gestissero la concorrenza sui records. Su questo torneremo nel prossimo articolo in cui spiegherò come si lavora con i dati in presenza di elaborazioni su più record, più tabelle, più database e soprattutto più utenti che potrebbero agire nello stesso momento sugli stessi dati.
A questo punto ho creato un applicativo che creasse queste classi in automatico leggendo la struttura del Database MS SQL Server con le specifiche da me indicate.
Con questo programma è possibile selezionare il Server ed il Database da cui creare le classi, come si vede qui sopra.
Dopo di che è possibile selezionare le varie tabelle, se devono essere create o utilizzate le Stored Procedures, il tipo di concorrenza (Ottimistica o Pessimistica, questo verrà spiegato nel prossimo articolo) e se creare anche un web service.
Con questa utility è molto semplice creare lo strato DAL, in maniera facile ed efficiente, soprattutto adeguata alle proprie necessità.