Nel variegato mondo dello sviluppo web in ambito .NET, ci si rende presto conto che esiste una sorta di “zona d’ombra” in cui è difficile trovare del materiale di studio (libri per la precisione) in cui approfondire le tecniche di sviluppo. Mi sto riferendo ad ADO.NET, utilizzato solo per le applicazioni web, controlli ASP.NET 2.0, e sviluppato usando C# come linguaggio. La concomitanza di questi fattori, infatti, è rarissima da trovare. Il libro di Thangarathinam, MVP su .NET e sviluppatore alla Intel copre benissimo questa lacuna non da poco. Quasi sempre gli argomenti esposti in queste poco più di 500 pagine sono relegati ad alcuni capitoli nei libri su ASP.NET 2.0 (che sono numerosi), mentre ad esempio i libri che trattano ADO.NET in modo “puristico” non trattano, o poco, i nuovi e importanti controlli data-bound di ASP.NET 2.0.
E il tutto magari in VB.NET, linguaggio spesso preferito dai colleghi d’oltreoceano, mentre chi preferirebbe C# si trova un po’ in difficoltà nell’imparare i concetti in un linguaggio diverso dal proprio. Essendo questo libro così specializzato, si ottiene un approfondimento degli argomenti impossibile negli altri testi, restando nel contempo molto accessibile a chi ha le basi dello sviluppo in ASP.NET 2.0.
La prima parte (primi 3 capitoli) getta le basi da cui partire per gli approfondimenti dei capitoli successivi, ed introduce alle novità di ASP.NET 2.0 (primo capitolo), di ADO.NET 2.0 (secondo) e dei controlli web che si basano su fonte dati (terzo). Fin qui la teoria, non poca ma mai prolissa, è ben coadiuvata da piccoli esempi, e le novità rispetto alla versione 1.1 sono messe in particolare rilievo. Qualche immagine in più però non avrebbe guastato, come quando si spiegano le differenze tra il Treeview e il Menu, due controlli molti simili.
La vasta seconda parte – capitoli dal 4 al 12 – è il vero nocciolo del libro.
Si parte, non poteva essere diversamente, dal data binding utilizzando il SqlDataSource, dato che la maggior parte delle volte ci si appoggia a database Sql Server. Vengono presentati esempi utilizzando il GridView, ed eseguendo ogni operazione possibile sui dati (Select, Insert, Update e Delete), non trascurando le ottimizzazioni (tramite il caching) e la personalizzazione delle griglie dati. Il quinto capitolo è interamente dedicato all’XML come fonte dati, mentre il sesto approfondisce l’uso del controllo ObjectDataSource (in questo caso il titolo del capitolo, “Data Binding with Objects” è un po’ fuorviante).
Notevole il capitolo 7, dedicato ai controlli di menu e navigazione all’interno del sito (SiteMapPath, TreeView e Menu), uno dei più approfonditi che mi sia capitato di trovare, con riportate moltissime opzioni per la loro personalizzazione, spesso difficili da scovare anche sull’MSDN. Il corposo capitolo successivo entra nel merito di come personalizzare i controlli GridView, DetailsView e FormView tramite i template, e chi ha un minimo di esperienza su questi, sa che vengono utilizzati praticamente sempre, appunto per dare quel tocco originale (o per implementare particolari logiche business) alle proprie griglie dati. Giustamente l’autore evita di trattare, se non marginalmente, controlli tipo DataGrid, Repeater e DataList, molto in voga nelle versioni 1.X del .NET Framework ma caduti un po’ in disuso con la nuova versione, dato che sono stati rimpiazzati da altri controlli ben più potenti e gestibili (ovvero come ottenere di più scrivendo meno codice). Il capitolo 9 tratta dell’ ordinamento/paginazione dei dati visualizzati in un GridView, aggiungendo anche tutti i vari abbellimenti che spesso necessitano. Il capitolo 10 associa altri controlli data-bound al GridView, come il DetailsView e il FormView, anche qua analizzando tutte le varie migliorie e aggiunte possibili, mentre il capitolo 11, che in un certo senso chiude il discorso generale, analizza approfonditamente le transazioni, evidenziando le differenze tra il ADO.NET 1.1 e 2.0.
Arrivati a questo punto, avendo analizzato compiutamente l’argomento del libro, l’autore dedica 43 pagine (l’undicesimo capitolo) ad un case study, un sito per la prenotazione di automobili. Non è, per forza di cose, un esempio di un’applicazione reale (mancano infatti alcuni pilastri, come la sicurezza e la gestione dei pagamenti) ma è un valido esempio su come portare a termine un compito reale (applicazione web su 3 livelli) partendo dalle specifiche di progetto ed iniziando, ovviamente, dalla struttura del database. Essendo poi l’autore un esperto anche di XML, alcune funzionalità vengono implementate sfruttando le classi XML della versione 2.0 del Framework.
I restanti tre capitoli entrano nel merito di questioni più avanzate lato database e ADO.NET puro (il titolo di questa parte – ASP.NET e XML - è un po’ fuorviante, dato che non tratta esclusivamente di questo). Il primo di essi (13esimo capitolo) spiega come lavorare direttamente con gli oggetti DataSet, DataTable, ecc. in maniera programmatica, senza agganciarsi ai controlli data-bound analizzati nelle prime due parti del libro. Si parla anche, raro da trovarsi in altri libri, delle spesso utilizzate DAB, ovvero le Enterprise Library Data Access Block. Il 14esimo è “Sql Server 2005 centrico”, dato che tratta delle nuove capacità di Sql Server di utilizzare il CLR per la creazione di stored procedure, e soprattutto approfondisce la gestione di dati in XML. L’ultimo capitolo infine (15esimo) espone il secondo case study, un sito di commercio elettronico sullo stile di AdventureWorks (vengono infatti usate 3 delle sue tabelle) e mette insieme tutti i pezzi spiegati negli ultimi capitoli.
A meno che il lettore sia già un esperto della materia, e voglia approfondire solo un particolare aspetto, consiglio vivamente di leggere i capitoli nell’ordine in cui sono presentati, dato che ognuno di essi si basa su quanto spiegato in quelli precedenti.
In tutto il libro non si fa cenno, se non di sfuggita (purtroppo), a Visual Studio 2005. Gli esempi mostrano direttamente il codice .aspx senza fare riferimento a come si potrebbero ottenere gli stessi risultati utilizzano le procedure guidate dell’ambiente di sviluppo. È una scelta dell’autore che può piacere o non piacere. Personalmente un qualche richiamino ogni tanto non lo avrei trovato sgradito, ma dal punto di vista della formazione e dell’apprendimento è indubbio che la scelta dell’autore sia la più giusta (anche se a costo di una maggiore fatica iniziale).
Data la lunghezza di ogni capitolo (tra le 20 e le 45 pagine) consiglio di dedicare una giornata (anche la sera, dopo il lavoro), o almeno 4 ore, per lo studio di ognuno di essi; in tal modo si possono completare i 15 capitoli del libro in poco più di 2 settimane (o 3 settimane lavorative). Così facendo si assimilano efficacemente i contenuti, esempi compresi, dato che la parte scritta non è poca, e questa richiede necessariamente un certo lasso di tempo.
Come la maggior parte dei libri Wrox, i capitoli non terminano con domande o quiz di riepilogo, né tantomeno con esercitazioni da fare; sono presenti solo una breve introduzione e un breve sommario riepilogativo alla fine. Le spazio del libro viene tutto utilizzato per il “core learning”, ovvero le vere e proprie spiegazioni teorico/pratiche. A prima vista, infatti, questo libro appare di dimensioni “leggere”, ma giunti al termine della lettura ci si rende conto della mole di materiale esposto dall’autore.
L’inglese utilizzato dall’autore è sufficientemente comprensibile, anche se ogni tanto qualche parola non usuale ha richiesto l’aiuto del dizionario. La formattazione e l’impaginazione sono quelle classiche in stile Wrox, ovvero caratteri piccoli ma leggibili, codice su sfondo grigio e rilegatura molto flessibile, che consente di tenere aperto il testo sulla scrivania anche a metà.
Il codice è fornito come singoli file (.aspx, .cs, .xml, .sql e così via), e non in “solution” organiche (magari una per ogni capitolo). Consiglio in tal caso (come ho fatto io) di crearsi un WebSite vuoto con all’interno diverse cartelle, una per ogni capitolo. All’interno di queste cartelle mettervi poi i singoli file, facendo solo attenzione a gestire opportunamente i vari web.config e le cartelle App_Code e App_Data (eventualmente si potrebbe creare una solution per ogni capitolo, ma è un po’ più dispersivo). In tal modo, oltre a poter visualizzare il rendering a video dei controlli (parte che spesso manca nel testo), si ha l’opportunità di avvantaggiarsi dell’intellisense per analizzare le varie proprietà e metodi dei controlli stessi. I file hanno anche una denominazione molto utile; avendo anteposto al loro nome un numero progressivo, è più facile associarli alla numerazione dei listati all’interno del testo.
Tutti gli esempi, inoltre, sono scritti in C#, e quindi gli sviluppatori VB.NET necessiteranno di una fase di traduzione da un linguaggio all’altro (non è presente una versione in VB.NET scaricabile dal sito).
Fase che sarà senz’altro breve, data la preponderanza di codice dei controlli server .aspx – quindi molto HTML, piuttosto che di code-behind in puro C#. Per fortuna il codice è praticamente privo di errori, se non qualche dimenticanza di proprietà obbligatorie nei controlli (ad es. la proprietà ID nei vari GridView).
L’utilità di questo libro è di tenerlo a fianco del pc sulla scrivania. Gli esempi di codice verranno senz’altro utilizzati nel proprio lavoro (come è capitato a me).
A questa pagina http://www.wrox.com/WileyCDA/WroxTitle/productCd-047004179X.html è presente la scheda dettagliata del libro, dove si può scaricare, in formato pdf, il sommario, l’indice analitico e tutto il primo capitolo. Il codice scaricabile pesa circa 1,5 MB.
È presente anche un forum dedicato a questo testo (come anche per tutti gli altri della Wrox). Alla data in cui scrivo questa recensione (4 novembre 2007) sono presenti 3 domande di lettori, a cui però nessuno ha dato risposta, nemmeno l’autore.
PRO
Questo libro copre una necessità non da poco, approfondire il data binding dei nuovi controlli web utilizzando C#, e ci riesce molto bene. In nessun altro libro, attualmente in commercio, questi argomenti vengono sviscerati così in profondità e con tale ricchezza di dettaglio.
È sorprendente vedere come in ogni capitolo vengano fornite così tante informazioni e così tanti dettagli da andare anche oltre quello che servirebbe per le proprie attività di sviluppo, anche quelle più sofisticate, segno questo di una grande competenza dell’autore sulla materia. E il tutto senza nemmeno diventare prolissi, ma anzi aggiungendo quel “quid” di qualità che sono i consigli dell’autore stesso, mai così necessari in questo ambito, dove le strade per raggiungere un obiettivo possono essere ben più di una (spesso molte).
CONTRO
In questo ottimo libro sono ben pochi gli aspetti negativi. Volendo essere pignoli si può segnalare una certa carenza di immagini. In parecchi punti dell’esposizione infatti, bisogna immaginarsi come sia il risultato a video di ciò che si studia (oppure provare direttamente il codice esposto).
Voto complessivo: 9,5/10
Lettore: Intermedio
Sommario
Acknowledgments.
Introduction.
Part I: Introduction.
Chapter 1: Introduction to ASP.NET 2.0.
Chapter 2: Introduction to ADO.NET 2.0.
Chapter 3: ASP.NET 2.0 Data Controls.
Part II: ASP.NET 2.0 Data Source and Data Bound Controls.
Chapter 4: Data Binding with the SqlDataSource Control.
Chapter 5: Data Binding with XML Data.
Chapter 6: Data Binding with Objects.
Chapter 7: ASP.NET 2.0 Site Navigation.
Chapter 8: Displaying and Editing Data Using Templates.
Chapter 9: GridView Sorting and Paging.
Chapter 10: Advanced Data Source and Data Bound Controls.
Chapter 11: Transactions.
Chapter 12: Case Study: Creating an Online Rental Reservation System Using N-Tier Architecture with ASP.NET 2.0 and SQL Server 2005.
Part III: ASP.NET and XML.
Chapter 13: Advanced ADO.NET for ASP.NET Data Display.
Chapter 14: Accessing Data from SQL Server 2005.
Chapter 15: Case Study: Best Practices for Creating ASP.NET Web Sites.
Index.
Titolo:
Professional ASP.NET 2.0 DatabasesAutore: Thiru Thangarathinam
Editore: Wrox
ISBN: 047004179X
Pagine: 528
Prezzo: 32,99 € (su Amazon)
Data di uscita: 21/02/2007