Notes de lecture du livre Linq in Action de Fabrice Marguerie, Steve Eichert et Jim Wooley
Ce livre est un hit chez l’éditeur Mannings et la seconde édition est déjà impression. Linq fait partie des nouveautés du framework 3.5 et étant donné le rythme qu’a connu la plateforme depuis 2 ans, c’est le genre de framework qui vous fait dire : je dois me mettre à jour. J’avais déjà entrevu Linq dans un projet ASP.NET, principalement pour la facilité d’utilisation qu’il apporte à la manipulation de sources de données XML. Mais pour avoir suivi le blog d’un des auteurs, je savais que Linq était plus que ça.
Linq in Action n’est pas qu’un catalogue des 3 principales “versions” (Objects, XML et Sql) du framework. La première partie explique les origines et les nouveautés du langage C#/VB.NET qui ont permis et qui constitue les dessous :
- l’inférence des variables locales : var toto = “Moi”;
- les constructeurs implicites Personne p = new Personne { Nom=“Guyonnet-Duluc”, Prenom=“Matthieu”, Age = 30 }
- les expressions lambdas : personne => personne.Age>20;
- les méthodes étendues : maCollectionPersonne.Where(personne => personne.Age >20) Where est une méthode statique qui prend la collection en premier paramétre et une expression lambda.
Ce qui donne par exemple pour Linq to Objects issu du livre :
dgBooks.DataSource = (from book in SampleData.Books where book.Title.Length > 5orderby book.Title select new { Book=book.Title.ToUpper() }).ToList();
Toutes ces possibilités sont très bien expliquées dans le livre, et ce n’est pas innocent car c’est ce qui forme la base de Linq comme un moyen d’utiliser une programmation plus orientée fonctionnelle avec des langages objets. Remarque importante, un programme utilisant Linq peut s’éxécuter avec la CLR 2.0 (.NET framework 2.0 SP1) car le compilateur n’a pas changé dans les version 3.0 et 3.5.
L’ouvrage aborde ensuite les différentes déclinaisons de Linq : Object, XML et SQL. A chaque fois on compare l’avant et l’après Linq : les améliorations par rapport au modèle de programmation existant (par exemple les API XML souvent très rébarbatives à aborder). Bien sûr les opérateurs (Where, OrderBy, Group , let ) sont analaysés mais les auteurs n’oublient pas les limites, notamment en terme de performances. Enfin l’exemple de Linq to Amazon permet d’entrevoir le développement d’un “provider” personnalisé.
Bien sûr après avoir ingurgité les 500 pages on en arrive à se demander : Quelle est la place de Linq dans une architecture ? Autant les versions Objets et XMl peuvent être “innocentes” car utilisées pour simplifier, rendre plus lisible un accès ou un algorythme, la version “SQL” est plus problématique. Cette dernière arrive tout juste avant Linq to Entities, sous-partie du framework ORM ADO.NET Entity framework. On peut résumer en disant que Linq to Sql est un ORM “léger” qui convient bien pour les schémas de sgbd qui se mappent facilement aux objets (1 table - 1 objet) et utilisant SQL Server. Linq to Sql pour le RAD, Linq to Entities pour le monde des applications d’entreprise semble être le mot d’ordre de Microsoft.
Linq in Action est un très bon livre pour apprendre et surtout apprécier les subtilités de Linq.
Billet publié dans les rubriques Programmation, Lecture le