Ma quanto sono interessanti Linq e C# 3.0?

Daniele Bochicchio

di Daniele Bochicchio, in PDC 2003 e 2005, giovedì 15 settembre 2005 ore 01.27

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

Per inserire un commento, devi avere un account.

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



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0, 10annidi, ADO.NET, ADO.NET Data Services, ADO.NET Entity Framework, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 3.5, ASP.NET 3.5 per tutti, ASP.NET 4.0, ASP.NET AJAX, ASP.NET Charting, ASP.NET MVC, ASPItalia.com, Cache, CSS, Custom Control, Database, Databinding, Datagrid, Deployment, Dynamic Data Control, HttpHandler, HttpModule, HttpRuntime, IIS, ISAPI, Javascript, LINQ, LINQ to Entities, LINQ to SQL, LogParser, Master Pages, Media Center, Membership API, Microsoft Expression, Mono, MySQL, Object Oriented Programming, Off Topic, Office, ORM, Pattern, PDC 2008, Profile API, Provider Model, Report, Roles API, Security, Silverlight, Silverlight 2.0, Silverlight 3.0, SQL Server, User Control, Visual Studio, Web Service, Windows 7, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Mobile, Windows Presentation Foundation, Windows Server, Windows Vista, WinFS, XAML, XBox 360, XHTML, XML, XSLT
BLOG INFO
  • 889 post, 388 commenti, 187 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA