Mi sono sparato 3 ore di Linq e C# 3.0 in compagnia di Anders Hejlsberg. Linq è praticameante un insieme di API che permettono l'integrazione all'interno dei linguaggi (ed infatti C# 3.0 e VB 9.0 ce l'avranno) di una sinstassi SQL-like che consente di rendere il codice una specie di mega raccoglitore di interrogazioni.
Da notare che Linq è in realtà un progetto ben più ampio, che si divide essenzialmente in due tecnologie: DLinq e XLinq.
DLinq è il nome in codice, in pratica, della prossima versione di ADO.NET, quella su cui si baserà anche WinFS. Interessante è notare come in realtà il modello di accesso ai dati come lo conosciamo oggi, così verbose :), sarà sostituito da una sintassi decisamente più orientata all'interrogazione.
Le prime considerazioni a caldo che vi vengono da fare è che si tratta di una tecnologia davvero interessante. Interrogare oggetti, collezioni, database e file XML (XLinq serve in quest'ultimo caso) con una sintassi del genere è anche fin troppo semplice, forse.
Nell'area degli OR Mapper probabilmente DLinq si posizionerà in maniera differente rispetto a quelli già esistenti, ma fatto sta che è davvero molto semplice sfruttare la nuova tecnologia. L'effetto collaterale è che forse lo è troppo, ma di sicuro il DataSet non avrà più ragione di esserci: è tutto tipizzato, con partial classes che rappresentano le nostre entities create automaticamente a partire dalla struttura del database. Il fatto che vengano utilizzate partial classes fa sì che sia possibile estendere una entity aggiungendo metodi o proprietà ulteriori, per far sì che non sia necessario toccare i file autogenerati.
Il discorso per XLinq è simile, diventa molto più semplice creare e manipolare file XML senza dover per forza utilizzare XmlDocument.
Ora, la mia paura, anche se Linq mi piace molto, è che alla fine, specie per le applicazioni ASP.NET, si finisca col ritornare al fare il single-tier(one) con tutto dentro, perchè tanto alla fine è comodo e ci si mette poco. Staremo a vedere.
Sul fronte C# 3.0, mi sono rimasti più impressi object inizializer e collection inizializer.
Nel primo caso si tratta di poter inizializzare un oggetto assegnando direttamente i valori alle proprietà. Ecco ad esempio un oggetto Persone che accetta
Person p = new Person{Name = "Daniele", Nick="DevGuro"};
Questa funzionalità esiste già in Javascript da un po', nonostante Javascript non sia object oriented, ed è molto comoda.
Il secondo è lo stesso identico concetto degli array inizializer applicato alle collezioni. Unica limitazione, implementare ICollection<T>.
La novità (che ha anche VB 9.0) che mi rende perplesso, ma solo forse perchè mi riporta alla mente il Variant, è la type inference. Anzichè scrivere
int i = 5;
si potrà scrivere
var i = 5;
ed automaticamente avere in i una variabile di tipo int. Ovviamente il concetto vale anche per altri tipi.
Le specifiche complete sono su questo sito web. Mancheranno anche circa 3 anni alla RTM di questa roba e forse molto cambierà o non uscirà mai, ma il solo pensiero che a fine mese a Redmond mi faranno vedere Orcas mi rende felice :)
Probabilmente queste due sessioni sono le migliori che abbia visto finora e se mi stavo domandando, JasJar a parte, se ne era valsa la pena, la risposta l'ho trovata proprio così. Ora non mi resta che tuffarmi nella sessione dedicata a Atals :)
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- PDC 05: fine dei giochi, il 16 settembre 2005 alle 22:20
- L'ObjectDataSource che non ti aspetti, il 16 settembre 2005 alle 21:03
- Esperienze extraterresti del 360° tipo: XBox 360 e Windows Vista MCE, il 16 settembre 2005 alle 17:52
- Windows Vista under the hood, il 16 settembre 2005 alle 02:24
- Supporto per RSS in Windows Vista, il 16 settembre 2005 alle 00:46
- A pranzo con Somasegar, il 15 settembre 2005 alle 03:20