Ma quanto sono interessanti Linq e C# 3.0?

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
Ma quanto sono interessanti Linq e C# 3.0?

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
TAG CLOUD
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0, .NET Micro Framework, 10annidi, ADO.NET, 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 4.0 Guida completa, ASP.NET AJAX, ASP.NET Charting, ASP.NET MVC, ASPItalia.com, C# 4 Guida completa, Cache, Community Days 2010, Community Days 2012, CSS, Custom Control, Database, Databinding, Datagrid, Deployment, Dynamic Data Control, Entity Framework, Expression Blend, HTML 5 Espresso, HTML5, HttpHandler, HttpModule, HttpRuntime, IIS, ISAPI, Javascript, jQuery, LINQ, LINQ to Entities, LINQ to SQL, LogParser, Master Pages, Media Center, Membership API, Metro, Microsoft Expression, MIX11, Model Virtual Casting, Mono, MySQL, Object Oriented Programming, Off Topic, Office, ORM, Parallel FX, Pattern, PDC 2008, Profile API, Provider Model, Real Code Day 6, Report, Roles API, Security, SEO, Silverlight, Silverlight 2.0, Silverlight 3.0, Silverlight 3.0 Guida Completa, Silverlight 4.0, SQL Server, User Control, Visual Basic 2010 Guida completa, Visual Studio, WCF Data Services, WCF RIA Services, Web Service, web.config, Windows 7, Windows 8, Windows Azure, Windows Client, Windows Communication Foundation, Windows Identity Foundation, Windows Live Services, Windows Phone, Windows Phone - il libro, Windows Phone 7, Windows Phone 7.1, Windows Presentation Foundation, Windows Server, Windows Vista, WinRT, XAML, XBox 360, XHTML, XML, XNA, XSLT
BLOG INFO
  • 1.019 post, 438 commenti, 195 trackback
  • Feed blog: RSS Atom
In evidenza