En direct des TechEd : le KeyNote et LINQ

le 06/11/2007 par Alain Buzzacaro
Tags: Évènements

Holà !ça y est, je suis à Barcelone pour mon premier TechEd Developers !
Voici un petit résumé tout chaud de deux moments intéressants de la première journée.

  • Le "Hands on Lab" : sacalm !

" Self Paced Hands-on-Labs " permet de toucher tous les derniers produits et technos MS. On peut jouer en solo, ou encore suivre des sessions de 30 à 70 minutes. En cas de besoin, des formateurs certifiés sont là...

Vu d'en haut, ça calme non ? :)

Vu d'en bas, quand on a du temps à perdre, ben c'est bien sympa...

  • Le Key Note, intitulé "Build great applications"

C'est le patron de la division Développeurs chez MS, S. Somasegar, qui s'est exprimé pour lancer cette nouvelle édition des TechEd.

Après une petite introduction sur l'importance de la collaboration entre designers et développeurs, ce qui lui permet au passage de positionner Silverlight et la gamme Expression, Soma commence par présenter les chiffres d'évolution de 4 de ses produits phares : VS2K5, TFS, VS Express ainsi que MSDN.

Vertigineux, non ? Soma est en charge de ces produits, entre autres. Le décor est planté !

Avancées et lignes directrices...

Puis suit une liste des principales avancées ces 2 dernières années sur la plateforme, les outils et le contenu.

Ces technologies sont vraisemblablement celles que MS va pousser dans les mois à venir, à commencer par l'actuel TechEd...

- Plateforme et langage : LINQ et le Sync Framework + Presentation Foundation, Communication Foundation, Worflow Foundation + Silverlight qui se veut cross browser & cross platform

- Outils : Visual Studio, notamment avec Office 2007 + Team System + Expression avec Workflow. Nouveauté pour Visual Studio, VS2008 pourra désormais cibler différentes version du framework : le "multi-targetting"

- Content : Patterns & Practices + Soma annonce au passage les BluePrints, qui ressemblent aux Red Books d'IBM sauf qu'ils viendront aussi sous la forme d'addins VisualStudio. Il annonce la sortie prochaine d'un Blue Print sur "Software & Services". De plus, des Code Galleries seront disponibles l'année prochaine.

Les annonces...

Soma annonce la sortie de MS Sync Framework pour que les données suivent les utilisateurs, connectés ou non. On apprend qu'une CTP est disponible à partir d'aujourd'hui même.

Belle annonce : Soma annonce aussi que VS2K8 et .NET 3.5 seront disponibles en novembre 2007. Le public applaudit...

Tiens, je connais aussi des clients OCTO qui vont être contents... ;-)

"Use what we ship, ship what we use"

Après une vidéo tordante sur la productivité des outils MS " True Dev Story ", Soma pousse Team System sur le thème : nous utilisons nos produits pour faire nos propres produits, alors quelle meilleure preuve que ça marche ?

Soma annonce ensuite 2 nouveautés :

1- les Visual Studio Premier Partners auront accès au code source de Visual Studio (oui, vous avez bien lu). Cela leur permettra de debugguer plus facilement leurs addins par exemple.

2- il sera désormais légal et gratuit d'étendre, de personnaliser et de distribuer Visual Studio. Un myVisualStudio en quelque sorte...
Voilà qui devrait bien aider les DSL Tools non ?

2 démos

La première démo porte montre l'hyper productivité des outils MS. Elle porte sur un site web de vente en ligne. Toutes les technos y sont : ... ASP.NET, SharePoint 2007, Workflow Foundation pour le pipeline d'achat, LINQ, Office 2007 pour l'administration back office, WPF bindé sur des tables SQL Server, des contrôles ASP.NET et AJAX.

Au passage, on voit un designer toujours synchronisé au code, une Bread crumb native, des CSS supportées nativement, le multi-targetting sur un projet Web, le beautifullage de code en un coup de Ctrl+K+D, de l'IntelliSense, coloration syntaxique et un debugguer pour JavaScript, ...

En fin de démo, j'observe un écran Silverlight d'un rayon virutel comme je n'en avais jamais vu... A quand Telemarket en .NET ? :-)

Pas mal !

L'autre démo est sur World of Warcraft : un add-on écrit avec VS a été codé pour personnaliser des sons et des sur des actions précises. Cet add-on sera bientôt disponible sur CodePlex.

  • LINQ, par Luca Bolognese

Speaker talentueux, Luca est le LINQ Lead Program Manager.

A ma grande surprise, cette session de présentation / introduction à LINQ a rassemblé beaucoup, beaucoup de monde. Les questions à la fin illustrent, il me semble, une certaine méfiance de la part du public présent envers cette techno, dans le genre " Est-ce vous confirmer l'absence de MARS, de cache, de routines XSLT, ... ", ou encore une forme de méconnaissance de cette techno par des questions sur le mode " Est-ce que l'on peut : créer la requête programmativement ? Composer la requête morceau par morceau ? ". En tous cas, avec le Key Note, c'était la session de la journée.

Luca s'est efforcé de montrer en quoi nous pourrons développer différemment avec LINQ, ... et (surtout) pourquoi. En plus d'être énormément drôle et vivante, la présentation de l'italien a été un exemple de simplicité et de bon sens.

Simplicité

Luca est venu avec 5 slides comptant en tout environ 50 mots (!). On a eu droit à plus d'une heure de démo. Son exemple est simplissime. C'est la sélection des villes commençant par ‘M' parmi une liste objet de villes, depuis une table SQL, depuis un fichier XML.

Bon sens

Passer du monde objet avec VS (l'IntelliSense, la coloration syntaxique, le debugguer, ...) à l'accès aux données, c'est un peu comme rouler en Ferrari sur 300 km, puis soudainement avoir un crash... (!).

Dans sa présentation, il a insisté sur les points suivants :

LINQ est fortement typé. En LINQ, on s'efforce de détecter le plus d'erreurs possibles dès la compilation. Qu'on se le dise : C# ne devient pas un langage dynamique avec LINQ ( !).

LINQ permet de réduire drastiquement le volume de code à écrire pour requêter des données. Il montre d'abord comment les Lambda expressions et les object initializers permettent d'écrire du code concis et lisible, bien que jusque là, la simplification relevait essentiellement de l'élégance.

Puis Luca s'attaque à la boucle qui parcourt le jeu de données des villes. Il remplace la boucle " for each " par une requête LINQ : on passe de 15 lignes de code à 4 lignes. Si ma mémoire ne me trahit pas, le résultat ressemble à ceci :

var query = from c in LoadCustomers()

where c.City.StartsWith(" M ")

group by c.City into G

select new Result { city=g.Key, count=g.count() };

Au passage, comme illustré par Luca, la variable Result est facultative.

Lorsque la source de données est un fichier XML, on passe à 5 lignes de code, alors que, même bien indenté et assez proprement écrit, l'équivalent en C# / XSL est assez indigeste et pèse près de 30 lignes de code. Et Luca de déclarer : " Vous savez, le problème n'est pas que le nombre de lignes de code... c'est aussi (surtout ?) le gars qui va passer derrière vous pour faire évoluer ou corriger votre programme ". Coté expressivité et évolutivité, qui dit mieux ?

Tout ce qui est IEnumerable ou IQueryable peut être requêté en LINQ. Le compilateur génère même pour nous des types anonymes qui lui permettent de représenter les données en objets typés.

Pour Luca, les requêtes LINQ font partie du programme. Et Luca de dérouler sa dernière planche :

" Data == objects

Imperative -> Declarative

It works with objects / relational data / XML ".

Vraiment désolé mais j'ai pas de photo car mon appareil s'est déchargé :-(

La simplicité de son raisonnement, le pragmatisme de ses démos, et son bon sens m'ont franchement séduit. Je ne connaissais pas très bien LINQ. Entre deux cultures de développement que j'appelle les 'relationnelliens' versus les 'objettistes', je suis plutôt relationnellien. Hé bien figurez-vous que son intervention m'a convaincu et il m'a donné envie d'utiliser son langage. J'espère qu'il mettra à disposition ses exemples de code...

Voilà, c'est tout pour aujourd'hui... !

Stay tuned...

Messaoud OUBECHOU