2009 avril | Tangane - Solutions for Business Value
avr 30

Cet article est le dernier d’une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :

Mise en relation

Il manque dans tout ce système un détail. Comment le traiteur, qui n’a pour l’instant communiqué avec moi que par internet, peut-il savoir que je suis bien Victor Nicollet, habitant à l’adresse que je lui ai indiquée ? Il se pourrait tout à fait qu’un individu malveillant se fasse passer pour moi en associant mon nom à sa clé publique sur le site du traiteur. Ce dernier aurait donc en sa possession un contrat signé par une clé publique qui porte mon nom, alors que cette clé publique ne m’appartient pas !

Le plus simple (mais pas forcément le plus facile) est de fournir les identifiants de connexion en personne. Le traiteur peut me demander de passer à son siège pour que je lui donne ma clé publique. De la même façon, une banque peut envoyer par la poste un code d’accès au site à mon adresse, le Ministère de l’Economie, des Finances et de l’Industrie me demandera un identifiant qui se trouve uniquement sur mes avis d’imposition, et une école ou une entreprise me donnera les identifiants de mon compte informatique lors de ma première journée sur les lieux. Ces stratégies supposent donc que de se voir en personne (éventuellement, en regardant sa carte d’identité) permettent de s’assurer que celui qui reçoit les identifiants ou donne sa clé publique est bien celui qu’on veut voir.

On fait donc appel à un tiers de confiance qui a déjà identifié l’utilisateur et peut attester de son identité. C’est le principe même de la carte d’identité : celle-ci est juste la confirmation par un tiers de confiance (l’Etat) que l’identité de l’utilisateur correspond bien à son aspect physique (donné par la photo sur la carte) et à sa possession même de la carte. Comment transposer cela à l’informatique ?

Une manière de faire (qui existe depuis si longtemps qu’on la juge naturelle) est que le tiers de confiance donne un courrier électronique à l’utilisateur avec une adresse comportant son nom de domaine. Ainsi, pour l’adresse victor.nicollet@tangane.com, l’entreprise Tangane reconnaît que le propriétaire de cette adresse est l’individu Victor Nicollet qui travaille pour elle. Si vous faites confiance à Tangane, vous pouvez être certains que les courriers envoyés à cette adresse seront lus par moi, et pas par un individu qui se ferait passer pour moi. Par contraste, les mails envoyés à victor.nicollet@paradis-des-hackers.com seront probablement lus par la mauvaise personne.

Attention toutefois à ne pas en tirer de mauvaises conclusions : un courrier électronique qui vient de victor.nicollet@tangane.com n’a aucune raison d’avoir été écrit par moi ! Comme dans le monde réel, un individu peut indiquer sur l’enveloppe l’adresse d’expédition de son choix. Si un courrier électronique est d’une très grande importance, on peut vérifier son authenticité en demandant une confirmation (la demande de confirmation ne pouvant être lue que par le véritable propriétaire de l’adresse).

Ce type de vérification reste cependant peu pratique dans certaines situations. Par exemple :

Lorsque je visite pour la première fois le site de ma banque, en HTTPS, comment savoir que la clé publique qu’il me donne pour prouver son identité est bien la vraie, et non celle d’un individu malveillant qui se fait passer pour ma banque ?

Je télécharge en ligne un contrat d’assurance ou d’emprunt, je le signe, et je le renvoie par courrier électronique. Comment l’assurance ou la banque peut-elle vérifier que je suis bien celui que je prétends être, surtout si je n’ai pas de courrier électronique chez un fournisseur de confiance ?

La solution est d’utiliser ce qu’on appelle des réseaux de confiance. Pour prouver que ma clé publique est bien celle de Victor Nicollet, il me suffit de demander à une entité de confiance de signer un document numérique affirmant cela. Pour peu que l’entité de confiance soit reconnue (un pays, une institution internationale) mon interlocuteur, ainsi qu’un éventuel juge, acceptera cette signature comme la preuve que la clé publique m’appartient. Un contrat de la forme « je, soussigné Z, affirme que la clé publique X appartient à la personne Y » est appelé certificat, et les entités reconnues pour pouvoir signer un certificat sont appelées autorités de certification. Il suffit de se rendre auprès d’elles pour obtenir un certificat à son nom. Par exemple: http://www.verisign.fr/

Il existe une sorte particulière de certificat, appelé un certificat auto-signé : la personne Y affirme elle-même être la propriétaire de la clé publique X. Il n’interdit donc pas à un individu malveillant d’associer sa clé publique à un autre nom, mais il lui interdit en revanche d’associer son nom à ma clé publique. Certains logiciels, dont Adobe Reader, peuvent générer des certificats auto-signés.

avr 26

Cet article est le second d’une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :

Signature Numérique

Même avec un système à clé publique normal, il reste un problème : celui de la preuve. Prenons un exemple imaginaire.

Un jour, un grand traiteur sur le site duquel j’ai un compte sonne à ma porte pour me livrer dix mille euros de petits fours. Je réponds ne jamais avoir commandé cela. Les petits fours étant périssables, le manque à gagner pour le traiteur peut le motiver à aller devant un tribunal. Comment le juge pourra-t-il déterminer si je suis le menteur (j’ai commandé les petits fours, soit pour nuire au traiteur, soit pour une occasion qui n’a plus lieu et pour laquelle je ne veux donc pas payer) ou si le traiteur est en faute (une erreur informatique dans son logiciel de commande, une erreur de saisie, ou même une volonté de me nuire) ?

Ce que le traiteur peut prouver, c’est que je me suis à un moment donné connecté à son site à l’aide de ma clé privée (et encore, il faudrait pour cela que la vérification de mon identité indique le site auquel je me connecte, sans quoi le traiteur aurait pu espionner et recopier ma connexion à un autre site). Mais même si je me suis connecté au site, ai-je réellement passé la commande comme il le prétend ? Cela, le système d’identification le plus avancé au monde ne pourrait le faire.
Dans le monde réel, lorsque deux personnes se mettent d’accord sur un contrat (surtout si c’est un contrat de dix mille euros) ils signent le document contractuel. On a donc développé en informatique un moyen de signer des contrats : la signature numérique.

Pour cela, il faut inverser le principe du système à clé publique. Lorsque je veux signer un contrat, je le crypte à l’aide de ma clé privée : n’importe qui peut alors le décrypter à l’aide de ma clé publique. Pour faciliter la lecture par un tiers, je joins le contrat crypté et ma clé publique au contrat original. Les autres signataires font de même, et l’on obtient à la fin un contrat original portant avec lui une clé publique et une signature pour chaque signataire.

Pour vérifier les signatures, il suffit d’utiliser les clés publiques pour décrypter les signatures et s’assurer qu’il s’agit bien du bon contrat. Cela prouve deux choses : d’abord, la signature appartient bien au propriétaire de la clé publique (car seul lui dispose de la clé privée permettant de crypter un contrat pour qu’il soit décryptable par la clé publique), et la signature s’applique bien au document auquel elle est associée (puisque décrypter la signature indique quel était le contrat qui a été signé).

blog1-img2

Il suffit donc au traiteur de m’envoyer, lorsque je veux passer une commande, le contrat au format PDF (contenant date de commande, date de livraison, prix et liste des petits fours). Je signe le contrat à l’aide de ma clé privée, par exemple à l’aide de ma version gratuite d’Adobe Reader, et je le lui renvoie. Le traiteur vérifie alors que la signature est correcte, ce qui lui permettra de faire valoir auprès d’un tribunal que j’ai effectivement signé ce contrat et que je dois donc mettre la main à la poche. En ce qui me concerne, je suis tranquille : ne disposant pas de ma clé privée, le traiteur ne pourra ni volontairement ni involontairement imiter ma signature et donc signer à ma place un contrat.

avr 21

Cet article est le premier d’une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :

Concepts fondamentaux en informatique, l’identité et la sécurité sont liées. Un pirate ne peut pas prendre le contrôle d’un ordinateur que personne ne peut contrôler, par définition. Mais s’il existe une personne capable de contrôler l’ordinateur, alors le pirate pourra se faire passer pour elle. Chaque fois que l’on entend parler d’une faille de sécurité, il y a une donc question d’identité sous-jacente : exploiter une faille de sécurité, c’est pour l’attaquant tromper le système afin d’assumer l’identité d’une cible disposant de droits supérieurs, et d’agir en tant que tel pour en bénéficier. L’auteur d’un virus se fait passer pour l’utilisateur de l’ordinateur afin d’installer des programmes nuisibles, le hacker se fait passer pour un administrateur pour accéder à des informations confidentielles ou prendre le contrôle d’un serveur, les phishers se font passer pour une autorité légitime pour obtenir des utilisateurs des informations critiques, les spammeurs se font passer pour des auteurs humains pour que leurs courriers arrivent dans les boîtes aux lettres.

Et tout le travail des experts en sécurité et des équipes de développement, c’est de s’assurer que l’interlocuteur d’un programme est bien la personne voulue.

Qui es-tu ?

La première question qu’on se pose, lorsqu’on doit mettre en place un système sûr, c’est comment reconnaître les personnes. Le premier principe de la reconnaissance, c’est de pouvoir déterminer si deux visiteurs (par exemple, à quelques jours d’intervalle) sont ou non la même personne.

Par exemple, un visiteur s’inscrit sur un site internet et effectue quelques opérations. Une semaine plus tard, il revient sur le même site et veut continuer son activité. Le site doit donc pouvoir déterminer que le visiteur d’il y a une semaine et le même que le visiteur d’aujourd’hui.

Le moyen le plus simple d’effectuer cela est le nom d’utilisateur. Le visiteur en a choisi (ou reçu) un lors de sa première visite, et il lui suffit de le taper à nouveau pour que le site le reconnaisse. Ce système est souvent utilisé sur internet, dans des formes plus ou moins déguisées :

  • Certains sites où l’information stockée n’est pas essentielle. Par exemple, pour identifier ses visiteurs, le site BrowserShots utilise l’URL qu’ils ont demandé à examiner comme nom d’utilisateur. Deux utilisateurs qui demanderont la même URL seront donc considérés comme un seul et même individu.
  • De nombreux outils de blog, comme Wordpress, utilisent une adresse mail secrète pour permettre aux gens de poster par mail. Ainsi, un utilisateur qui connaît l’adresse mail utilisée par le blog peut poster sur le blog directement. Cette adresse sert donc de nom d’utilisateur, permettant d’identifier les auteurs qui ont le droit de poster.
  • La majorité des sites non sécurisés utilisent pour reconnaître les utilisateurs des cookies. Un cookie contient un numéro de session qui sert de nom d’utilisateur. Comme il est compliqué à retenir, c’est l’explorateur qui se charge de le retenir et de le renvoyer au site à chaque page visitée. Mais si un attaquant volait le cookie d’un autre utilisateur, il pourrait se faire passer pour celui-ci.
  • Un code de carte bancaire est un nom d’utilisateur, puisqu’il permet d’identifier avec précision le propriétaire de la carte bancaire en question.

Il y a malheureusement plusieurs problèmes lorsqu’on se sert d’un nom d’utilisateur pour identifier les visiteurs.

  • Les noms d’utilisateur sont stockés par le système. Une attaque sur le système qui parviendrait à obtenir cette liste de noms permettrait à l’attaquant de se faire passer pour n’importe quel utilisateur‒c’est la raison pour laquelle on évite de stocker les numéros de carte bleue sur les sites de vente en ligne, par exemple.
  • Un nom d’utilisateur doit être unique (deux utilisateurs doivent avoir des noms différents). Si l’utilisateur a le choix de son nom, il peut découvrir qu’une autre personne porte le même nom et se faire passer pour elle. S’il n’a pas le choix de son nom, alors le nom qui lui est donné sera probablement difficile à retenir et sera donc probablement noté quelque part (le vol de cookies est un exemple typique de ce phénomène).
  • Si la personne choisit son nom, ce sera souvent facile à deviner pour un attaquant à partir de ses informations publiques (nom, prénom, pseudonymes usuels, adresses électroniques). Si certaines cartes bancaires contiennent une partie de leur numéro au dos, c’est pour éviter qu’une photo de la face ne suffise à révéler l’identifiant complet.

Pour pallier à ces problèmes, on utilise souvent des mots de passe. Ceux-ci viennent compléter le nom d’utilisateur pour le rendre plus difficile à deviner, et sont par définition secrets et aléatoires pour qu’on ne puisse pas les déduire d’un nom, prénom ou pseudonyme. L’immense majorité des systèmes que l’on trouve sur les bureaux et sur internet utilisent une méthode combinant un nom d’utilisateur (unique, plus ou moins public, sert à identifier l’utilisateur) avec un mot de passe (quelconque, secret, sert à vérifier l’identité).

Une amélioration notable, qui permet de ne pas stocker les mots de passe sur le système, est l’utilisation des fonctions de hachage : ce sont des algorithmes qui transforment un mot de passe en un texte aléatoire. Retrouver le mot de passe à partir du texte aléatoire est proche de l’impossible, mais un mot de passe donné est
toujours transformé en un même texte aléatoire, et deux mots de passe différents donnent deux textes aléatoires différents, ce qui permet de s’assurer que le mot de passe fourni par l’utilisateur est le bon sans avoir à le stocker !

Pour autant, cette solution n’est pas parfaite :

  • Certains systèmes persistent à enregistrer les mots de passe en clair. En effet, c’est la seule manière de pouvoir renvoyer le mot de passe à l’utilisateur si celui-ci le perd. Cependant, cela signifie que si le système est attaqué, les mots de passe des utilisateurs peuvent être découverts.
  • Les mots de passe créent l’illusion que, puisqu’ils sont secrets, ils ne peuvent pas être devinés. Or, un mot de passe qui existe dans le dictionnaire ou peut être facilement deviné à partir d’informations publiques n’apporte pas une vraie sécurité. Encore pire, la tendance à utiliser le même mot de passe sur tous les sites fait qu’une faille de sécurité sur un site permet d’obtenir un mot de passe pour tous les autres.
  • Il faut, pour s’identifier, envoyer le mot de passe au système. Un attaquant qui surveille le canal de communication peut donc en extraire le mot de passe et l’utiliser. De même, le phishing consistant à envoyer un courriel demandant le mot de passe d’un utilisateur permet de l’obtenir à faible coût.

Résoudre ces problèmes se fait à l’aide d’un système cryptographique à clé publique. Dans un tel système, les informations critiques ne quittent jamais l’ordinateur de l’utilisateur, ce qui fait qu’elles ne peuvent être ni interceptées, ni données par erreur, ni volées sur le serveur.

Le principe de ce système est simple : chaque utilisateur dispose d’une clé publique, distribuée à tout le monde sans crainte, qui permet de crypter du texte, et d’une clé privée, conservée précieusement dans le secret de l’ordinateur, qui permet de décrypter ce texte. On peut voir la clé publique comme un cadenas (n’importe qui peut prendre une copie du cadenas et verrouiller une boîte contenant un message), et la clé privée comme la clé du cadenas (seul l’utilisateur peut ouvrir une boîte et lire le message).

Pour vérifier qu’un utilisateur est bien le propriétaire d’une clé publique, on crypte un message aléatoire avec cette clé publique et on envoie le message crypté à l’utilisateur. L’utilisateur, s’il possède la clé privée, décrypte le message aléatoire d’origine. S’il ne possède pas la clé privée, il ne peut que deviner le message aléatoire, ce qui est proche de l’impossible. Donc, si le système voit revenir le message aléatoire qu’il avait choisi, il peut être certain que l’utilisateur qu’il a en face de lui est bien le propriétaire de la clé publique.

blog1-img1

Lors de son inscription, l’utilisateur fournit au système sa clé publique, qui lui sert alors de nom d’utilisateur. Lors de chacune de ses visites, il affirmera être le propriétaire de cette clé et le système le vérifiera suivant le principe ci-dessus.

Malheureusement, ce système n’est pas facile à utiliser. Bien sûr, les explorateurs web sont déjà capables de travailler avec ce type de cryptographie pour s’assurer de l’identité d’un site‒pour toute adresse qui commence par HTTPS, l’explorateur vérifie que le serveur possède bien la clé privée correspondant à l’adresse. Ainsi, aucun attaquant ne pourra se faire passer pour le site HTTPS de votre banque sans que votre explorateur ne vous avertisse (il peut toutefois utiliser une adresse HTTP, donc non sécurisée, et espérer que vous ne vous en rendez pas compte).

Mais l’identification en sens inverse, donc s’identifier auprès d’un système avec sa paire de clés publique/privée, reste du domaine des geeks (qui l’utilisent par exemple pour faire du SSH) et apparaît très peu dans la vie courante. Utiliser des mots de passe, malgré un relatif manque de sécurité, restent rois. Toutefois, des initiatives comme celle du Ministère des Finances et de l’Economie en France, ou de la carte d’identité électronique en Belgique, commencent à rendre ce principe plus accessible.

avr 15
Fiche technologie - Flex
icon1 Fabien Deshayes | icon2 RIA | icon4 15 avril 2009 |  icon3Aucun commentaire »

Présentation

La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s’appuyant sur le Flash Player et offrant des éléments facilitant la création d’applications riches. Depuis la version 3, Flex est devenu un projet open source.

logo_flex

Principes et caractéristiques

La technologie Flex peut être expliquée en trois couches :

  • L’interface est décrite à l’aide d’une syntaxe MXML (Macromedia XML). On peut y placer et organiser les conteneurs, composants et contrôles selon une hiérarchie. Les fichiers .mxml sont ensuite transcrits en ActionScript (fichiers .as) au moment de la compilation.
  • La logique applicative sera généralement contenue dans des fichiers ActionScript. L’ActionScript 3 est le langage utilisé pour créer des exécutables Flash (.swf). C’est un langage objet basé sur ECMAScript (norme ECMA), ce qui lui donne une forte ressemblance avec le Javascript au niveau grammatical, bien qu’il soit également assez proche du Java.
  • Les applications Flex, tout comme ce que l’on peut créer avec le logiciel Flash CS4, sont de simples exécutables Flash de type .swf. Flex fournit tout de même une page HTML permettant simplement d’intégrer l’application sur une page web.
  • Flex permettant de réaliser des RIA, on peut effectuer un certain nombre de traitements coté client. Néanmoins, son architecture reste la plupart du temps de type client-serveur. Flex (et les diverses communautés open source) offre diverses possibilités de communication avec un serveur, qu’il s’agisse du PHP (AMFPHP), du .NET (FluorineFx), du Java (BlazeDS, LCDS) ou toute technologie pouvant exposer des web services.

La version actuelle de Flex offre les possibilités suivantes :

  • un ensemble de contrôles “riches” pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.
  • le “data binding”, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur
  • la lecture de médias (vidéo, audio) dans les formats H264, H263, On2VP6, MP3 et des images de types GIF, JPG et PNG
  • l’intégration de l’e4x, permettant de manipuler simplement du XML
  • la possibilité de personnaliser l’application avec des feuilles de styles CSS et de les skinner en utilisant des images ou des animations de type .swf

Outils

La technologie Flex s’appuie sur l’éditeur Flex Builder, lui même basé sur Eclipse : il profite donc des possibilités de cet environnement. Précision : Flex Builder existe en version “stand-alone” ou en tant que plugin Eclipse. Cet éditeur offre de nombreuses possibilités, se rapprochant de celles disponibles en Java sur Eclipse : complétion, coloration syntaxique, refactoring mais aussi une version WYSIWYG (What You See Is What You Get) des fichiers MXML et CSS, un mode débug et un profiler (pour monitorer la mémoire utilisée).

flex_builder

L’une des forces de Flex est aussi de s’interfacer correctement avec les autres produits d’Adobe : il est en effet tout à fait possible d’utiliser les logiciels Flash, Fireworks ou Illustrator pour créer des skins et des composants Flex. Le lien entre designers et développeurs est très important pour Adobe : c’est également pour cela qu’un nouveau logiciel, nommé Flash Catalyst, arrive bientôt. Il permet très simplement de créer une interface Flex (aspect graphique, comportement)  sans avoir à écrire une ligne de code ! L’ensemble de éléments mis bout à bout forme un workflow designer / développeur, thème récurrent autour de la technologie Flex.

Flex_designer_developer_workflow

Adobe propose également des solutions serveur Java pour faciliter la communication et les échanges avec une interface Flex. Il s’agit de BlazeDS, projet open source et de Live Cycle Data Services, solution payante. La première est un sous-ensemble de la seconde, mais elles offrent toutes les deux les meilleurs outils de communication Flex - Java. Il existe également d’autres outils de communication mais ceux-ci ne sont pas gérés par Adobe.

Points forts

La technologie Flex s’appuyant sur le Flash Player, elle profite de ce fait des avantages de ce dernier. Cela lui fait donc profiter de l’expérience des 10 versions du Player mais également d’une communauté importante de développeur “Flash”.  On peut ainsi citer quelques points forts de Flex :

  • sa capacité de déploiement : le Flash Player est installé sur près de 98% des ordinateurs (source : chiffres Adobe) en version 9 ou plus. Un site indépendant, RIAStats, montre un taux de 97% d’installation.
  • son ubiquité : il existe un Flash Player sur Windows, Mac OS et Linux (encore en version 9 sur ce dernier).
  • son environnement de développement, basé sur Eclipse.
  • sa capacité à pouvoir dialoguer avec différents languages serveur, en utilisant les différents moyens de communication : les appels http classiques, les web services, les RemoteObject, l’AMF, etc.
  • sa gestion des médias : le format Flash est en effet le plus répandu sur Internet pour la diffusion de contenu vidéo (cf. des sites comme Youtube ou dailymotion).
  • sa large communauté, s’appuyant en partie sur les nombreux développeurs Flash déjà existants. On trouve de nombreux documents et exemples sur Internet.

Points faibles

De la même manière que Flex profite des points forts de Flash, elle souffre également des mêmes problèmes. De nombreux développeurs web n’apprécient pas Flash en mettant en cause son incapacité à créer des applications accessibles, à être correctement référencées ou encore à fonctionner correctement avec les barres de navigation des navigateurs.

Ces affirmations ne sont pas tout à fait vraies. En effet, il existe un ensemble de propriétés permettant de rendre accessible les applications. Les moteurs de recherche commencent à référencer le contenu de fichier .swf et la version 3 de Flex permet d’interagir correctement avec la barre de navigation des navigateurs. Des efforts sont donc fait mais ces points restent vrais et demanderont forcément un supplément de travail comparé par exemple à un développement d’une application web en HTML.

De plus, si l’on constate que la communauté Flash est importante, elle est en grande partie constitué de designers ayant des connaissances en développement, et pas toujours de développeurs confirmés ou d’architectes. Bien que ce type de profil est en train de se répandre, elle reste encore une minorité dans le monde de l’ActionScript.

Le futur

Une version 4 du framework Flex ainsi que du Flex Builder est en préparation, elles devraient être disponibles durant la seconde moitié de 2009 et apporter leur lots de nouveautés :

  • une amélioration de la collaboration entre design et développement, notamment en simplifiant le processus de skinning de composants pour qu’il soit très poussé sans avoir à coder en ActionScript, juste avec une description mxml.
  • l’ajout de nouveaux éléments pour profiter des capacités du Flash Player 10, notamment un composant vidéo refait et peut-être de la 3D
  • une amélioration de la productivité en optimisant le compilateur, avec pour objectif des temps divisé par 5 !
  • une plus grande interaction avec la technologie AIR d’Adobe
flex_3d

Une présentation plus complète est disponible sur le site du Flex SDK : Gumbo Themes (Gumbo étant le nom désignant Flex 4)

Flex étant devenu récemment un projet open source, il n’est pas simple à l’heure actuelle de voir une stratégie à long terme. On peut toutefois penser que cette technologie va continuer à s’ouvrir pour agrandir encore sa communauté et renforcer sa position. De la même manière, le portage d’applications Flex sur des téléphones mobiles dépendra de la future version du Flash Player, dont on dit que c’est son objectif principal.

Références

Voici quelques applications réalisées avec Flex :

  • Le Tour de Flex, application AIR compilant des possibilités de Flex
  • Acrobat.com, un ensemble de services d’Adobe dont notamment les impressionants Buzzword (traitement de texte avancé) et ConnectNow (pour le travail collaboratif)
  • Aviary, un suite d’outil d’édition graphique
  • Le décorateur de Sherwin-Williams, permettant de colorer des pièces d’intérieur ou des extérieurs avec plus d’un millier de couleur. Le rendu est bluffant, et l’on se rend bien compte des possibilités utilisés au niveau du rendu des ombres et des couleurs.
aviary

Liens

Voici quelques liens complémentaires, des sources d’informations à surveiller pour ceux qui s’intéressent à la technologie Flex :

Bilan

En se basant sur le Flash Player, la technologie Flex a su s’imposer pour devenir très utilisée dès lors que l’on parle d’applications RIA. En effet, en s’appuyant sur l’écosystème Flash déjà existant, elle a su se développer rapidement et communiquer efficacement. Flash étant par définition une technologie graphique, il est normal que les rendus proposés soient de qualité supérieure aux interfaces “classiques”. Le virage open source pris par Flex va certainement changer l’évolution de cette technologie qui semble atteindre une certaine maturité.

avr 10
Fiche technologie - Silverlight
icon1 Fabien Deshayes | icon2 RIA | icon4 10 avril 2009 |  icon3Aucun commentaire »
silverlight_logo

Présentation

Silverlight est la technologie riche de Microsoft. Autrefois appelée WPF/E (Windows Presentation Foundation / Everywhere), cette technologie a été renommée Silverlight puis présentée lors de l’événement MIX 07 de Microsoft. La première version disponible fut la 1.0 bêta, lancée en même temps que Silverlight 1.1 alpha. A l’heure actuelle, la version 2 est sortie en octobre 2008 et la version 3 est en préparation (prévue pour courant 2009).
Silverlight est une machine virtuelle ou plugin permettant d’exécuter des applications Silverlight sur différents systèmes d’exploitations (Windows, Mac OS, Linux via le projet Moonlight) à l’intérieur de différents navigateurs (Internet Explorer, Firefox, Safari). Grâce à son moteur de rendu vectoriel, Silverlight souhaite offrir de nouvelles expériences beaucoup plus riches aux utilisateurs. Un raccourci rapide serait de dire que Silverlight est le FlashPlayer de Microsoft. Elle fut en effet proclamée comme telle lors de sa sortie, beaucoup de personnes parlant alors de “Flash-killer”.

Principes et caractéristiques

Comme la plupart des technologies permettant de réaliser des applications riches, Silverlight se découpe en couches.

  • La première concerne la description de l’interface, faite à l’aide d’une syntaxe XML propre à Microsoft, le XAML. L’avantage de cette syntaxe est qu’elle permet de visualiser plus simplement l’agencement des éléments qu’avec un langage impératif. De plus, Microsoft fournit un outil (ExpressionBlend) permettant de visualiser le rendu du XAML à la volée (on parle alors de WYSIWYG (What You See Is What You Get)).
  • La seconde décrit la logique de l’application, son comportement à avoir en fonction des interactions de l’utilisateur. Cette partie est réalisée en utilisant l’un des langages compatibles avec Silverlight, soit du C#, duVisual Basic, du JavaScript, du Python ou du Ruby. Ainsi, n’importe quel développeur connaissant l’un de ces langages pourra aisément développer une application Silverlight.
  • Enfin, la dernière couche concerne la diffusion et le déploiement. Une application Silverlight s’exécute dans un navigateur, via leplugin du même nom. Il faut donc déposer certains fichiers sur un serveur web : un “conteneur” html qui inclura l’application et un fichier .xap qui est une archive compressée contenant les ressources et le contenu de l’application.

Bien que la version 1 de Silverlight ait apporté quelques fonctionnalités intéressantes (lecture de vidéo haute qualité, DeepZoom), la communauté a vite pointé quelques manques qui ont pour la plupart été comblés avec la version 2. Silverlight propose entre autres les fonctionnalités suivantes :

  • un ensemble de contrôles “riches” pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.
  • le “data binding”, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur
  • la possibilité d’accéder au DOM (Document Object Model) de la page html servant de “conteneur” et ainsi d’interagir avec
  • la lecture de médias (vidéo, audio) dans les formats VC1, WMV, WMA, MP3 et des images de types GIF, JPG et PNG
  • la lecture / écriture de fichiers XML
  • la lecture d’un flux ATOM et RSS
  • l’intégration du composant LINQ permettant de requêter des données grâce à une syntaxe proche du SQL et de le transcrire en XML
  • la communication externe avec des appels http, webservice ou la gestion de sockets

Bien évidemment, d’autres fonctionnalités sont disponibles. Pour avoir une vue d’ensemble, vous pouvez consulter le Silverlight 2.0Developer Reference.

silverlight_2_poster

Outils

Le développement d’une application Silverlight se réalise notamment autour de plusieurs outils. Bien qu’il existe de nombreux environnements pour développer en .NET, la solutionVisual Studio est la plus à même de convenir aux développeurs Silverlight. Il suffit pour ce faire d’installer une extension gratuite, les Microsoft Silverlight Tools. La suite Visual Studio est un IDE très répandu parmi les développeurs de très bonne qualité, ce qui ne dépayse pas le développeur .NET.
Il faut toutefois savoir que Visual Studio permet de développer le code de “logique applicative” ainsi que d’écrire du XAML, mais il existe un outil bien plus spécifique pour ce dernier : Expression Blend.
Expression est une suite logicielle de création graphique et numérique. Le logiciel Expression Blend va permettre de créer des interfaces riches (donc du XAML) très facilement avec son système WYSIWYG. Les éléments graphiques sont directement positionnés sur l’application et le XAML est généré, bien qu’il soit possible de l’éditer. Attention toutefois, Expression Blend ne permet pas d’éditer le code de “logique applicative”.
Pour pouvoir développer entièrement une application Silverlight, on va alors avoir besoin de deux outils : Visual Studio et Expression Blend.

Points forts

Bien qu’étant une technologie récente, Silverlight a tout de même de nombreux points forts. Microsoft a su produire un plugin de qualité qui, sans pour autant rattraper le retard sur le Flash Player, a su se faire remarquer dans le domaine des RIA, et ce pour plusieurs raisons :

  • tout d’abord en axant sa communication en partie autour de la qualité vidéo, offrant son propre service de streaming et une très belle qualité d’image. A l’heure où la vidéo sur Internet occupe une place prépondérante, Microsoft a donc pu s’en servir comme fer de lance de sa technologie.
  • des composants intéressants et novateurs, comme le DeepZoom qui permet de visualiser des images et des documents de grande taille en offrant un agrandissement très fluide.
  • le support de différents langages de programmation, permettant ainsi de toucher plus de développeurs ainsi qu’une plus grande communauté.
  • un environnement de développement éprouvé et apprécié : en effet, Visual Studio est un outil bien connu et très utilisé.

Points faibles

Toutefois, Silverlight reste une technologie encore jeune. Pour afficher les applications Silverlight, un plugin est nécessaire et son déploiement sur les navigateurs prendra forcément de nombreuses années. Il existe toutefois un site qui donne des chiffres en se basant sur les statistiques de visites de sitesweb par des utilisateurs lambda. On s’aperçoit que Silverlight est installé sur plus de 16% des ordinateurs, ce qui représente un chiffre relativement faible comparé au taux d’installation du FlashPlayer, mais impressionnant en sachant que celui-ci n’est présent que depuis un an et demi. Microsoft annonçait en octobre 2008 30% de pénétration aux USA et jusqu’à 50% dans certains pays.
Bien que l’utilisation de Visual Studio soit un plus dans le développement d’une application Silverlight, le fait d’avoir besoin de deux logiciels pour travailler est relativement gênant : il n’existe pas de réel outil complet pour créer des applications Silverlight. Peut-être dans un futur proche ?
Enfin, les sources et les exemples sur le net reste assez peu nombreux. La technologie reste jeune et ne bénéficie pas, si on la compare à la technologieFlex, d’un passé de 10 ans (issu de Flash). Les documentations et autres exemples sont donc plus rares, tout comme les compétences.

Le futur

Silverlight prépare sa version 3 qui sortira courant 2009, et l’on sait d’ores et déjà qu’elle se dirige vers des fonctionnalités déjà présente dans le Flash Player, notamment :

  • la prise en charge de la norme h264 pour des vidéos de haute qualité
  • le support de la 3D en utilisant les ressources de la carte graphique
  • une vue graphique (WYSIWYG) entièrement intégrée dans l’outil de développement (Visual Studio)

Mais également une amélioration du data-binding et de nouveaux contrôles.

Le futur de Silverlight se dirige également vers les mobiles ! Ce marché très en vue actuellement se verra doté d’une version spécifique (appelée Silverlight Mobile), basée sur Silverlight 2 et qui sera disponible surWindows Mobile vers la fin 2009.

Références

Voici quelques applications réalisées avec Silverlight :

silverlight_france_televisions


On peut retrouver de nombreuses démonstrations sur le showcase du site Silverlight

Liens

Voici quelques liens complémentaires, des sources d’informations à surveiller pour ceux qui s’intéressent à la technologie Silverlight :

Bilan

En un peu plus de 2 ans d’existence, Silverlight a su devenir l’une des technologies riches principales du marché, porté par les efforts de Microsoft et de ses nombreux partenaires pour la mettre en avant et la valoriser. Malgré que sa jeunesse la desserve sur certains points comme parfois le manque d’informations ou le taux de pénétration encore “faible”, la technologie Silverlight offre de belle capacités techniques en se positionnant entre autres sur le domaine de la vidéo. En utilisant au mieux ses outils existants (Visual Studio) et en misant sur la pluralité des langages, elle est a même de toucher le plus grand nombre de développeurs possibles, et donc d’utilisateurs.
On suivra donc bien évidemment la troisième version ainsi que le portage sur mobile prévus en 2009.

« Articles précédents