La conférence TechEd 2007 réunit chaque année plusieurs milliers de développeurs .NET. C'est pour Microsoft l'occasion de présenter ses produits actuels ou futurs. Cette année, les sujets phares furent Silverlight, Entity Framework, Linq, DLR et Astoria. Lionel Laské, auteur DNG, nous fait une synthèse des différentes sessions qu'il a suivi. Au menu, Silverlight et DLR.
Les sessions du TechEd sur SilverLight
n'étaient pas nécessairement les plus réussies, preuve
probablement du manque de maturité de Microsoft sur le
produit. C'était quand un même un des sujets à ne pas
manquer cette année.
Si l'on simplifie à l'extrême, qu'est ce que SilverLight ? un ActiveX embarqué dans IE qui exécute un sous-ensemble de la CLR .NET. Avec SilverLight 1.0, on pouvait afficher dans cet ActiveX uniquement du WPF (via un fichier XAML) et communiquer avec lui via du JavaScript. Sachant les fonctionnalités avancées de WPF (qui reposent notamment sur DirectX), cela permet déjà de réaliser des interfaces graphiques difficilement envisageables avec du web ou de l'AJAX. C'est d'ailleurs ces capacités qui sont aujourd'hui mises en avant par Microsoft, notamment parce que le produit se positionne en concurrent de Flash. Une des sessions présentait par exemple BluePortal, un starterkit pour construire un portail d'hébergement vidéo dont l'interface va beaucoup plus loin que YouTube (voir un exemple d'utilisation sur le site http://premium.quiksilverlive.com/). Le site de QuickSilver est le fruit d'un partenariat avec Microsoft qui a profité de l'occasion pour démontrer concrètement les capacités de rendu visuel mais aussi d'intégration techniques du duo Silverlight/.NET (fermes de serveurs de streaming, applications WPF pour alimenter le backend, etc ...)
Même si tout reste à faire pour séduire les
designers, la construction de pages SilverLight en
utilisant conjointement Visual Studio et Expression
Blend est assez séduisante. On ouvre directement le
projet VS.NET dans Blend et vice verca. Et grâce à la
création de "storyboard", le développeur a en quelques
clicks la possibilité d'animer ses créations et le
sentiment de devenir un designer (le talent en moins…).
SilverLight 1.1 va plus loin puisqu'il permet
d'exécuter du code .NET dans le composant hébergé.
Autrement dit, c'est désormais toute la puissance du
.NET Framework que vous pouvez embarquer dans votre
composant SilverLight. De plus, SilverLight 1.1 permet
la communication bi-directionnelle entre le code
JavaScript et le code .NET. Une intégration qui permet
de réaliser par exemple des échanges d'événements (un
bouton de la page HTML qui déclenche un traitement dans
le composant SilverLight ou vice-verca).

Si Microsoft parle beaucoup des
fonctionnalités "sexy" de SilverLight, il faut
comprendre que c'est finalement de vraies applications
riches .NET que l'on peut réaliser avec SilverLight.
D'ailleurs depuis SilverLight 1.1, on peut désormais
appeler du HTTP, des web services ou même un composant
WCF. Quand on sait que Microsoft travaille
actuellement sur un Composite Application Block pour WPF
(http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx),
on se dit que SilverLight est une belle arme pour la
future bataille qui va se jouer autour des SaaS.
Plusieurs sessions du TechEd évoquaient
directement ou indirectement la DLR. La DLR est une
surcouche du .NET Framework 3.5 facilitant
l'implémentation et l'interopérabilité des langages
dynamiques. La DLR est finalement aux langages Python et
Ruby ce que la CLR est à C# et à VB.NET. Particularité
de la DLR, elle est Open Source et librement
téléchargeable sur le site CodePlex avec les premières
implémentations qui l'utilisent: IronPython et IronRuby.
Deux autres implémentations proposées par Microsoft
devraient arriver rapidement, un JavaScript et un
VBScript.

La DLR peut être hébergée dans une application
.NET quelconque (ce ne sont que quelques assemblies),
elle fait partie intégrante de SilverLight 1.1 et peut
également être utilisée pour l'exécution de pages
ASP.NET (nous y reviendrons).
Difficile de décrire en quelques mots le
fonctionnement de la DLR, nous y reviendrons plutôt dans
un article spécifique. Globalement, pour permettre
l'interopérabilité, la DLR propose de décrire de manière
abstraite le fonctionnement d'un langage. Ainsi en
utilisant des règles de résolution pour les appels de
fonctions, les opérations et les conversions, on fait
comprendre de manière déclarative à la DLR le
fonctionnement de chacun des langages. Une fois cette
étape de déclaration réalisée, l'ensemble du mécanisme
repose sur la construction d'arbres syntaxiques.
Lorsqu'on veut exécuter un programme d'un langage de la
DLR, on exécute un parseur qui va générer un arbre
syntaxique au format de la DLR. C'est cet arbre qui va
être utilisé par la DLR pour l'exécuter le programme,
après une génération préalable en code IL.
L'interopérabilité est assurée entre les différents
langages de la DLR puisqu'ils partagent la même
représentation d'un arbre syntaxique, de la même manière
que les langages de la CLR partagent la même
représentation du code IL qu'ils génèrent.
Un interpréteur en ligne de commande est
présenté comme exemple. Il permet de saisir la
définition d'une fonction en IronPython, de l'exécuter
puis , sans sortir du programme, de lancer une commande
IronRuby qui appelle la fonction IronPython. De la même
manière on peut dans le même programme manipuler les
types et fonctions de la CLR pour lesquels la DLR
propose des règles de résolutions standards. Plusieurs
exemples sont montrés pour manipuler depuis IronPython
des APIs aussi diverses que les APIs du TabletPC, la
Speech API, ou des composants COM.
Plus fort: un exemple d'interpréteur ligne de
commande est réalisé mais cette fois depuis une fenêtre
web SilverLight. L'apothéose est atteinte quand ce même
interpréteur se transforme en un véritable IDE avec une
mini gestion de projets et un debuggeur qui s'exécutent
entièrement en Web. Imaginez Visual Studio Express en
mode web !
Mais à quoi cela sert-il de reposer sur un
langage dynamique ? Il est clair que le choix du langage
de développement est surtout une question de
sensibilité, les speakers présentent néanmoins quelques
exemples qui montrent la puissance syntaxique du python
sur le C# (à vous d'apprécier):
En C#:
int i =
Convert.ToInt32(Request.QueryString[“Name"]);
En IronPython:
i =
int(Request.Name)
En C#:
LocationsPicker
lp =
(LocationsPicker)
FormView1.FindControl("LocationPicker1“);
En
IronPython:
lp = FormView1.LocationPicker1
D'autres pistes sont évoquées pour démontrer
la puissance d'un langage dynamique: par exemple la
possibilité de générer à la volée le proxy pour un web
service (au lieu de faire "Add web reference…" et de
lancer la compilation) ou, de la même manière, de
générer dynamiquement une couche d'accès aux données. La
vraie question se pose côté applicatif: ce sont
probablement les applications dont le besoin fonctionnel
évolue très rapidement, voir même évolue pendant leur
exécution qui bénéficieront le plus de l'utilisation
d'un langage dynamique: mais est-ce la majorité des
applications ?
C'est avec l'intégration dans ASP.NET que l'on comprend le mieux l'objectif de Microsoft avec la DLR. En effet, IronPython propose l'installation d'un plug-ins permettant de l'utiliser comme langage de développement pour le code behind des pages ASP.NET. Mais attention, il ne s'agit pas simplement d'ajouter un langage: avec l'installation de ce plug-ins c'est tout le fonctionnement interne d'ASP.NET qui est modifié lorsqu'on choisi IronPython comme langage. Plus de génération à la volée d'une assembly et plus de chargement dynamique d'assembly: la DLR prend directement la main et, comme le montre le schéma suivant, on se retrouve quasiment dans un mode de fonctionnement proche du... PHP.

Et n'est ce pas cela l'objectif de la DLR:
ramener dans le giron de Microsoft tous les développeurs
qui préfèrent aujourd'hui utiliser les langages de
script, et donc délaisser .NET. Si on ajoute à cela que
la DLR et ces nouveaux langages sont livrés en Open
Source, ne peut-on pas imaginer qu'une implémentation de
PHP sur la DLR sera la prochaine annonce de Microsoft ?
|
Lionel Laské est architecte et chef du service Nouvelles Technologies à C2S. C2S est la société de services informatique du groupe Bouygues. C2S est spécialisée dans les technologie .NET et est Microsoft Gold Certified Partner. C2S est également à l'origine d'une offre de migration des applications NS-DK/NatStar vers .NET. |
![]() |