Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la liste des fonctionnalités.

Suite à la sortie de la version finale (? l'avenir nous le dira ;-) de Silverlight 5, j'ai mis à jour mes travaux sur la programmation 3D avec la bibliothèque Perspective.

Perspective 3D

Voici 2 articles pour en savoir plus :

Je l'ai pas fait exprès (en cette période d'euphorie pour la nouvelle IHM de Windows 8 :) mais ma première application Windows Phone 7 s'appelle Metro blues. C'est une application pour les musiciens qui génère des grilles d'accord (dans toutes les tonalités), et qui est particulièrement adaptée au blues.

La version 5 de Silverlight permet de réaliser des scènes 3D qui exploitent l'accélération matérielle (c'est à dire qui délèguent les calculs d'affichage au processeur graphique ou GPU). Il s'agit en fait d'une intégration de XNA au sein du runtime Silverlight. Comme le souligne Don Burnett dans son article XNA for Web Browsers or Silverlight 5 3D from Mix11, l'accent est mis sur la portabilité du code XNA et non sur la compatibilité avec l'API 3D haut-niveau de WPF. XNA est une API bas-niveau, destinée au programmeur, et à priori inadaptée à un langage déclaratif comme XAML et aux outils associés. Quid de la collaboration designer / développeur ?

Fort de mon expérience d'encapsulation de l'API 3D de WPF, j'ai créé au sein de la bibliothèque Perspective un jeu de classes pour amener la programmation 3D avec Silverlight 5 à un niveau proche de celui de l'API 3D de WPF et de Perspective pour WPF.

Perspective 3D for Silverlight 5 beta

Voici 2 articles pour en savoir plus :

Télécharger Perspective 3 for Silverlight 5 [mis à jour le 07/02/12]

Le moteur 3D de Silverlight 5 a été présenté au MIX lors d'une session très pédagogique animée par Aaron Oneal, et dont les premiers exemples de code viennent d'être publiés.

Remarque : la beta de Silverlight 5 requiert une version US de Visual Studio 2010 SP1.

Mise à jour du 17/08/11 : j'ai créé au sein de la bibliothèque Perspective un jeu de classes pour amener la programmation 3D avec Silverlight 5 à un niveau proche de celui de l'API 3D de WPF - En savoir plus

Une nouvelle API a été introduite dans .NET 4.0 pour piloter MSBuild. Malheureusement, à ce jour, je n'ai trouvé aucun exemple de mise en oeuvre, ni dans la documentation, ni sur le Web. J'ai donc procédé à des investigations, et rédigé une synthèse dans la foulée.

Lire l'article

Je viens de publier la version 2.1 de Perspective FX, outil qui permet de générer des effets graphiques et de faire des programmes de retouche d'images sous WPF 4 ou Silverlight 4. Perspective FX exploite un système d'assemblage de filtres, qui est simple à utiliser et qui ne requiert pas la maîtrise de HLSL...

La 2e édition de mon livre sur Silverlight est sortie aujourd'hui Smile

J'y présente de façon approfondie les fonctionnalités de Silverlight 4 :

  • les deux modèles applicatifs : application navigateur (plug-in) et mode hors navigateur,
  • XAML,
  • la mise en oeuvre des ressources, styles et templates,
  • le graphisme vectoriel, les animations, les transformations et les effets Pixel Shader (HLSL),
  • les différents types de présentation et de saisie : interface utilisateur à base de contrôles interactifs, support des écrans tactiles multitouch, visualisation et saisie de données (databinding, architecture MVVM), multimédia (texte, image, son, vidéo),
  • le développement de bibliothèques de contrôles personnalisés,
  • etc.

Dans cette nouvelle édition, le texte et les exemples de l'ouvrage ont été modernisés. L'ouvrage a été enrichi avec les principales fonctionnalités introduites dans la version 4 : multimédia (contenu HTML, texte riche, documents, impressions, Webcam et microphone), support des écrans tactiles, commandes, applications approuvées, etc.

Et pour l'occasion, j'ai publié la version 2.0 des bibliothèques open-source Perspective pour Silverlight (outils génériques) et Perspective FX (générateur d'effets Pixel Shader / HLSL pour Silverlight et WPF).

Pour acheter le livre ou télécharger les fichiers exemples depuis le site de l'éditeur

Le chargement depuis un serveur Web d'une grosse application Silverlight monolithique peut s'avérer très long, trop long pour l'utilisateur. Il est alors nécessaire de mettre en place un mécanisme de chargement progressif des assemblys de l'application. Le principe consiste à découper l’application en plusieurs paquets, qui sont chargés à la demande en fonction des besoins.

Le Framework MEF (Managed Extensibility Framework), intégré à Silverlight 4, offre une solution à cette problématique au moyen de la classe DeploymentCatalog. Mais son implémentation ne couvre pas certaines fonctionnalités attendues en mode hors navigateur.

Sur la base de travaux similaires réalisés pour Silverlight 2, j'ai donc développé un mécanisme alternatif dans le framework Perspective 2.0 pour Silverlight avec les fonctionnalités suivantes :

  • Chargement de modules d'extension.
  • Chargement des pages de ces modules (pour affichage dans un élément Frame par exemple).
  • Support du chargement tardif (!i!"lazy loading").
  • Fonctionnement en mode navigateur et hors navigateur. En mode hors navigateur, les modules d'extension sont chargés depuis le stockage isolé (isolated storage), où ils auront été installés automatiquement.

Ce système d'extension n'est pas générique : il se limite au chargement de modules et de pages. Mais il reste simple et peut servir d'exemple à l'élaboration d'un système plus évolué, en attendant la prochaine version de MEF.

Sa mise en oeuvre est présentée de façon détaillée dans cet article.

A la PDC10, Rob Relyea a clarifié le positionnement de WPF et de Silverlight, et annoncé en avant-première quelques fonctionnalités de la prochaine version de WPF.

En résumé, WPF est prévu pour des projets d'applications riches devant exploiter sans limite les ressources du poste de travail Windows, et de ce fait concerne principalement les éditeurs de logiciel (ISV). Microsoft conseille de démarrer les autres types de projet avec Silverlight, quitte à migrer sous WPF si besoin (l'inverse étant beaucoup moins évident). Mais WPF est aussi conseilllé pour des projets mariant des technologies variées par sa bonne capacité d'intégration, qui favorise l'évolution en douceur des systèmes d'information : Win32/GDI (HWndHost), ActiveX (ActiveXHost), Windows Forms (WindowsFormsHost), HTML (WebBrowser) et Direct3D (D3DImage).

La prochaine version de WPF permettra d'héberger du contenu Silverlight au sein d'un élément SilverlightHost, et de communiquer entre les deux technologies. WPF pourra ainsi bénéficier de fontionnalités spécifiques à Silverlight, telles que Deep Zoom.

Microsoft travaille aussi à résoudre les problèmes de recouvrement, encore appelés problèmes d'espace aérien, qui apparaissent lorsque l'on fait cohabiter ces différentes techniques (à l'exception de D3DImage).

Parmi les autres annonces, le composant ruban (Ribbon) sera intégré au framework, et la convergence avec Silverlight sera poursuivie (par exemple avec le portage de la classe Silverlight ChildWindow). Enfin, Microsoft travaille à améliorer la réactivité et les performances de l'interface utilisateur avec de gros volumes de données (multithreading, virtualisation, etc.).

Vidéo de la session PDC
Page dédiée à la PDC10 sur le site de Rob Relyea

Je viens d'adapter à Silverlight 4.0 mon article sur la compilation manuelle de code (initialement écrit pour les versions 2.0 et 3.0). En effet, pour différentes raisons, il peut s'avérer utile de découvrir la compilation Silverlight en ligne de commande. Cela permet par exemple de mieux comprendre le mécanisme de compilation de Visual Studio. Cela peut aussi permettre de générer dynamiquement des assemblys Silverlight, comme le fait la bibliothèque Perspective FX.

La 2e édition de mon livre sur WPF sort aujourd'hui en version numérique et lundi en version papier :-)

L'ouvrage présente de façon approfondie les fonctionnalités de WPF 4 : graphisme 2D et 3D, animation, multimédia, interfaces utilisateur, databinding, classes personnalisées et modèle applicatif. Dans cette 2e édition, le plan a été remanié et le contenu enrichi dans les domaines suivants : graphisme (BitmapCache, Pixel Shader), animations réalistes (Ease), templates (VisualStateManager), multitouch, databinding, paradigme MVVM, support de la barre des tâches de Windows 7, etc. Les exemples de code ont été modernisés.

Pour acheter le livre ou télécharger les fichiers exemples depuis le site de l'éditeur

La version 2.0 de Perspective pour WPF 4 est sortie.

Les nouveautés sont décrites dans l'annonce de la version bêta.

Après les matrices 2D, voici une nouvelle synthèse sur les matrices 3D. Elle présente les systèmes de coordonnées 3D (main gauche, main droite...), les différents types de matrices (déplacement, rotation, mise à l'échelle, perspective, viewport), leur combinaison et leur utilisation dans WPF (au sein du moteur 3D) et dans Silverlight (via Matrix3DProjection). Elle montre aussi comment reproduire et personnaliser le comportement de PlaneProjection au moyen de matrices.

Je viens de publier un article de synthèse sur les matrices 2D, qui traite en particulier des calculs de rotation. Histoire d'y voir bien clair sur les fondamentaux...

La bibliothèque Perspective pour WPF évolue vers .NET 4.0, et offre les nouveautés suivantes :

  • Panneaux BeePanel et BeeGrid, pour disposer les éléments en nid d'abeilles (normal pour un apiculteur :-)
  • Nouvelles classes Shape :
    • RegularPolygon : polygone régulier (à angles "arrondissables")
    • Star : étoile (nombre de branches variable)
    • Arrow : flèche
    • Checkerboard : damier
  • MayaEase : une interpolation personnalisée pour l'animation (EasingFunction)
  • 3D :
    • Workshop3D : nouvelle propriété ShowCommandPanel
    • RelativeTransformer : permet d'appliquer successivement des opérations de déplacement, de dimensionnement et de rotation sur un Visual3D, en mémorisant sa position et sa matrice de transformation
  • Orientation MVVM (cf. classe SignalCommand)
  • Application Perspective.exe : une nouvelle application WPF 4 qui utilise MEF pour charger dynamiquement les pages depuis des assemblys d'extension. Elle est utilisée ici comme projet démo de la bibliothèque Perspective (modules PerspectiveDemo.Wpf et PerspectiveDemo.Wpf3D).

2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :

  • Silverlight pour Symbian, basé sur Silverlight 2, pour réaliser des applications s'exécutant systématiquement dans le navigateur
  • Silverlight pour Windows Phone, basé sur Silverlight 3, les applications s'installant systématiquement sur l'appareil (mode out-of-browser)
  • MonoTouch, pour développer des applications iPhone ; documentation
  • MonoDroid, annoncé courant 2010, pour développer des applications Android

Mon livre sur Silverlight présente les bases du développement pour Silverlight 2 et 3 (la version 3 étant couverte par un chapitre dédié). Ces bases sont générales et peuvent être appliquées au développement mobile en complétant sa lecture par les documents qui suivent.

Pour Symbian  : Platform Limitations on Microsoft Silverlight for Symbian

Pour Windows phone 7 :

La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.

La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En repartant d'une feuille blanche, les concepteurs ont pu répondre précisement aux objectifs visés :

  • une interface entièrement tactile,
  • une utilisation facile et agréable (simplicité, performance, dynamisme, prise en compte du contexte),
  • un visuel élégant, épuré et aéré, mettant en avant le contenu (et non le contenant),
  • un visuel personnalisable (thèmes),
  • la gestion des données et des tâches élémentaires tant personnelles que professionnelles.

Les concepteurs ont puisé leur inspiration dans la signalétique urbaine, qui s'avère simple et efficace. En conséquence, le nom de code choisi pour ces specifications ergonomiques a été "Metro". Il doit en effet s'avérer aussi simple de naviguer parmi les applications de  son Smartphone que de circuler dans un lieu public. En rentrant du MIX à Las vegas, j'ai observé la signalétique des aéroports et constaté à quel point ce choix est judicieux.

Dans Windows Phone 7, simplicité et performance obligent, exit les coins arrondis, les dégradés de couleur et autres chromes plus ou moins lourds. La typographie, normée, offre lisibilité et esthétique.

Place a la sobriété pour mettre l'ergonomie au service du contenu. La couleur et le graphisme sont exploitées pour valoriser le contenu quand cela est nécessaire.

Le système propose différents thèmes permettant de choisir uniquement la couleur de fond (sombre ou claire) et la couleur d'accentuation.

Les gestes tactiles suivants sont supportés : appui, appui maintenu, double-appui (zoom), défilement, feuilletage, pincement/étirement (2 points). Pour augmenter l'efficacité du comportement tactile, les contrôles tels que les boutons disposent d'une surface sensible au toucher supérieure à leur surface d'affichage (qui représente 60 à 100% de la surface sensible). La surface sensible recommandée est de 9 mm, soit 34 pixels à 96 DPI (7 mm ou 26 pixels au minimum). L'espacement entre les éléments est au minimum de 2 mm (8 pixels).

Les fonctionnalités des applications peuvent être organisées soit sous la forme de pages, soit sous la forme d'une vue panoramique (ou hub).

Avec la CTP de Silverlight, il est d'ores et déjà possible de développer une application à base de pages. Un mécanisme de navigation associé à des contrôles de type hyperlien permet de naviguer entre les pages. Le bouton physique Précédent peut être utilisé pour revenir à la page précédente dans une application.

Les applications panoramiques présentent leurs informations sur une surface supérieure à la taille de l'écran, découpée en sections parmi lesquelles on navigue par défilement horizontal. Les principales fonctionnalités de base du système sont fournies sous la forme de hubs (people, pictures, games, office, marketplace, etc.) qui agrègent les contenus par thématique.

Bien qu'il soit possible de construire une telle interface avec Silverlight, aucun composant de haut-niveau n'est actuellement disponible.

Comme pour Silverlight 4, le concept de pivot est supporté. Il s'agit ici d'une vue panoramique présentant plusieurs filtres sur des données. Un contrôle Silverlight devrait être disponible dans une prochaine release.

Une application peut disposer d'une barre d'outils, limitée à 4 boutons et associable à un menu.

Lors d'un changement d'orientation, les boutons pivotent automatiquement.

Le menu Démarrer s'active au moyen du bouton physique central. Il est constitué de vignettes interactives (lives tiles) qui peuvent présenter des notifications gérées par exemple au moyen du service de push de Windows Azure.


L'appareil dispose d'un clavier virtuel, mais certains modèles pourront disposer d'un clavier physique. Le clavier virtuel s'affiche automatiquement quand une zone de saisie prend le focus, et dispose d'outils d'aide à la saisie. Il dispose de plusieurs modes de saisie : texte, adresses (e-mail, SMS), numéro de téléphone, URL, recherche, etc.

Le bouton physique Rechercher (loupe) permet d'effectuer une recherche contextuelle. Les autres boutons physiques sont le déclencheur de l'appareil photo et le bouton de volume (et bien sûr le bouton de mise en marche).

Enfin, l'appareil dispose des capteurs suivants : GPS, accéléromètre, boussole, détecteur de lumière, détecteur de proximité, et bien entendu microphone et capteur d'image.

En conclusion, on est donc très loin de la charte graphique et ergonomique de Windows Mobile 6. Mais cette stratégie de rupture permet a Microsoft de se libérer des contraintes du passé et de réaliser un produit attrayant et de grande qualité, capable de rivaliser avec ses principaux concurrents (iPhone, Android, Symbian S60 5). Les outils de développement ajoutent beaucoup à l'intérêt de cette plate-forme, qui m'a personnellement beaucoup séduit.

Références :

Il est toujours passionnant de découvrir une nouvelle plate-forme. C'est bien entendu le cas pour Windows Phone 7. Mais au-delà de la passion technique, j'ai le sentiment qu'il s'agit d'un coup de maître en termes d'ergonomie (très fluide et épurée) et de réponse fonctionnelle, ou plutôt d'anticipation fonctionnelle. Nous en reparlerons.

Sur le plan technique, la réussite est évidente : malgre quelques manques dans la premiere version (voir plus loin), Windows Phone 7 s'appuie sur des technologies éprouvées : Windows CE 6, .NET, Silverlight, XNA, Direct3D, Blend, Visual Studio, etc. Mais le challenge se situe surtout au niveau du marketing car Microsoft repart de zéro, et tout l'écosystème est a construire dans un contexte tres concurrentiel...

Windows Phone 7 exploite une version de Silverlight 3 (et non pas 4) spécifiquement adaptée a la plate-forme. Il ne s'agit donc pas du Silverlight Mobile multiplateforme évoqué à la PDC 2008, et dont on n'entend plus parler (mais qui serait toujours en chantier en partenariat avec Nokia). [Prémonition ? A peine ces lignes publiées, on apprenait la sortie de Silverlight for Symbian beta, une adaptation de Silverlight 2 pour le navigateur de Symbian S60 5ème édition].

Dans sa premiere version, Windows Phone 7 cible le grand-public (cela a été maintes fois répété par les speakers du MIX), et l'objectif est de réussir le lancement. Les retouches et adaptations auront lieu ensuite. Il faut donc se contenter de ce qui est proposé (il y a deja de quoi faire), et suggérer des ameliorations pour la suite, telles que :

  • le support de SQL CE dans Silverlight (SQL CE est présent dans le système mais l'API n'existe pas dans Silverlight),
  • l'interop entre XNA et Silverlight pour réaliser des extensions graphiques (par exemple un moteur de cartographie specialisée) ; cela offrirait une alternative aux extensions graphiques en code natif, qui n'est pas supporté ;
  • la possibilité de déployer une application sans passer par MarketPlace.

Un echange avec des représentants de Microsoft sur le stand du MIX me donne bon espoir pour les 2 premiers points (qui seraient supportes dans des versions ultérieures a celle de cet automne). Mais pour le dernier point, il y a un blocage...

Pendant la redaction de ce post, j'ai installé les outils de developpement. J'ai pu tester le pilotage au doigt de l'émulateur au moyen de l'écran tactile de mon Acer 1420P issu de la PDC09. Impressionnant. Voici par exemple un zoom fait au doigt sur une page du New York times dans Internet Explorer (copie d'écran réduite) :

Hi from Vegas !

En résumé, Las Vegas m'impressionne par sa démesure.

Ou que l'on aille, les itinéraires traversent des salles bruyantes pleines de machines a sous et de tables de jeu.

Les décors, surtout a l'extérieur, se veulent grandioses et reproduisent ou s'inspirent de monuments mythiques. Entre autres, on retrouve la Tour Eiffel, l'Arc de Triomphe et l'Opéra...

Le Grand Canyon n'est pas loin et permet de s'échapper, d'élargir l'horizon et de prendre conscience du désert environnant.

Retour au centre de conférence feutré de l'hôtel-casino Mandalay Bay (ci-dessus), pour assister aux workshops :

  • Silverlight 4, animé par Mike taulty et John Papa ; un tour d'horizon approfondi avec notamment une démo de l'utilisation de MEF pour réaliser une application composée de modules téléchargeables a la demande
  • ASP.NET MVC ; un tutoriel par Jon Galloway ; fichiers

Mes photos de Las vegas et du MIX (l'album sera enrichi au fil de la conférence).

Plus de Messages Page suivante »


Les 10 derniers blogs postés

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le il y a 22 heures et 37 minutes

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59

- Perspective 3.0 pour Silverlight 5.0 par Perspective le 02-07-2012, 22:39