Archive for category .NET,WPF,WCF,Silverlight

SIlverlight et Expression Blend

Posted by on Samedi, 27 mars, 2010

J’ai eu l’occasion hier de participer à une journée d’initiation à Silverglight en partenariat avec Microsoft et Regard.net animée par Eric Ambrosi. Il s’agissait essentiellement d’une journée de découverte par la pratique des outils de la suite Expression, en particulier Expression Blend.

Cette suite permet d’ établir le lien entre les phases de design et d’implémentations. Elle introduit également un nouveau type de profil que Eric appelle le “designer technique”. En effet il ou elle doit posséder la sensibilité artistique pour pouvoir concevoir et animer une interface utilisateur mais également la casquette technique pour interagir avec les composants (connaitre leur constituants, leur propriétés…)
Rappellez vous Seb et moi même avons souvent abordé le manque qu’il y avait dans le workflow de la conception à l’implémentation. En effet il existe un vide logiciel entre les outils de design et les environnements de développement

Adobe y répond avec Catalyst.

Catalyst permet de commencer un projet en partant du travail du designer (photoshop, illustrator…). On peut ainsi animer les calques et créer de véritables composants. Dans l’idéal l’ingénieur récupere ainsi les vues pour y pluger son code métier.

J’ai été relativement impressionné par l’avance de microsoft sur ce type de d’outils. Blend est en effet relativement complet et permet

  • la conception des interfaces (mise en place des composants modifications de leur propriétés, créations de ressources réutilisables ….)
  • la conception d’animations (enregistrement sur une timeline des transitions au niveau d’un ou plusieurs composant…)
  • la conceptions d’états (gestion des propriétés d’un ou plusieurs composants  au seins de différents états)
  • l’utilisation de source datas générées pour simuler le comportement de l’interface…

A tout moment le fichier xaml généré peut être ouvert dans visual studio pour permetre de travailler sur le code behind en C#.

Bref au final je pense que Adobe et Microsoft vont dans la même bonne direction en proposant un expérience utilisateur très performante, visuelle et en offrant des solutions pour faciliter leur mise en place.

PS: Au final j’en ai profité pour tester en live Surface. Bluffant……

RIA et usabilité

Posted by on Jeudi, 13 novembre, 2008

Les journées de l’utilisabilité organisées par Fred Cavazza pour Paris ont été l’occasion d’aborder les thèmes importants des applications riches. Des présentations intéressantes qui m’ont conforté dans ma vision du RIA et notamment de la relation développeur/graphiste/ergonome/utilisateur.
Ce que j’en retient :
Read the rest of this entry »

RIA : a l’intérieur ou à l’extérieur du navigateur ?

Posted by on Mercredi, 5 novembre, 2008

Le Paris JUG était cette fois ci consacré à GWT et à l’implémentation de Restlet pour GWT. Deux présentations rondement menée par Didier Girard et Jerome Louvel. J’ai été impressionné par le nombre de participant, pensant que GWT était déjà dans les moeurs. Bravo à Didier de continuer à promouvoir cette technologie innovante et à Jérôme d’y apporter le concept REST.
Reste que je m’étonne de la vision que les gens ont du RIA. Pour beaucoup j’ai l’impression que RIA veut dire application web riche. Or la notion de “riche” est simplement une reconsidération de l’expérience utilisateur et cela ne passe pas obligatoirement par le navigateur. GWT, Ajax, AppletFX, Flex ou Silverlight n’ont pas le monopole du RIA simplement parce qu’ils s’exécutent dans un navigateur.
Javascript a permis de dépasser les limites de HTML dans le navigateur et a donné une nouvelle dimension aux applications web. Le navigateur devient maintenant un runtime Javascript et utilise comme bibliothèque graphique le HTML. Comme Java avec Swing, C# avec WPF ou Silverlight, AS3 avec Flash et Flex.
iTunes est surement une des premières RIA et ce n’est pas une application web. Comme je le disais déjà il faut simplement différencier Rich Web Application et Rich Desktop Application. Une RWA s’éxecute dans le navigateur, une RDA s’éxecute dans un OS.
Il y a avantages et inconvénients dans les deux approches mais la diffusion et la maintenance qui ont longtemps été les points forts des applications web ne sont plus vrais aujourd’hui.
Comme vous ne vous étonnez plus d’avoir votre Windows automatiquement mis à jour il est aujourd’hui tout à fait possible pour une RDA d’être diffusée et maintenu via le Web. Java Web Start en est un bel exemple et Adobe AIR sait le faire aussi. Mais vous me direz que pour faire tourner du Java ou du Air il faut installer respectivement la JVM et le runtime AIR. Oui c’est vrai comme récemment vous avez installé Chrome ou il y a plus longtemps Firefox. La différence se fait avec Windows qui embarque son navigateur IE et que dès lors que vous achetez un PC en Windows vous l’avez. A un moment donné on installe un runtime et a moins d’être terriblement fainéant personne n’est obligé de se contenter de Windows/IE.
La où il faut être vigilant avec une RDA c’est de ne pas retomber dans l’ancien modèle client/serveur. La RDA doit rester une couche client et ne pas embarquer de métier qui lui doit toujours se trouver coté serveur.
Apple avait déjà expérimenté cela intelligemment avec WebObjects Java Client et continue aujourd’hui à proposer des API similaires pour Cocoa et maintenant IPhone SDK.
Au slogan “the browser is the platform” je réponds “the browser is a platform”. Les architectures de demain ne doivent pas être dépendantes de la couche client car celle-ci doit être développée dans la meilleure technologie pour répondre aux objectifs de l’application et du besoin client en privilégiant ergonomie et performance.
Notre application ResUrgences est en mode web depuis 8 ans maintenant dans un secteur (la santé) ou les applications sont souvent du client/serveur. Pourtant son extension du service d’urgences au SMUR nous oblige à reconsidérer le web car l’utilisation d’une application web sur tablette pc en mode déconnecté, bien que pas impossible, n’est pas adaptée. Notamment quant il s’agit de s’interconnecter avec du matériel de monitoring et d’électro-cardiogramme.
Alors quel choix faire entre RWA et RDA ? La première étape c’est de penser RIA, donc d’avoir un métier coté serveur respectant une architecture SOA et accessible via des services diffusant des formats diverses via des protocoles diverses. A partir de là différents critères vont rentrer en jeu : ergonomie, performance, accessibilité, environnement (OS et matériel), ouverture, sécurité, compatibilité avec un existant … Il n’y a donc pas de réponse évidente. Je cherche depuis un moment faire un tableau qui définit quelle technologie pour quels besoins et au final je pense que c’est inutile.
Ce qu’il faut considérer c’est que :

  • l’accès aux resources locales (fichiers, applications, périphériques USB, serie, Bluetooth) est un argument pour pencher vers le RDA. Bien que cela peut être pallié avec un applet et de plus en plus avec Gears (mais cela revient à mixer RDA et RIA, pourquoi pas d’ailleurs c’est ce que je fais) et que le Flash plugin permet déjà l’accès à la caméra.
  • la notion de “push”, pour envoyer des données vers un client depuis le serveur est maintenant possible avec des RWA (Comet, reverse Ajax) et bientôt standardisée dans HTML 5 (WebSocket).
  • les échanges asynchrones via des MOM avec des queues coté client ne peuvent pas encore se faire en RWA. Gears devrait proposer une API et LifeCycle Data Service ne le propose pas reellement car la queue reste coté serveur.
  • l’uniformisation des applicatifs avec une même plate-forme de déploiement indépendante de l’OS est sûrement l’argument le plus percutant pour le SI pour choisir une RWA

Java sur la route du RIA

Posted by on Vendredi, 18 mai, 2007

L’annonce de JavaFX a fait chauffer les feed reader, Sun se positionne sur le marché du RIA face à Mricosoft et Adobe et c’est une bonne chose. F3 (que j’ai déjà evoqué précédemment) qui est à l’origine de JavaFX Script est une trés bonne techno, et facilite le developpement d’applications Swing plus ergonomique. Mais n’oublions pas que Java est depuis le début en mesure d’offrir des interfaces riches déployées via un navigateur (RWA), c’est l’Applet. Apple l’a bien compris et a migré la bibliothèque graphique de NeXT en Swing depuis la version 5 de WebObjects. Java Web Start est arrivé par la suite proposant alors une facilité de déploiement aussi puissante que le navigateur pour les applications orientées desktop (RDA). Sun a donc été précurseur dans ce domaine mais l’Applet n’a pas séduit et c’est la que Silverlight et Flex marquent un point car ils disposent d’outils de conception visuelle (Expression Web, Flex Builder). Selon le CTO de Sun Bob Brewin cet outil devrait voir le jour rapidement [Ed Burnette interview Q6] : JavaFX Designer.

Contrairement à Simon Brocklehurst je pense qu’il est indispensable d’avoir cet outil et que la dualité graphiste/developeur est importante, je ne néglige pas les capacités artistiques des dévelopeurs et je pense même que concevoir une application avec un code propre c’est aussi de l’art, mais chacun son métier.
L’autre difficulté de Java c’est la taille du plugin, en effet celui-ci inclu le runtime de la plate-forme soit au moins 13 Mo. Un peu lourd pour un plugin la ou les autres ne dépassent pas 5 Mo. Mais cela aussi devrait s’améliorer.
Enfin n’oublions pas le mobile, domaine ou Java est bien plus présent que les autres acteurs et qui peut aussi faire la différence.

Chris Oliver n’a pas choisi XML pour JavaFX Script contrairement à Microsoft avec XAML. Il est vrai que la syntaxe de Java FX Script est plus séduisante et offre des avantages mais on perd alors les avantages d’XML en terme d’extension (XInclude, XPath, XSLT). Dommage que Sun n’est pas poussé plus en avant le framework JAXX qui propose une syntaxe XML pour définir des UI. Mais ne nous y trompons pas il est indéniable que JavaFX Script propose une syntaxe facilitant la création d’UI plus ergonomique.
Qu’en est il alors de SWT, Bob Brewin prétend que la syntaxe de JavaFX Script peut être étendu pour SWT [Ed Burnette interview Q5]. sachant que SWT est en cours d’adaptation à WPF, pourrait on avoir un XAML générant du SWT :) ? Cependant n’oublions pas que SWT n’est pas destiné au RWA mais uniquement au RDA. Les objectifs de Silverlight, Flex, JavaFX Script ne sont pas les mêmes que ceux de Eclipse RCP, NetBeans RCP, Apollo, et WPF. A noter que Silverlight n’utiliserais que 30% de WPF [5mn avec Kevin Gallo, Product Manager Silverlight par Didier Girard] contrairement à JavaFX qui s’appuie directement sur Java et donc toutes ses bibliothèques.
Ce qu’il est intéressant de constater c’est qu’Eclipse est présent à presque tous les niveaux :

En choisissant Eclipse on est sûr de pas se tromper ;) .

Pour ceux qui voudrait comparer plus techniquement JavaFX Script et XAML je vous conseille les pads :

Silverlight, Expression tools et DLR au MIX 2007

Posted by on Vendredi, 4 mai, 2007

Microsoft a profité du MIX 2007 à Las Vegas pour présenter Silverlight et la suite Expression dont j’ai déjà parlé dans les articles précédents. Microsoft confirme son approche graphiste/developpeur avec la suite Expression d’un coté, le Visual Studio de l’autre et XAML au centre. Les démos ont d’ailleurs bien montrées l’export/import de XAML dans les différents outils. Ce fut aussi l’occassion de présenter le DLR (Dynamic Language Runtime) qui va permettre aux développeurs d’utiliser Python, Ruby, Javascript (ECMAScript 3.0) ou Dynamic VB (VB v.10) pour coder et en plus en “open source” sous MPL (Microsoft Permissive License).
J’aime assez le schèma de Scott Hanselman résumant tout cela.
Pour ceux qui n’y étaient pas il y aura le MIX 2007 Paris le 21 juin.

WPF/E : comment ça marche

Posted by on Mardi, 5 décembre, 2006

Voici une interview de Joe Stegman le leader du projet WPF/E (Windows Presentation Framework / Everywhere). Il explique comment ca marche et fait quelques demo.
En fait c’est un plugin de navigateur qui execute du XAML. C’est comme du Flash mais pour XAML. J’aime bien la barre de navigation qui flotte à la fin.