Le second keynote vient de se terminer et ce fut un grand moment. Un des meilleurs keynotes que j’ai été appelé à suivre.
Je ne reviendrai pas sur la partie Windows Phone 7 et sa nouvelle mise à jour (nom de code Mango) qui est brillamment couverte par Pierre Cauchois.
La partie qui m’intéresse ici est bien évidemment l’annonce de Silverlight 5 et de ses nouveautés (Le SDK est en plus déjà disponible ici!)
Support de la 3D accélérée
Parmi ces dernières, celle qui me fait le plus plaisir est bien sûr l’intégration de la 3D accélérée basée sur l’API XNA. J’ai d’ailleurs eu l’insigne honneur de réaliser une des démos qui a été montré au keynote par John Papa (ca fait tout chose de voir sa démo sur un événement de cette importance, d’autant plus qu’elle sera réutilisée lors de la session sur Silverlight 3D par Aaron Oneal).

Vous pouvez la retrouver en live ici (Il faudra bien sûr installer Silverlight 5).
La 3D dans Silverlight est donc basée sur l’API XNA avec le support des shaders 2.0 (et sans doute des 3.0 en mode out of browser). C’est ceci dit une version allégée avec notamment l’absence de la classe Effect, ce qui implique la compilation offline des shaders pour embarquer le code binaire. De même, il n’y a pas e support du DDS et si vous voulez décoder des images (JPG, PNG) pour générer des textures, vous devrez le faire à la main (pas de Texture.FromStream en gros). L’idée derrière ces restrictions est de fournir une API légère et surtout de la sortir dans les temps.
Pour le reste c’est du bonheur avec un alignement quasi-militaire avec XNA 4.0 notamment en ce qui concerne la gestion des états (states). Si vous connaissez le développement en XNA vous n’aurez donc aucun problème pour faire du Silverlight 3D.
XAML binding debugging
Une autre fonctionnalité vraiment excellente est la possibilité dans Visual Studio 2010 de pouvoir mettre un breakpoint au niveau d’un binding dans le XAML. Cela va vraiment être utile et va apporter un vrai gain de productivité car le binding est assez obscur au niveau de ses erreurs.
Ancestor RelativeSource + DataContextChanged
Comme son grand frère WPF, Silverlight 5 propose désormais un évènement lorsque l’on change le DataContext. De même, on peut désormais dans un binding indiquer que l’on souhaite se brancher sur un contrôle ancestre via le RelativeSource de type Ancestor.
PivotViewer Control
Le PivotViewer qui au préalable était un contrôle autonome est maintenant directement intégré dans le SDK.
Implicit data templates
Afin de faciliter la mise en place de thèmes, il sera désormais possible de définir des Data Templates qui affecteront par défaut un type de contrôles (comme en WPF) sans avoir besoin de faire une référence avec un StaticResource.
Inter-Layout Transitions
Grâce à ce mécanisme, il est possible d’appliquer des animations quand des éléments sont ajoutés, supprimés ou réorganiser au sein d’un layout. L’idée est vraiment de se rapprocher de ce que l’on peut voir avec Metro sur WP7 ou il existe de nombreuses petites animations qui donnent une belle expérience utilisateur de fluidité.
Background thread for networking
Une bonne réduction de la latence réseau va être mise en œuvre en utilisant un thread en tâche de fond pour gérer le réseau. Cela permettra de ne pas perturber le thread de rendu et donc de garder (encore une fois) une interface fluide.
Rendu direct sur le GPU
Toujours dans l’idée de faire un système fluide, il sera possible de faire directement des rendus 2D sur le GPU (à la mode DirectDraw/DirectWrite). C’est ce que l’on appelle un mode immédiat (lorsque l’on pilote directement le dessin sur le GPU).
Multi-click support
Amusant, mais il aura fallu attendre la version 5 de Silverlight pour pouvoir gérer le double (ou plus) clic sur la souris
.
Binding dans les styles
Autre notion importante pour définir de belles UI, il sera désormais possible de définir des Bindings au sein des styles (toujours comme en WPF).
Impression vectorisée
Silverlight 5 pourra imprimer en utilisant le Postscript vectorisé pour obtenir une qualité parfaite (avec même la possibilité de faire un aperçu avant impression virtuel).
Media Hardware decode and TrickPlay
Silverlight saura utiliser le GPU pour décoder les vidéos(H264) et pourra faire du trick-playing (à savoir accélérer ou ralentir la vitesse de lecture des médias).
SoundEffect
Cette nouvelle classe permet de charger un stream contenant un son (sans doute au format WAV) et de le jouer sans avoir à instancier un MediaElement. Très utile pour jouer des sons rapidement (genre lorsque l’on clique sur un bouton…)
Pixel snapping
Le support de l’alignement des pixels permettra (comme en WPF) d’avoir une meilleure lisibilité des fontes à l’écran.
Possibilité de créer des fenêtre autonomes (Multiple windows)
En mode Out of Browser, il sera possible de générer des fenêtres (top level) au sens système (OS) du terme. A ne pas confondre avec des ChildWindows.
En fait la classe System.Windows.Window est désormais instanciable.De plus, il n’y a plus de restriction sur le titre des fenêtres ou sur leur placement.
Performance (64 bits and faster application startup)
Le parser XAML a été optimisé pour permettre un lancement plus rapide des applications. De plus, le plugin Silverlight pourra dorénavant fonctionner en 64 bits nativement sur les systèmes 64 bits (alors que jusqu’alors c’était la version 32 bits qui s’exécutait même sur un OS 64 bits).
Mode Trusted App In-Browser
Il sera possible via un certificat et une validation par un administrateur de rendre les applications Silverlight 5 certifié en mode In-Browser. Ces applications auront accès au niveau maximal de sécurité tout en restant dans le navigateur.
Support grandement amélioré du P/Invoke et de l’interopérabilité.
Il sera possible (en mode trusted) de faire du P/Invoke de code natif comme dans le framework .NET (via l’attribut DllImport).Il faut toutefois faire attention avec ce genre de fonctionnalité car cela engagera fortement la portabilité de l’application (Elle ne fonctionnera plus que sur Windows et dans un contexte certifié qui plus est).
De plus il sera possible, toujours dans une application certifiée d’accéder à tout le système de fichier (et non pas uniquement ce qu’il y avait dans “Mes documents”)
Intégration du WebBrower même en mode In-Browser
En Silverlight 4, pour utiliser le WebBrowser il fallait être en mode Out Of Browser. En Silverlight 5, le WebBrowser fonctionnera même en mode In-Browser.
Et bien d’autres encore…
D’autres évolutions mineures sont également annoncées et je ne manquerai pas de revenir dessus dès que j’aurai de la visibilité sur le sujet.
Call to action!
On peut le voir, Silverlight 5 est une belle nouvelle version avec énormément d’améliorations. Je reviendrai plus en détail sur certaines de ces nouveautés dans le futur. Il ne vous reste plus maintenant qu’à installer le SDK et vous lancer à l’aventure!
Mix2011, Silverlight
Mix2011, Silverlight