MIX10: retour sur le keynote J1 – Silverlight everywhere

Nous sommes plusieurs de chez Microsoft France dont la difficile mission consiste à assister à la conférence MIX10 à Las Vegas qui a débuté ce matin. Je sais notre métier est difficile… Je vous propose de vous faire un résumé de cette 1ère plénière animée par le célèbre homme à la chemise rouge : Scott Guthrie. Vous pouvez la (re)voir ici : https://live.visitmix.com/MIX10/Sessions/KEY01

Je tenterais de faire un post complémentaire à mes collègues sur place :

- MIX10- Une Keynote Windows Phone 7, Silverlight et XNA par David Cohen
- MIX10 – La keynote jour 1 par Christophe Maneu

Je vais tenter ainsi de rentrer un peu plus dans le détail du fonctionnement de Silverlight sur le mobile et de quelques subtilités. Mais avant tout, commençons d’abord par Silverlight 4 qui passe en RC.

Silverlight 4 RC

Comme vous l’aviez remarqué, Visual Studio 2010 RC n’était pas compatible avec Silverlight 4 Beta et WCF RIA Services Beta. Cela appartient désormais au passé grâce à la sortie de Silverlight 4 RC que vous pouvez donc aller télécharger ici : https://silverlight.net/getstarted/silverlight-4/#tools . A noter également la sortie de Blend 4 Beta qui va avec : Expression Blend 4 Beta. Une annonce intéressante pour ceux qui ont déjà une licence de Blend 3 : la mise à jour vers Blend 4 RTM sera gratuite.

Silverlight 4 est annoncé en RTW le mois prochain.

En installant le “chainer” Silverlight 4 Tools for Visual Studio 2010, vous aurez ainsi automatiquement d’installé sur votre machine les outils pour développer des applications Silverlight avec Visual Studio 2010 RC, la runtime en elle-même, le SDK et WCF RIA Services RC.

Note : je vais m’occuper de mettre à jour ma série de tutoriaux autour de la WCF RIA Services dans les prochains jours. Globalement, tout fonctionne quasiment tel quel mais il y a quelques ajustements à faire malgré tout.

Nous avons déjà bien couvert les nouveautés de Silverlight 4 aux Techdays 2010. Vous pouvez d’ailleurs désormais aller voir les vidéos des webcasts en ligne sur MSDN. Voici ceux autour de Silverlight : https://msdn.microsoft.com/fr-fr/silverlight/ff462012.aspx 

La version RC corrige principalement un certains nombres de bugs, revoit certains noms de méthodes ou de façon de faire (par exemple pour récupérer une image de la webcam, cela a légèrement changé). Pour vous aider à mettre à jour une application SL4 Beta, voici le lien qu’il vous faut donnant les fameux “Breaking Changes” : https://msdn.microsoft.com/en-us/library/cc645049(VS.96).aspx

De mon côté, voici les quelques nouveautés qui m’ont marqué :

- Possibilité de changer le type de contour des fenêtre en mode “out of browser” (pour avoir le fameux “Chrome Less”). Cela se fait simplement dans les propriétés du projet :

keynotemix10_001

Et voici un exemple de résultat :

keynotemix10_002

- Possibilité de signer ses applications pour l’installation en mode “elevated trust out of browser”. Avant signature, on a cette fenêtre d’installation :

Unsigned trusted application on Windows

Après :

Signed trusted application on Windows

On peut d’ailleurs désormais installer une application de manière “silencieuse” depuis un CD par exemple. Gravez le XAP sur un CD d’installation et utilisez l’exécutable sllauncher.exe hébergeant une application “Out of Browser” de cette manière :

    "%ProgramFiles%\Microsoft Silverlight\sllauncher.exe"
       /install:"D:\repertoire\applicationsilverlight.xap"  
       /origin:"https://votresiteweb.fr/ClientBin/applicationsilverlight.xap"  
       /shortcut:desktop+startmenu  
       /overwrite 

- Possibilité d’utiliser le multi-écran pour par exemple lire une vidéo en plein écran via Silverlight sur un 2ème écran pendant que l’on fait autre chose sur le 1er. Pour avoir une idée du mode de fonctionnement, rendez-vous ici.

- On peut demander à l’application Silverlight de se souvenir du fait que l’on a autorisé l’utilisation de la WebCam ou l’accès au clipboard. Sinon en Beta, il fallait demander à chaque fois que l’on redémarrait l’application.

- Meilleure utilisation du GPU que dans Silverlight 3 pour par exemple prendre en compte l’accélération matérielle même sur les transformations de perspective et également sur la lecture Deep Zoom.

Au passage, Scott nous annonce que Silverlight est désormais présent sur 60% des machines connectées à Internet, soit +15% depuis la PDC09 de Novembre dernier!

Pour terminer, comme d’habitude, Tim Heuer nous signe un billet excellent sur les nouveautés de la RC et sur les changements effectués entre la Beta et la RC. A lire ici : https://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx si l’anglais ne vous pose pas de problème. C’est simple, il y a tout ce qu’il y a à savoir.

Windows Phone 7 : Silverlight et XNA better together!

Bien évidemment c’était la grosse partie du keynote que tout le monde attendait. Après une revue rapide de la nouvelle interface (nommée Metro) centrée sur le principe des Hubs, on a pu avoir des détails intéressants sur le modèle de développement autour de Windows Phone 7.

Au passage, nous savons maintenant quelles sont les spécifications minimum requises pour le hardware d’un téléphone Windows Phone 7 Series:

IMG_1711
Image honteusement volée à Pierre-Yves Gardette de Xna-France

En résumé :

- Ecran capacitif avec au moins 4 points de contact
- Sensors : GPS, Accéléromètre, boussole et détecteur de luminosité
- Caméra d’au moins 5 mégapixels avec un flash requis
- Accélération matérielle des codecs vidéo
- 256 de RAM minimum et 8 Go de mémoire Flash minimim
- Un GPU supportant l’accélération DirectX 9
- Un CPU ARMv7 / Cortex / Scorpion ou au dessus.
- Une résolution de 800x480 ou 480x320. Les 1ers modèles seront en 800x480 et seront considérés comme du haut de gamme.

Côté développeurs, on apprends que l’ensemble des outils de développement pour Windows Phone 7 seront gratuits! Cela comprend donc Visual Studio 2010 Express for Windows Phone et Expression Blend 4 for Windows Phone. On peut bien sûr également installer l’add-in à Visual Studio 2010 Pro ou Ultimate. Cet add-in ajoute les templates de projet Windows Phone pour faire du Silverlight et du XNA. Attention cependant : ces templates de projets ne sont disponibles qu’en C#. Voici un screenshot après l’installation de l’add-in dans Visual Studio 2010 RC Ultimate:

keynotemix10_003

On déploie ensuite soit directement sur son téléphone, soit dans l’émulateur fourni avec les outils. A ce sujet, plusieurs infos intéressantes:

- N’importe quel téléphone “normal” qui sera vendu dans le commerce pourra être utilisé comme téléphone de développement
- L’émulateur utilise l’accélération matérielle du PC (son GPU donc) et supporte le multi-touch sur les PC le supportant. Pratique pour commencer la mise au point de l’application et le debugging!

Pour télécharger d’un seul coup tout ce qu’il vous faut, une seule adresse : https://developer.windowsphone.com

Vous l’avez donc compris, il existe 2 modèles de développement : Silverlight et XNA. Les 2 reposent sur le même cœur (Compact Framework) et partage donc les mêmes contrôles. Du coup, XNA peut par exemple faire appel à des librairies Silverlight (comme WebClient par exemple pour faire des requêtes http) ou Silverlight peut faire appel à XNA (comme à la librairie de gestion audio pour faire des effets). Par contre, on ne peut pas mixer le rendu graphique entre les 2. En résumé, on choisit son camp sur le moteur de rendu graphique au démarrage mais rien n’empêche ensuite de faire appel aux librairies de code de l’autre framework.

La version de Silverlight sur Windows Phone 7 (WP7) correspond globalement à celle de Silverlight 3 sur le monde du PC/MAC. Par exemple, une librairie de code SL3 issue du monde PC/MAC a de très fortes chances de tourner telle quelle sur WP7. On a bien sûr un designer de surface pleinement fonctionnel sous Visual Studio 2010 pour Silverlight sur Windows Phone :

keynotemix10_004

Le contexte de sécurité correspond à un “trusted out of browser”. Par contre, il faudra faire attention aux contrôles graphiques déjà développés en SL3 PC pour adapter leur rendu/comportement au téléphone : résolution différente, multitouch, etc. Mais le portage sera bien sûr très simplifié question code.

Première nouvelle donc : vous pouvez réutiliser telles quelles vos compétences de développeur Silverlight sur le téléphone!

Il y a bien sûr cependant quelques spécificités liées au téléphone mobile. Vous pouvez d’ailleurs retrouver la liste des différences entre Silverlight 3 et Silverlight Mobile ici.

Silverlight a par exemple été optimisé pour mieux tirer partie du hardware du téléphone, spécifiquement du GPU, par rapport à la version PC. Cela se sent d’ailleurs pendant les démos que l’on voit vraiment tourner sur le téléphone. Les applications sont d’une fluidité extraordinaire. On peut dire que les équipes de développement ont super bien fait leur boulot sur l’optimisation de la runtime. Deep Zoom sur WP7 est par exemple accéléré matériellement.

Par contre, il n’y a pas de custom Pixel Shaders sur SL WP7. Vous retrouverez donc uniquement les 2 effets par défaut : drop shadow et blur. Ces 2 effets sont par contre accélérés par le GPU (contrairement à SL3/SL4 sur PC où ils sont rendus en « software »).

Comme on est sur un téléphone, Silverlight peut bien entendu récupérer les infos/données spécifiques au device WP7 : service de localisation, accès à la caméra du téléphone, SMS, etc.

Le service de localisation est intéressant d’ailleurs. Il offre un niveau d’abstraction sur l’ensemble des périphériques permettant la localisation. L’idée est de vous masquer la complexité, il s’occupe ainsi lui-même de discuter avec le GPS, de faire la triangularisation du GSM et/ou Wifi. Ainsi, on ne discute pas directement avec le GPS, on passe par ce service de localisation qui est là pour nous simplifier la vie. Ce service de localisation fonctionne d’ailleurs de concert entre le matériel du téléphone et le service exposé dans le cloud.

2 modes existent : un mode ‘low accurency’ (utilisation uniquement du relais GSM et/ou WiFi) offrant une précision relativement faible mais coutant peu d’énergie ou un mode ‘high accurency’ avec le GPS qui est donc plus précis mais qui consomme plus d’énergie. Par exemple, si l’on a besoin de savoir quels sont les restaurants dans la région autour de nous, nous n’avons pas besoin d’avoir une précision élevée et le mode « Low » suffira.

A part cela, voici une liste de réponses à des questions que je me posais que vous posiez peut-être aussi :

- Il n’y a pas de système de fichiers sur Windows Phone 7. Donc les APIs OpenFileDialog et SaveFileDialog n’existent pas sur Silverlight WP7. Il faudra donc travailler exclusivement avec l’Isolated Storage sur lequel nous n’avons pas de quota par contre.

- L’OS est multi-tâches mais votre application ne peut tourner de manière illimitée en tâche de fond comme sous Windows Mobile. C’est ce que nous appelons le “Smart Multitasking” ou multi-tâches intelligent. Ainsi les tâches les plus courantes comme le chargement de pages web, la synchronisation d’emails, la lecture de musique restent actives en tâche de fond. Les applications tierces parties par contre auront un accès limité au multitâches afin de préserver la durée de vie de la batterie. En général en effet, lorsqu’une application passe en arrière plan, elle n’a pas besoin des ressources CPU sauf dans certains scénarios spécifiques sur l’usage des médias.

Votre application finit donc par recevoir un message du système lui demandant de se mettre en pause et charge à vous de sauvegarder son état pour la recharger plus tard telle qu’elle était pour donner l’impression à l’utilisateur qu’il n’a jamais vraiment quitté cette application. C’est donc le même modèle que l’on retrouve aujourd’*** sur l’iPhone pour faire simple. Les débats font rage actuellement dans les forums. Cependant force est de constater que ce modèle fonctionne très bien, permet d’avoir une expérience toujours fluide, une consommation des ressources réduites et l’utilisateur final en est parfaitement content.

Ce modèle est bien évidement à coupler avec le système de notification par push disponible sur Windows Phone 7. Plus d’informations à ce sujet ici : https://on10.net/blogs/sarahintampa/Push-Notifications-on-Windows-Phone-7-Series/

Les démos faites au MIX

Plusieurs démonstrations d’applications Silverlight ont été faites :

- un client Netflix permettant de consulter un catalogue de vidéos à la demande affichées ensuite en Smooth Streaming : technologie qui fait du coup encore plus sens sur téléphone où la bande passante est très variable!
- un client Twitter fait par l’équipe de Seesmic
- le portage de l’incontourable Shazzam
- une application de retouche de photo qui a introduit un concept particulièrement intéressant : on peut s’enregistrer dans un HUB. Dans l’exemple qui était donné, l’application indiquait qu’elle savait gérer du contenu de type photo. On la retrouve alors disponible de manière contextuelle dans le Hub gérant nos images pour appliquer un effet sur une photo que l’on aurait prise avant de la télécharger vers FaceBook par exemple. Cela change donc totalement l’approche des téléphones existant où l’on aurait du quitter l’expérience en cours pour lancer une application qui aurait modifié l’image pour ensuite ouvrir une 3ème application s’occupant de télécharger l’image vers FaceBook.
- application Associated Press pour afficher du contenu de la presse avec des pubs intégrées de manière assez intelligente
- une superbe application affichant une liste de BD Comics faisant appel à Deep Zoom.
- super démo de réalisation live en 8 min d’une application pour gérer les photos sous Blend par un designer (sans ligne de code donc) à partir de behaviors et éléments MVVM.

Mais le mien pour comprendre tout cela est de les regarder à travers le flux du 1er Keynote: https://live.visitmix.com/MIX10/Sessions/KEY01 . Cela vaut vraiment le coup d’oeil.

XNA

Récemment fraîchement introduit au monde merveilleux du XNA Framework, ce n’est pas encore un environnement que je maîtrise beaucoup. Par contre, le peu que j’ai pu en faire m’a déjà bien emballé!

La démo la plus marquante fut sans aucun doute celle présentant le jeu nommé Harvest en 3D accéléré.

En 3 semaines, grâce Visual Studio 2010 et XNA Studio 4.0, l’équipe de Luma Arcade a réussi à avoir le même jeu avec plus de 90% de code en commun sur les 3 écrans : PC, Xbox 360 et Windows Phone 7.

Voici ainsi le résultat sur le téléphone :

keynotemix10_005

C’est vraiment impressionnant surtout en mouvement. Je suis maintenant pressé (comme beaucoup j’ai l’impression) d’avoir une des bêtes entre les mains!

David