Ma quanto sono interessanti Linq e C# 3.0?

di Daniele Bochicchio, in PDC,

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 :)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese