Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Silverlight 5 : Les nouveautés

[new:31/01/2011]Silverlight 5 est disponible depuis dimanche dernier. Cette version est très particulière à plus d’un titre dans le contexte de doute qui avait envahi la communauté SL depuis quelques mois. Ainsi, loin d’être mort, Silverlight démontre encore une fois sa puissance au travers d’évolutions qui n’ont pas été implémentées uniquement pour le plaisir de créer une nouvelle release...

Des innovations majeures

La version 5 de Silverlight n’est pas juste une release de plus qui aurait été bâclée pour sortir à tout prix une dernière version. Nous allons le voir, les nouveautés ont demandé beaucoup de travail et un tel investissement s’inscrit forcément dans la durée. Il aurait été bien plus simple pour Microsoft de n’implémenter que quelques artifices de ci de là et de stopper les features les plus couteuses.

Or ce n’est pas le cas. La sortie même de SL 5, prévue en Novembre a été décalée légèrement sur Décembre pour permettre la fourniture d’une release parfaitement testée et fonctionnelle.

Certaines nouvelles features démontrent certes un recentrage sur Windows, mais SL 5 fonctionne toujours sur Mac. Et tous les browsers supportés jusqu’à maintenant le sont toujours. Cela balaye les bruits qui ont couru sur une version qui ne marcherait que sur IE par exemple. Mais en même temps certaines fonctionnalités ne visent que Windows, c’est vrai. Le rêve du “plugin universel et portable everywhere” se transforme petit à petit en une solution qui donne l’avantage à Microsoft et à son OS, j’en ai largement parlé dans de précédents billets.

Mais après tout Apple fait-il le moindre effort pour vendre OSX sur les PC ? Nenni. Google fait-il le moindre effort pour faire tourner les applications Androids sur PC ou sur Mac ou même Ipad ? Nenni.

Il serait donc un peu “gonflé” de déduire du recentrage de Silverlight sur Windows quoi que ce soit d’autre qu’une simple réponse “du berger à la bergère”, d’autant que ce produit tourne toujours sur Mac... Microsoft fait toujours et encore exception sur le marché, offrant une portabilité qu’aucun autre éditeur d’importance n’offre aujourd’hui et en tout cas surtout pas Apple ni Google.

Il est donc sage de remettre tous les débats récents sur Silverlight dans un contexte plus réaliste et de constater que Silverlight est bien vivant et reste une solution portable PC / Mac. Le recentrage Windows de certaines nouvelles fonctionnalités n’est que bonne guerre dans un monde qui a été verrouillé de longue date par des systèmes propriétaires totalement fermés comme ceux d’Apple qu’on acclame bêtement par ailleurs.

Les critiques visant systématiquement Microsoft et sa fermeture font véritablement rire doucement lorsqu’on voit à quel point un Steve Jobs peut être encensé alors même qu’il a été le chantre des systèmes propriétaires et fermés ! Deux poids deux mesures que toute personne dotée d’un véritable cerveau (et non pas d’une “boite” à aduler le premier pseudo gourou venu) ne peut sérieusement pas accepter.

Bref, Silverlight 5 est là et bien là, chargé de nouveautés, toujours cross-plateforme et cross-browser.

Qu’il donne quelques nouveaux avantages à la plateforme Windows semble être bien plus un constat réaliste face au comportement conservateur et fermé des concurrents qu’un réel tournant prémédité. Microsoft ne peut être le seul éditeur à tout offrir gratuitement aux autres plateformes quand ces dernières font tout pour rester fermées et rendre le client captif. Gentil Microsoft, mais pas idiot.

Les nouveautés de SL 5 sont nombreuses et certaines réclament encore du temps en investigation pour les creuser. Pour ce billet je me limiterai donc à vous fournir un panorama des nouveautés officiellement présentes dans la version finale. J’aurai l’occasion de revenir plus en détail sur certaines choses dans de prochains billets.

Les nouveautés

Support amélioré des Média

  • Audio avec latence faible : la nouvelle API SoundEffect permet enfin de jouer des boucles “propres”, d’avoir des effets sonores sans latence (avec réglage du pitch, du panoramique et du volume, possibilité de mettre en cache les sons...).
  • Playback avec variation de vitesse : Les vidéo peuvent être jouées à des vitesses différentes et supportent le rembobinage et l’avance rapide. Jusqu’à 2 fois la vitesse normale le système automatique de correction de pitch permet même de visualiser en accéléré tout en conservant un audio inchangé (mais plus rapide).
  • Amélioration des performances en H.264 sur les vidéo non protégées.
  • Gestion des DRM avec rotation de clé / LiveTV permettant la lecture des sources protégées par système de licences tournantes.
  • Protection des contenus en interdisant la lecture des média protégés par des applications non autorisées.

Support amélioré du texte

  • Tracking et Leading : réglage fin de l’interlignage et de l’espacement des caractères.
  • Conteneurs liés : Autorise un texte à s’écouler sur plusieurs conteneur avec mise en page automatique pour créer du multi colonage ou d’autres effets.
  • Support des fontes OpenType et du texte en mode “pixel snap” pour une meilleure lisibilité. Les fontes OpenType sont supportées totalement, c’est à dire avec leurs différents styles, les ligatures de caractères, les petites capitales, le positionnement en indice et exposant...
  • Impression vectorielle PostScript : nouveau mécanisme d’impression bien moins gourmand en mémoire que le système bitmap introduit dans SL 4 (mais nécessite une imprimante dotée d’un pilote PostScript).
  • Amélioration des performances du moteur de rendu.

Support pour applications LOB avancées

  • PivotViewer : nouveau composant introduit désormais dans le SDK conçu pour l’affichage dynamique des collections.
  • ClickCount : Support du multi click, principalement utile pour supporter le double-click.
  • ListBox et ComboBox : Positionnement automatique de la liste en fonction d’un texte tapé au clavier.
  • Ancestor RelativeSource binding : extension du Binding pour se lier à une propriété d’un contrôle parent (existait en WPF).
  • DataTemplates implicites : Les DataTemplates peuvent être définis implicitement.
  • DataContextChanged : nouvel évènement qui faisait défaut.
  • Ajout du support de PropertyChanged au trigger via l’énumération UpdateSourceTrigger.
  • Dialogue Save / Open file : Possibilité de spécifier un nom de fichier par défaut et un répertoire par défaut.
  • Debug du DataBinding : possibilité de mettre des points d’arrêt sur les DataBinding XAML pour examiner les locales et déboguer les data bindings.
  • Extensions Xaml personnalisées : Exécuter du code personnalisés au moment du parsing XAML.
  • Binding dans les Styles : Les styles supportent désormais le binding.

Amélioration des performances

  • Parser Xaml : Amélioration des performances pour le parsing des UserControl et des dictionnaires de ressources.
  • Latence réseau diminuée : Amélioration jusqu’à 90% du temps de réponse dans les scénario utilisant ClientHttpWebRequest.
  • Accélération matérielle pour le rendering sous IE9 en mode windowless : SL5 utilise maintenant la nouvelle API SurfacePresenter pour le rendu en windowless sous IE9.
  • JIT Multi-cœur : Les applications SL démarrent plus vite en profitant des machines à plusieurs cœurs.
  • Support des browsers 64 bit.

Améliorations graphiques

  • Amélioration de la pile graphique : réorganisation de la pile de rendu graphique pour ajouter des features comme les animations indépendantes (tournant dans des threads séparés).
  • 3D : utilisation de l’API XNA pour créer des affichages 3D animés ou non, basé sur l’accélération GPU.

Extensions du mode “Trusted”

  • Ces améliorations concernent principalement les applications in-browser en y ajoutant des possibilités hier réservées à l’OOB. Cela ne fonctionne (pour la plupart) qu’avec des applications signées par un certificat et l’ajout d’une entrée dans la base de registre Group Policy. Bien que très contraignantes techniquement, ces sécurités permettent d’envisager des applications plus complexes, uniquement en mode Web sans installation. La cible visée est clairement l’Intranet pour des applications LOB, ce qui n’écarte pas les applications Web spécifiques (par exemple logiciel médical, application de Comptabilité ou Gestion dans le Cloud très sécurisées...).
  • Multi fenêtrage Windows : possibilité de créer des fenêtres secondaires Windows non modales et pouvant se positionner sur tous les écrans disponibles. Possibilité de personnaliser totalement l’aspect (par défaut look Chrome de Windows). Disponible en mode droit élevés (sans obligation de certificat).
  • Full-Trust in-browser : Avoir la puissance d’une application OOB en mode in-browser, avec les obligations de sécurité listées plus haut.
  • Accès au système de fichier sans limite : Lecture / Ecriture de tout répertoire depuis une application en full-trust.
  • P/Invoke : Autorise une application SL à utiliser du code natif Windows sur la machine cliente. Permet même d’embarquer des DLL natives et de les exécuter.

Conclusion

Comme on le voit, de très nombreuses choses ont été ajoutées et certaines d’importance comme la 3D, la gestion correcte du son et des bouclages, le support d’OpenType et de toutes ses possibilités typographiques, etc...

Certains ajouts comme le mode full-trust en in-browser sont clairement destinés à la conception d’applications LOB en entreprise. L’ajout de P/Invoke, des fenêtres Windows, etc., sont autant d’indices de ce nouvel axe vers lequel Microsoft pousse Silverlight. C’était d’ailleurs un simple constat, Silverlight a été essentiellement utilisé en entreprise pour créer des applications LOB et assez peu pour faire des applications Web grand public.

Nous sommes bien dans la fin du rêve du “plugin universel” avec un recentrage évident de Silverlight en tant qu’outil Intranet pour les applications LOB en entreprise tournant sous Windows.

Certes le support Mac existe toujours, mais les nouveautés réservées à Windows sont un signe clair de ce nouvel axe de développement de SL. Et finalement cela ne gênera que peu de monde puisque, justement, c’est ainsi que nous utilisions tous SL majoritairement...

Beaucoup de nouvelles features (malgré les bêta auxquelles j’ai eu accès sans pouvoir en parler, NDA oblige) restent assez nébuleuses et manquent cruellement de documentation et d’exemples. Par exemple l’impression vectorielle ou le P/Invoke sur un DLL native embarquée dans le Xap.

La partie 3D est, regrettablement, totalement incompatible avec celle de WPF et se calque sur XNA. L’avantage est une plus grande vitesse d’exécution et des possibilités largement documentées dans les docs XNA pour la XBox. La portabilité facilitée des jeux, grands utilisateurs de 3D aujourd’hui, font de ce choix un choix réaliste et efficace. Encore une fois Microsoft fait preuve d’un sens des réalités louables, même si la 3D de Silverlight se limite à Windows et n’a rien à voir avec la 3D vectorielle de WPF.

Silverlight 5 cristallise tous les bouleversements en cours et à venir : la fin de certains rêves mais l’affirmation d’un ancrage dans la réalité des besoins des utilisateurs, le tout sur fond de repli sur Windows. La naissance des 3 grands blocs qui vont s’affronter (voir l’un de mes précédents billets) est en route...

Pour ce qui est des nouvelles possibilités dont la mise en œuvre est encore un peu floue, cela va se décanter et je ne manquerai pas de les illustrer dès que j’aurai pu les éclaircir !

Vive Xaml, Vive C# et Vive Silverlight !

blog comments powered by Disqus