# Saturday, March 21, 2009
La nouvelle version de Silverlight 3 vient d'être dévoilée en version beta depuis quelques jours. Le site www.silverlight.net centralise toutes les infos et outils de développement.

Découvrir Silverlight 3 : l'ebook !

Laurence Moroney (son blog ici) a publié il y a quelques mois un livre sur Silverlight 2 en anglais, traduit en français chez Microsoft Press. Un bon bouquin pour découvrir Silverlight.

Découvrir Silverlight 2, de Laurence Moroney

Incroyable, une suite de ce livre est déjà disponible sous la forme d'un ebook en PDF pour Silverlight 3 : First look : Microsoft Silverlight 3.

Sommaire de "First look : Microsoft Silverlight 3" :
  • 3D Effects with Perspective Transforms
  • Animation Easing
  • H264 Video Support
  • Pixel Shaders
  • Out-of-Browser Applications
  • Save File Dialog Box
  • XAML Element Databinding

Les applications Silverlight arrivent sur le desktop (pour remplacer WPF ?)

La possibilité d'installer des applications Silverlight sur le PC, et de les exécuter comme des applications indépendantes est une petite révolution dans le monde du développement d'applications desktop. Silverlight se met à marcher sur les plates-bandes des applications desktop C#/.NET classiques (Winforms ou WPF)... et peut-être même des applications MFC/C++ natives.

Evidemment, Winforms, WPF, et C++ natif ont leur spécificités et peuvent être des environnements irremplaçables dans certains cas.

Mais pour le développement d'une nouvelle application, ou la migration d'une application existante, Silverlight peut être envisagé comme une alternative crédible à Winforms, WPF et même C++. Surtout si l'application doit être disponible à la fois en ligne et hors ligne.

Pour caricaturer, on pourrait dire qu'une application Winforms est déjà démodée, qu'une application WPF ne sera pas forcément très rapide et nécessitera de grosses configurations matérielles pour fonctionner, et que l'application C++ aura beaucoup de mal à fonctionner via Internet. Mais Silverlight 3 aura des limitations dans ses fonctionnalités qui pourront être rédhibitoires.

Winforms, WPF, C++ natif, Silverlight : 4 technos de développement d'applications. Sans parler d'Adobe Flex !

D'ailleurs il se murmure que WPF pourrait être une victime collatérale de la guerre que se livrent Microsoft avec Silverlight, et Adobe avec Air : WPF est un Silverlight en beaucoup plus lourd, et son seul avantage est qu'il a un runtime plus puissant (voir l'article : Silverlight 3 might kill WPF par exemple). Tim Sneath a écrit un article très intéressant sur les différences entre les runtime Silverlight et .NET classique. En le lisant je me dis que ma foi, Silverlight a l'air bien fichu de l'intérieur.

Tags  |  | 
 21 March 2009, 00:15
# Sunday, August 31, 2008
Il y a deux semaines j'avais râlé parce que le code source de .NET n'était plus disponible avec VS 2008 SP1. Eh bien c'est désormais en partie corrigé. Une partie du code source de .NET 3.5 SP1 vient d'être rendu disponible en cette fin août par Microsoft. Cela veut dire que désormais l'on peut deboguer et tracer dans le Framework .NET 3.5 SP1 avec VS 2008 SP1. C'est annoncé sur le nouveau blog Microsoft du Source Code Center.

Par contre, la procédure indiquée sur ce blog est valable pour VS 2008, et n'a pas été mise à jour pour VS2008 SP1 ! ;) Cela viendra sans doute bientôt.

Dans VS 2008 SP1, il y trois options à cocher pour récupérer le code source de .NET, contre deux dans VS 2008 :


Trois options pour obtenir le code source de .NET 3.5 SP1

Si ce n'est pas la première fois que vous utilisez cette fonctionnalité, vous devez vider le dossier cache dans lequel les sources sont stockés pour provoquer un nouveau téléchargement des sources et des symboles à jour :


Le dossier cache où sont stockés les sources de .NET

La plupart du code source n'est pas encore disponible. Le code source de WPF, notamment, n'est pas encore mis à disposition. Cela viendra bientôt, comme annoncé sur le blog Microsoft du Source Code Center.

Mais pourquoi est-ce que le code de WPF 3.5 SP1 n'est-il toujours pas disponible ? Il nécessite tant de correction que cela avant de sortir de chez Microsoft ? Il y a peut-être des commentaires dans le code à supprimer, du style :

    // with this workaround, we can send Adobe Air to hell

Mystère... ! ;)

Tags  | 
 31 August 2008, 16:35
# Wednesday, August 27, 2008

De nombreux Datagrid sont disponibles pour WPF

Microsoft vient de sortir une version "béta" (CTP) de son contrôle Datagrid utilisable avec WPF 3.5 SP1. Ce contrôle est disponible avec son code source sur www.codeplex.com/wpf, et Jaime Rodriguez en a posté un exemple d'utilisation.

Pourtant, ce contrôle Datagrid n'est pas destiné à faire concurrence aux Datagrid WPF édités par des éditeurs de composants. Il devrait rester assez simple : ce n'est pas de l'intérêt de Microsoft de tuer les éditeurs de composants ! Par contre le code source du Datagrid Microsoft est disponible gratuitement, alors qu'il est relativement cher ou carrément non disponible chez les éditeurs tiers.

Il existe plusieurs contrôles Datagrid chez différents éditeurs :

Michael Sync a réalisé un banc d'essai des Data Grid de ces éditeurs.

J'ai été surpris de constater qu'Infragistics n'était pas vraiment à la hauteur dans ce domaine précis, alors que ses composants sont renommés. Manque de maturité du produit sans doute.

Xceed Data grid control
Une vue du Data Grid de Xceed

Xceed a été le premier a sortir un Data Grid pour WPF. Cette expérience lui vaut d'être sans doute le Data grid le plus utilisé par la communauté des développeurs WPF. La version 3.0 de ce contrôle vient tout juste de sortir, avec des visualisations en 3D. Et d'après Michael Sync et les commentaires de l'article, Xceed est sans doute le meilleur Data Grid actuellement, avec celui de Telerik. Cerise sur le gâteau, Xceed propose une version Express gratuite.

Trop lents !

Mais gros, gros problème : la performance. Ces contrôles Datagrid pour WPF sont très jolis, avec des skins, des effets 3D, mais... qu'est-ce qu'ils sont lents ! A un point qu'ils peuvent être considérés comme inutilisables... Sur les forums des éditeurs, des clients demandent conseil à propos de la lenteur d'affichage, et il leur est répondu que l'amélioration des performances est un sujet prioritaire.

Le Datagrid de Microsoft est encore plus lent que celui de Xceed, selon mes tests personnels très subjectifs. Le scroll est catastrophique, et l'impression de lenteur générale est assez pénible (sur un Core 2 Duo 2,4 Ghz avec 2 Go de RAM). Ces pauvres performances expliquent sans doute pourquoi le Datagrid n'a pas fait partie de la version 3.5 SP1 de .NET.

Que faire ?

Qu'en conclure ? Ne pas utiliser de Datagrid sous WPF, tout simplement ! ;)

Peut-être que le concept de Datagrid est très lié et très adapté à .NET 2 et Windows Form. Datagrid = Winform + .NET 2.0 ? Il existe de très jolis DataGrids maintenant pour Windows Form.

Et alors comment présenter des données sous WPF ? Le Datagrid n'est sans doute pas adapté. Sous WPF, il faut chercher d'autres manières de présenter les données. De nouvelles "expériences utilisateur" sont à créer. Avis aux amateurs. Billy Hollins présente une telle application WPF en video. Ci dessous, deux écrans représentant un design maître-détail :


La liste de clients : une liste non éditable


Le détail d'un client

Cette approche est très représentative de la manière de concevoir une application WPF : il faut bien connaître les fonctionnalités et les possibilités de la plate-forme, puis se "laisser porter" par ces possibilités pour concevoir une interface utilisateur adaptée. Tout un programme !

 

Tags
 27 August 2008, 00:22
# Monday, August 18, 2008

Microsoft a profité de ce que j'avais le dos tourné (voir photo ci-dessous), pour sortir une mise à jour SP1 pour Visual Studio 2008 et aussi pour .NET 3.5. A peine rentré des Alpes Suisse, je me jette évidemment sur MSDN pour télécharger la bête.

Le lac Thunsee, dans les Alpes Suisses, près de Bern.</
Le lac Thunsee, dans les Alpes Suisses, près de Bern.

Le SP1 de Visual Studio 2008 est dispo pour les versions gratuites (express) et professionnelles de Visual Studio. En anglais et en français. Pour télécharger le SP1, c'est ici pour les versions pro ou ici pour les versions express. Après avoir accepté le contrat-de-licence-qu'on-ne-lit-jamais, le programme d'installation se débrouille tout seul. Environ une heure après (quand même), me voici avec la version RTM du SP1 de .NET 3.5 et de Visual Studio 2008 :

A propos de Visual Studio 2008 SP1

Il y a déjà eu pas mal d'articles sur les nouvelles fonctionnalités apportées par ce SP1 en français sur le blog de Mitsu ou en anglais : la liste entière des modifications est dans la base de connaissance de Microsoft : http://support.microsoft.com/kb/945140. Plein de trucs sur ASP.NET, WPF, Linq, etc. Aussi, les applications WPF se lancent plus rapidement, c'est clair.

Le nombre de fonctionnalités ajoutées est impressionnant. Surtout pour .NET 3.5 SP1, il s'agit plus d'une nouvelle version que d'un Service Pack ! .NET 3.5 SP1 contient la version 3 de WPF, après WPF 1 sorti avec Vista et .NET 3.0, WPF 2 sorti avec Visual Studio 2008 et .NET 3.5.

Le SP1 pour Visual C++

Le SP1 de Visual Studio 2008 contient les nouveautés déjà présentées dans VC++ 2008 Feature Pack (la nouvelle version des MFC, et C++ TR1). Mais comme le VC++ 2008 Feature Pack est sorti il y a quelques mois déjà, le SP1 de Visual Studio y apporte de nombreux correctifs dans le compilateur C++ (bugs corrigés), dans les extensions TR1, ainsi que dans les MFC (voir http://blogs.msdn.com/vcblog)

Si vous avez déjà installé VC++ 2008 Feature Pack, il est donc conseillé d'installer en plus Visual Studio SP1, car ce dernier contient une mise à jour du Feature Pack.

Autrement dit, le Feature Pack est à mettre à la poubelle, il est remplacé par le SP1 de Visual Studio.

Un Datagrid dans WPF 3.5 SP1 !

Il manquait un contrôle datagrid dans WPF. Plusieurs éditeurs indépendants ont fourni des contrôles Datagrid, payants ou gratuits (Xceed ou Infragistics). Ce grand manque est désormais comblé... d'une manière originale. Microsoft propose un Toolkit WPF en téléchargement sur le site www.codeplex.com/wpf. Ce toolkit contient entre autres, un datagrid, et nécessite WPF 3.5 SP1 pour fonctionner. Le code source est même disponible !

Comme Microsoft aime bien les fournisseurs de composants indépendants, il ne va pas trop leur faire concurrence. Le Data Grid de WPF ne sera jamais aussi puissant que le Data grid payant d'Infragistics par exemple. Même si la version actuelle est encore en CTP, il ne faut pas s'attendre à voir ce contrôle devenir le meilleur des datagrid du monde ! Mais il peut rendre des services...

Le blog de Jaime Rodriguez contient une série d'articles sur l'utilisation de ce nouveau contrôle Data Grid pour WPF :


Un exemple d'utilisation par Jaime Rodriguez du nouveau contrôle Data Grid de WPF

Ce Toolkit WPF contient également un outil pour pouvoir construire plus facilement des Pixel Shaders. Il y en a qui vont s'amuser comme des petits fous ! Toutes les infos sur ce nouvel outil sur le blog de Greg Schechter, le "spécialiste" des Pixels Shaders en WPF.

Le code source du framework .NET 3.5 SP1 pas encore disponible

Depuis quelques mois, il était possible avec Visual Studio 2008 d'utiliser le code source du framework .NET 3.5. en mode Debug. Visual Studio 2008 sait télécharger le code source d'une partie de .NET pour le mettre à disposition de tout programmeur .NET, comme expliqué par exemple par ClaueR.

Les nouvelles options de téléchargement du code du framework .NET
Les nouvelles options de téléchargement du code du framework .NET

Avec Visual Studio 2008 SP1, les options de téléchargement du code source du framework .NET sont mieux pensées, mais le problème est que le code source de .NET Framework 3.5 SP1 n'est pas encore disponible ! Des fichiers PDB sont présents, mais ils ne contiennent pas (encore ?) les informations sur le code source.

Alors, si vous avez absolument besoin d'utiliser le code source du framework .NET 3.5 en mode debug, n'installez pas encore le SP1 ! Attendons que Microsoft mette en téléchargement le code source de la dernière version de .NET.

Nouveautés du mode debug (managed)

En mode pas à pas, le menu contextuel (clic droit de la souris) contient des entrées supplémentaires. Le très pratique "Step into Specific" est disponible sur un appel de fonction, et permet de spécifier comment tracer à l'intérieur de la dite fonction.


Nouveau menu contextuel en mode debug

Il y a beaucoup d'autres nouveautés dans ce SP1, à télécharger d'urgence donc. Sauf si l'on a besoin d'utiliser le code source du framework .NET pour l'instant.

Tags  |  |  | 
 18 August 2008, 17:47
# Wednesday, June 11, 2008

Impressions

Après plus de deux semaines d'utilisation des SP1 de Visual Studio 2008 et de .NET 3.5, je n'ai rencontré aucun problème. Pourtant j'ai fait une utilisation intensive de C#/WPF et aussi de C++ (natif).

Le truc qui ne fonctionne plus, c'est le debogage dans le code source de .NET. Forcément : le code source de .NET 3.5 SP1 n'est pas encore disponible. Il faudra sans doute attendre au moins la sortie de la version RTM de .NET 3.5 SP1.

Je n'ai pas pu utiliser Silverlight depuis deux semaines, car les extensions Silverlight 2 beta 1 pour Visual Studio étaient incompatibles avec VS2008 SP1. Mais ceci était indiqué et documenté. La beta 2 de Silverlight 2 qui est sortie le 6 juin fonctionne très bien avec Visual Studio 2008 SP1. Plus d'incompatibilité entre Silverlight et Visual Studio ! Je vais pouvoir continuer à m'amuser avec Silverlight avec mon fils.

.NET 3.5 SP1 était censé accélérer le chargement des applications WPF. Je n'ai pas spécialement remarqué de différence, disons que ce n'est pas flagrant. Mais ceci n'est qu'une remarque subjective. Ou alors je ne suis pas encore satisfait des performances de WPF. Allez, M. Microsoft, encore un effort !

J'aurais voulu tester les shaders en WPF/SP1, mais pas eu le temps. Faire des filtres graphiques qui utilisent la carte 3D, et utiliser ces filtres en XAML est une des raisons pour lesquelles WPF est prometteur, malgré ses défauts (de jeunesse). Une très bonne série d'articles ici sur la réalisation d'effets graphiques en utilisant l'accélération matérielle.

Desinstallation

La désinstallation de VS 2008 SP1 et .NET 3.5 SP1 est laborieuse, mais on y arrive ! Pour revenir à VS 2008 standard, il faut successivement désinstaller tout ça (la liste est dans le fichier readme.htm de Visual Studio 2008 SP1) :

Uninstall the following list of updates, in the order shown:

  1. Microsoft Visual Studio Team System 2008 Team Suite - Service Pack 1 (KB945140)
  2. Microsoft Visual Studio Team System 2008 Team Suite - Service Pack 1 (KB948560)
  3. Microsoft Visual Studio Team System 2008 Team Suite - Service Pack 1 (KB947888)
  4. Microsoft Visual Studio Team System 2008 Team Suite - Service Pack 1 (KB948484)
  5. Microsoft Visual Studio 2008 Remote Debugger - Service Pack 1 (KB945140)
  6. KB945140 under Visual Studio .NET Prerequisites
  7. Update for WebDesigner 2007 (KB945140)
  8. Windows SDK for Visual Studio 2008 SP1 KB946729
  9. Windows SDK for Visual Studio 2008 KB946733
  10. Microsoft SQL Server Compact 3.5 SP1 Design Tools English
  11. Microsoft SQL Server Compact 3.5 SP1 English
  12. Microsoft SQL Server Database Publishing Wizard
  13. Visual Studio Tools for the Office system 3.0 Runtime Service Pack 1 Language Pack (KB949258)
  14. Visual Studio Tools for the Office system 3.0 Runtime Service Pack 1 (KB949258)
  15. Visual C++ 2008 IA64 Runtime - (v9.0.304xx)
  16. Visual C++ 2008 x64 Runtime - (v9.0.304xx)
  17. Visual C++ 2008 x86 Runtime - (v9.0.304xx)

Après avoir désinstallé tous ces éléments, il ne reste presque plus rien de Visual Studio ;). Il faut réinstaller Visual Studio en utilisant l'option "réparer l'installation". Mais ça marche.

Pour désinstaller .NET 3.5 SP1 beta, c'est plus simple. Il suffit de désinstaller "Microsoft .NET Framework 3.5 SP1 beta". Facile. Le problème c'est qu'après il n'y a plus de framework .NET 3.5. Il faut en réinstaller une version normale.

 

 11 June 2008, 01:52
# Wednesday, May 28, 2008

1. La première étape de l'apprentissage de WPF, selon Josh Smith (un gourou de WPF), est la suivante : retirez votre cerveau de votre crâne, faites le tourner de 180°, puis remettez-le en place (voir Figure 1).

 

Avant d'apprendre WPF, retournez votre cerveau
Figure 1 : Prérequis avant d'apprendre WPF

Il est vrai que pour nous qui connaissons la programmation d'applications clientes "classiques" (type Win32, MFC, ou même Winforms), l'apprentissage de WPF provoque divers types d'émotions qui vont de l'étonnement à l'incompréhension, en passant par l'admiration ou la colère. La programmation WPF est... hmmm... comment dire... différente.

 


2. La deuxième étape est d'acheter un livre (celui que je préfère est celui d'Adam Nathan, aucun livre correct en français encore), de consulter la documentation de WPF sur MSDN, et de regarder des articles, tutoriels, vidéos sur CodeProject, sur des blogs, ou sur www.windowsclient.net. C'est un long processus : WPF est un environnement de programmation tout neuf, et tout est à découvrir ! Il y a tellement de nouveaux concepts à apprendre.

Comptez plusieurs semaines pour cette deuxième étape (pour la première étape, le délai peut être infini).

A l'issue de cette deuxième étape, vous savez comment faire des petits programmes qui mettent en oeuvre deux ou trois fonctionnalités de WPF. Vous savez créer une fenêtre avec un bouton 3D contenant une vidéo. Vous savez comment récupérer des images sur un site Web, et en afficher les miniatures. Vous pouvez même vous mettre rapidement à Silverlight, et porter votre petit bout de code sur le Web. Idéal pour épater vos collègues. Ajoutez en plus : "bah, j'ai fait ça en une soirée".

Mais mais mais... pas question encore de créer une application. A l'issue de cette deuxième étape, les fonctionnalités de WPF, c'est comme les débris de verre cassés chez un vitrier. Un par un il sont clairs, mais tous ensemble, ils sont opaques.

 


3. La troisième étape - délicate - est de tester chaque fonctionnalité de WPF dont on peut avoir besoin, dans une étude de faisabilité. Pour vérifier si :

  • elle fonctionne correctement, comme indiqué dans la documentation
  • elle est rapide (ou pas trop lente)

Il existe malheureusement encore des domaines mystérieux et inconnus de WPF. Ou d'autres lieux où il vaut mieux ne pas s'aventurer si l'on veut conserver des performances correctes. Tout ceci n'est écrit nulle part, et si vous ne le vérifiez pas, vous ne le saurez pas.

Oui, WPF est une technologie très jeune et très prometteuse, mais elle a les défauts (bugs) de sa jeunesse.

Un exemple parmi d'autres, les bitmapeffects sont parfois très lents et, par conséquent, souvent inutilisables. Mais dans le SP1 de .NET 3.5 (qui vient de sortir en béta), ces bitmapeffects ont été totalement réécrits pour profiter de l'accélération matérielle de la carte graphique. Ils sont devenus très rapides ! Surprise surprise...

 


4. La dernière étape est d'apprendre comment créer des application WPF. Imaginez que votre boss/client vous dise : "bon, ce nouveau projet, là, finalement on va le faire en WPF plutôt qu'en C++/MFC (ou Winforms, ou autre)".

Les MFC proposent nativement une architecture d'application document-vue. Elle a le mérite d'exister et de structurer le développement d'application. Avec WPF, s'élabore une structure similaire, l'architecture modèle-vue-machin. Machin ?!

(

Le premier livre sur les design patternsPetite parenthèse sur les design patterns, au cas où. Les design patterns (ou shemas ou patrons de conception en français... ah quelle drôle de langue que le français) ont été décris en 1995 dans un livre culte : "Design Patterns - elements of reusable software". Les design patterns sont d'excellents moyens de formaliser des problèmes classiques de conception de logiciels, et d'apporter une solution. Pourquoi réinventer la roue à chaque fois, alors que d'autres architectes logiciels, d'autres programmeurs, se sont déjà cassés les dents neurones sur des problèmes de conception de logiciel ?

Tout ça pour dire que, en 1995, à l'heure de gloire des MFC, on se passait de ces shemas. Mais maintenant il est impensable qu'un programmeurs, codeur, ou architecte logiciel ne se jette pas la tête la première dans ces patterns, avant de commencer quelque logiciel que ce soit.

Un excellent livre sur les design patterns, malheureusement épuisé en français

)

En 2005-2006, avant même la sortie de WPF, deux gars de chez Microsoft, John Gossman et Dan Crevier, se sont posé la question de savoir comment architecturer une application WPF. Ils ont inventé le pattern Model-View-ViewModel, qui est décrit sur le blog de John Gossman ici puis , ainsi que sur le blog de Dan Crevier. Plus récemment, Josh Smith a écrit une très bonne synthèse sur codeproject. Avec un brin de malice et de réalisme, le Dr WPF appelle ce pattern Model-View-Poo.

En gros, le pattern Model-View-ViewModel (Modèle-Vue-Machin) profite de la possibilité offerte par WPF de séparer facilement le code et les données d'une part, et l'interface utilisateur et l'affichage des données d'autre part. Ce pattern découpe une application en trois parties :

  • le modèle (Model) : les objets métiers, le code, les données, la logique et les algorithmes du programme. Le modèle est totalement indépendant de l'interface utilisateur, et de sa présentation à l'utilisateur.
  • la vue (View) : la présentation à l'utilisateur des données et des résultats des traitements. C'est l'interface utilisateur, et elle contient des fenêtres, des contrôles, ... Elle est complètement séparée du modèle.
  • le machin (ViewModel, ou Poo) : permet aux deux parties ci-dessus de communiquer. Un pont entre les deux mondes que sont le modèle et la vue. Le machin demande par exemple la mise à jour de l'affichage. Ou bien commande le démarrage d'un nouveau calcul, ou la mise à jour de données.

Bien que le machin (poo) qui relie le modèle et la vue ne soit pas toujours parfaitement décrit ni organisé, le but du shema Modèle-Vue-Truc est déviter que vos applications WPF ne ressemblent à ceci :

Code spaghetti

Pour aller au delà du simple shema modèle-vue-machin, Microsoft met au point une méthodologie de développement d'application WPF, appelée Prism. Une présentation du concept est effectuée par un membre de l'équipe de Prism. Des conseils, stratégies, design-patterns, exemples et guides font partie de ce kit de survie à l'usage des développeurs d'applications WPF. Ou plutôt des architectes WPF. Ces outils sont destinés à faciliter le développement d'applications WPF conséquentes. Prism n'est pas terminé, mais des préversions sont déjà disponibles sur codeplex. Il faut que je regarde ça de plus près.

Prism, méthodologie de développement WPF
Prism : méthodologie de développement WPF


On l'aura compris, la connaissance technique de WPF, de ses contrôles, styles, objets, etc, n'est que la première des étapes de l'apprentissage de WPF. Cette étape est bien décrite sur internet avec des tutoriels, des articles, des webcasts, etc. Il existe aussi de nombreux livres techniques (essentiellement en anglais).

Par contre, cela ne suffit pas pour créer et architecturer de vraies applications. Les shemas, les design patterns, les "guides de bonnes pratiques" sur la manière de combiner les éléments de WPF et construire des logiciels commencent à peine à pointer le bout de leur nez. Il reste encore beaucoup à faire dans ce domaine. La jeunesse de WPF (un an !) explique sans doute le manque de maturité dans ce domaine. A titre de comparaison, les MFC proposaient il y a 15 ans (!) une implémentation automatique du shema Document-Vue, avec un assistant qui générait le squelette de l'application selon ce design pattern. Ce shéma document-vue est un ancêtre du Modèle-Vue-Machin de WPF. Mais ce dernier est encore bien flou...

Bref, développer une application WPF, c'est un peu comme partir à la conquête du Far West il y a 150 ans. C'est une aventure.

 

Mise à jour : John Gossman (qui a géré le développement de Expression Blend en WPF) vient d'écrire un article intéressant sur le sujet : PresentationModel and WPF, dans lequel il écrit : "WPF is still so new that we still don't know all the best practices and techniques..."

Tags  | 
 28 May 2008, 23:42
# Saturday, May 17, 2008

L'article de Scott Guthrie présente une longue liste de nouveautés apportées par ces deux SP1. Mais il ne dit pas tout, la preuve :

1. D'abord l'icône de Visual Studio a changé : il y a un petit 9 dessus maintenant !

2. Deuxième constatation : tous les paramètres de l'environnement sont réinitialisés ! Configuration, dossiers "Include" ou "Lib" du compilateur C++, raccourcis clavier, ... il faut tout reparamétrer ! Je ne sais pas si j'ai fait une erreur ou si c'est un bug de la version beta...

3. Le designer WPF (ex Cider) a bien changé : il dispose maintenant d'un éditeur d'événement. Il suffit de sélectionner un objet WPF, en mode design ou en XAML, et la liste des événements disponibles pour cet objet s'affiche. On peut trier les événements par ordre alphabétique, ou bien par thème. Cela manquait !

Une autre amélioration très pratique est la possibilité d'effectuer un glisser-déplacer depuis la barre d'outils des contrôles WPF, vers une fenêtre WPF en mode design, aussi bien que vers le code XAML.

A suivre...

Tags  | 
 17 May 2008, 00:31
# Friday, May 16, 2008

Trop tentant d'installer ces dernières versions de VS 2008 et de .NET 3.5, je n'ai pas pu résister. Ce qui est dit de ces mises à jour de VS2008 et .NET 3.5 sur les blogs de Scott Guthrie et Tim Sneath est alléchant.

Attention ! N'installez pas ces Service Packs si vous développez pour Silverlight 2. Le SP1 de .NET Framework 3.5 est incompatible avec les outils de programmation de Silverlight 2 beta. Il faut attendre quelques semaines pour qu'une nouvelle version de l'extension "VS 2008 Tools for Silverlight 2" compatible avec .NET 3.5 SP1 soit disponible.

Ce sont des versions béta. Et un certain nombre de précautions doivent être prises avant d'intaller la bête.

1. Sous Vista, il faut installer Vista SP1 au préalable.

2. Si vous avez installé les extensions "VS 2008 Tools for Silverlight 2 Beta1" pour faire desprojets Silverlight avec VS 2008, il faut le désinstaller. .NET 3.5 SP1 ou Silverlight 2, il faut choisir !!

Vous pouvez aussi désinstaller "Silverlight 2.0 SDK Beta1", il ne fonctionnera plus avec VS2008 SP1.

Par contre, gardez évidemment le runtime de Silverlight.

3. Il faut désinstaller une ou deux mises à jour de Visual Studio 2008. Pour cela, cliquer sur "Afficher les mises à jour installées", puis désinstallez les mise à jour de Visual Studio KB949325, et KB944899.

Si vous ne désinstallez pas ces mises à jour, le programme d'installation des Service Packs ne fonctionnera pas.

4. Les versions de Expression Blend antérieures au 9 mai 2008 ne fonctionneront plus avec .NET 3.5 SP1. Poubelle ! A désinstaller ! Même la dernière version 2.5. Heureusement, il existe déjà une mise à jour de Blend 2.5 : elle porte le même nom, "Expression Blend 2.5 March 2008 Preview", mais son numéro de version est 2.1.1113.

5. Installez Visual Studio 2008 Service Pack 1 Beta

6. Installez .NET Framework 3.5 Service Pack 1 Beta

7. Installez Expression Blend 2.5 March 2008 Preview Refresh v2.1.1113

8. Et voilà !

 

 16 May 2008, 16:40
# Tuesday, February 19, 2008

Il y a un peu plus d'un mois je râlais contre WPF, parce qu'il est trop lourd, trop gros, trop lent. Parce qu'il fallait trois jours pour lancer une application WPF (OK j'exagère un peu). J'allais jusqu'à dire que si bien peu d'applications WPF sont disponibles, c'est principalement à cause de ses mauvaises performances. Même si ce n'est pas la seule raison : WPF et XAML représentent une nouvelle façon de programmer qu'il faut un moment à assimiler.

J'étais prêt à jeter à la poubelle mon bouquin Windows Presentation Foundation Unleashed, persuadé que WPF signifie secrètement Windows Pour les Fénéants.

Alleluia !

Scott Guthrie (qui vient d'être promu Corporate Vice President de Microsoft, en charge de .NET, CLR, WPF, Silverlight, ASP.NET, IIS ...) annonce aujourd'hui une amélioration des performances de .NET, et particulièrement de WPF, et une nouvelle version importante de WPF pour cet été. Peut-être une synergie avec Silverlight 2.0 ?

WPF était une nouveauté de .NET 3.0, et quelques améliorations ont été apportées à WPF avec la sortie de .NET 3.5. Cet été, une nouvelle version de WPF sera disponible.

Cette nouvelle version proposera une installation du framework .NET optimisée, un chargement des applications .NET plus rapide, un affichage du texte et des vidéos plus rapide en WPF, etc. Tout cela sans avoir à modifier les applications existantes. Outre des performances améliorées, WPF 3.5 comportera de nouveaux contrôles qui manquent cruellement : un calendrier (enfin !), un Ribbon (comme Office 2007), et un DataGrid. Visual Studio 2008 disposera aussi d'une meilleure intégration de WPF.


Le Datagrid de xceed.com. Bientôt dans WPF ?

Microsoft est - enfin ! - concerné par la performance des applications réalisées avec Visual Studio : de nouvelles MFC, une version optimisée de WPF... Mieux vaut tard que jamais ! ;)

J'en conclus que le moment est venu de se mettre sérieusement à XAML. Oui, oui, même pour toi, programmeur C++/MFC. L'interface utilisateur de ton programme risque d'être en WPF l'an prochain. Même si tu devras encore gérer des DLL en C++ pour quelques années encore.

Nous en saurons plus dans deux semaines : Rob Relyea, qui a réalisé une excellente présentation de WPF pour les développeurs à la conférence MIX l'an dernier, décrira le futur de WPF dans une session du MIX 08.

Tags  | 
 19 February 2008, 22:34
# Monday, January 28, 2008

Bien sûr vous connaissez Codeproject.com, la référence du partage de code et d'expérience de programmation depuis des années. Microsoft vient également d'ouvrir un site communautaire de partage de code. Proposez vos articles et bouts de codes, profitez de l'expérience de vos pairs sur code.msdn.com, et faites part de vos commentaires. Bref, le site MSDN version web 2.0.

Pour l'instant il n'y a pas énormément d'articles, mais je suis sûr que très bientôt, ce site regorgera de code C++/MFC !

Il existe d'autres communautés Microsoft (en anglais) dédiées au développement, par type de plateforme. Si vous, programmeur (C++), voulez découvrir ou approfondir un sujet sur .NET, c'est ici :

Il y a aussi des communautés comme Channel8, Channel9 et Channel10, où l'on trouve un peu de tout : de la dernière interview vidéo d'un gourou de chez Microsoft, à un article du genre "Mais pourquoi utilise-t'on encore C++ avec des pointeurs qui pointent n'importe où, alors que C# est un merveilleux langage ?"

Hum... où est le C++ natif dans tout ces sites Microsoft ??

Tags  | 
 28 January 2008, 23:00
# Saturday, January 12, 2008

Pourquoi Vista est il plus lent que XP ?

Devil Mountain Software a fait des tests pour comparer les deux versions de Windows, avec et sans Service Pack, selon Yahoo News. XP SP3 est toujours plus rapide que Vista SP1, jusqu'à deux fois plus rapide dans certains cas. Et Windows XP SP3 serait 10% plus rapide que XP SP2. Par contre, Vista SP1 ne serait pas vraiment plus rapide que Vista "normal".

"Vivement le SP3" direz-vous, si vous utilisez encore Windows XP. Eh bien vous l'avez déjà, ce SP3 ! Enfin, vous l'avez quasiment si vous utilisez les mises à jour de Windows Update. Car un Service Pack n'est rien d'autre que la compilation de tous les correctifs déjà parus.

Dans tous les cas Vista est plus lent que XP ! Eh bien c'est tout à fait normal. Les nouvelles versions des logiciels (y compris les systèmes d'exploitation) sont généralement plus lents que leurs prédécesseurs, car ils apportent leur lot de nouvelles fonctionnalités, gourmandes en ressources. Souvenez-vous de Visual C++ 6.0 qui compilait un programme à la vitesse de la lumière; Visual Studio 2008 est beaucoup plus lent. C'est ainsi que de nouveaux PC plus puissants sont vendus, qui font vendre de nouveaux logiciels, et réciproquement. Cela fait quelques dizaines d'années que ce serpent qui se mord la queue me permet (entre autres) de manger. Et sans doute vous aussi, avouez !

Vista a de nombreux gadgets et nouvelles fonctionnalités, dont certaines sont gourmandes en ressources. Par exemple, Windows Vista a beaucoup plus d'animations graphiques que XP. Activez l'affichage classique de Vista - sans Aero - et vous gagnerez beaucoup en performance. Aero consomme tellement de mémoire que je me demande si certains gadgets visuels ne sont pas écrits en WPF ! La gestion du réseau de Vista est très différente, la sécurité n'a rien à voir... autant de nouveautés qui coûtent.

Pourquoi (ne pas) migrer vers Vista ?

En fait, si on se pose la question de savoir si Vista est plus lent que XP, c'est que les utilisateurs manquent de raisons pour migrer vers Vista. Sinon on ne se poserait même pas la question. Même si 100 millions de PC ont déjà adopté Vista selon Bill Gates au CES, les utilisateurs migrent moins vite vers Vista qu'ils ont migré vers XP.

Ce qui fait migrer les utilisateurs moyens, et notamment en entreprise, c'est quand ils sont obligés d'avoir la dernière version de Windows pour faire tourner ce logiciel dont ils ont besoin.

Où sont les logiciels qui fonctionnent sous Vista et pas sous XP ? Bonne question. Il ne doit pas y en avoir beaucoup... Quel éditeur serait assez fou pour se priver de la moitié + de son marché ? Quand Adobe ne supportera plus XP, plus personne n'utilisera ce système.

WPF est-il mort ?

Pourtant, dans les conférences Microsoft, quand ils nous parlaient de Vista avant sa sortie, on avait droit à des démos d'impressionnantes applications WPF. Et on se disait : "Vivement Vista qu'on puisse faire des applis démentes". On avait hâte que Vista sorte pour pouvoir proposer des applications avec une interface utilisateur réellement nouvelle. Or ces applications ne sont pas sorties. Pourtant, les technos WPF sont disponibles depuis presque deux ans...

Pour l'instant, faire une application au look Vista, c'est :

  • utiliser la police de caractère Segoe UI à la place de Tahoma ou de MS Sans Serif.
  • avoir un champ "Recherche" bien en évidence.
  • utiliser des boîtes de dialogue type "Task dialog", et des assistants au style Aero.
  • reprendre les messages de l'interface utilisateur pour les mettre au goût de Vista.

Pas de quoi fouetter un chat. En plus tout cela est accessible sous XP, et même sous Windows 98 !

WPF est trop lent, trop lourd, et trop gourmand en mémoire. Et encore, il paraît que l'équipe Windows en a bien amélioré les performances et le temps de chargement des applications, avant la sortie de Vista. Est-il possible de construire une application grand public avec WPF, et de la vendre dans le commerce aujourd'hui ? Je demande à voir.

Pour la plupart de leurs applications, y compris pour le Ribbon d'Office, Microsoft utilise une sorte de mini-XAML en code non managé qui s'appelle DirectUI (recherchez sur google). Jamais WPF. Mais ne rêvez pas non plus : DirectUI ne sera jamais disponible au commun des développeurs, car DirectUI est un produit à usage interne, pas suffisamment propre pour que Microsoft puisse le vendre et en assurer le support pendant 10 ans. C'est d'ailleurs pour cette raison que Microsoft a préféré acheter le code source d'un Ribbon à BCGSoft pour l'inclure dans les MFC, plutôt que de publier le leur.

WPF est-il déjà mort ? En fait, WPF est une version 1.0. WPF 2.0 sera - espérons le - plus rapide et moins gourmand : c'est à dire écrit en code natif ! Sinon, nous autres éditeurs d'applications, l'enterrerons dans le même cimetière que le langage Java.

WPF ou Silverlight ?

En attendant que WPF ne sorte un pied de la tombe (ou bien qu'il y mette les deux), Silverlight pointe le bout de son nez. Avant sa sortie officielle, Silverlight s'appelait WPF/Everywhere, souvenez-vous. Silverlight 2.0 (en alpha actuellement) sera une implémentation légère, rapide et compacte d'une partie de WPF.

Comment ? Microsoft aurait implémenté deux fois le support de WPF ? Oui : une fois de manière lente et non optimisée (en code "managed"), et une fois de manière légère et rapide (en code natif). C'est ça Silverlight : un redoutable concurrent de WPF.

Et, pour en revenir à Windows XP, Silverlight tourne bien sûr sous XP...

Cela en fait des modèles de programmation, je choisis lequel pour mes applications ?

Pour faire une application sous Windows, on peut utiliser :

  • L'API Windows native (Win32), généralement à travers les MFC ou les ATL. La technologie est ancienne, éprouvée, rapide, mais les programmeurs d'aujourd'hui ne veulent plus coder en C++, ils préfèrent .NET... ! Si vous codez en C++, demandez une augmentation à votre chef, vous le valez bien.
  • Windows Forms (.NET 1.0 à 2.0) : cette technologie fonctionne très bien pour les applications de gestion, les application d'entreprise, et également pour les petits logiciels qui mettent en forme le contenu d'une base de données (genre "1000 courriers types" ou "mes recettes de cuisine").
  • Silverlight : c'est WPF allégé, écrit en code natif, et donc rapide. Mais Silverlight 1.0 est trop limité (à mon avis), et Silverlight 2.0 encore en version alpha. Silverlight arrivera-t'il trop tard ? Silverlight est apparemment destiné à des applications internet à client riche (RIA), mais il est possible de l'utiliser dans une application classique. Et gageons que les évolutions futures rendront Silverlight plus polyvalent.
  • WPF : très complet, très puissant, trop lourd, trop gourmand. Il faudrait (faudra) qu'il soit réécrit en code natif. Vivement WPF 2.0.

En regardant la liste, c'est marrant, on voit tout de suite qu'il y en a un environnement de trop, entre WPF et Silverlight. Ces deux environnements sont deux implémentations très différentes d'un seul type d'application (XAML/C#). Microsoft a développé deux fois la même chose on dirait.

Depuis quelques mois, on dirait que Microsoft a redécouvert qu'ils pouvaient proposer des outils pour développer des applications en code natif. Les nouvelles MFC sont un exemple. Est-ce que la trop grande lourdeur de WPF leur a montré qu'ils étaient allés trop loin dans le tout "managed" ?

Bon, qui vivra verra. En attendant, de nombreux utilisateurs restent sous XP. Microsoft s'en fiche, ils ont payé leur licence Windows. Et les éditeurs n'osent pas encore sortir des applications spécifiques Vista.

 

Tags  |  |  | 
 12 January 2008, 23:32
# Wednesday, December 26, 2007

Codejock est l'éditeur de la librairie de classe MFC eXtreme Toolkit Pro. C'est le concurrent de BCG Soft, dont la technologie a été achetée par Microsoft pour être incluse dans la prochaine version de MFC.

Codejock est en train de développer une fonctionnalité assez étonnante : le support d'une partie de XAML en C++ natif. Noooon ?? Si !

C'est vrai après tout ! XAML est le langage de description d'interface de .NET 3.5 (WPF). Mais pourquoi être obligé d'utiliser .NET pour faire du XAML ? C'est la question que Codejock s'est posée. Du coup, nous allons bientôt avoir droit à une implémentation de XAML en C++ natif.

Hum, ça veut dire quoi "une implémentation de XAML en C++ natif" ? Eh bien tout simplement que nous aussi, développeurs C++/MFC, pourrons bientôt utiliser XAML et Expression Blend pour coder nos interfaces. Je dois avouer que j'enviais énormément ce privilège aux développeurs C# .NET 3.5.

Quel intérêt ? Développer des interfaces utilisateurs très sympa, sans s'encombrer de la lourdeur de WPF. Je ne sais pas si vous avez déjà lancé une application écrite en XAML pour WPF, mais c'est loooonnng à se lancer, et ça nécessite énormément de mémoire. Et WPF sous Windows XP, ce n'est pas tout à fait ça (à moins que quelqu'un ne me contredise...)

Voici quelques exemples d'interfaces écrite en XAML :

L'exemple ci-dessus est écrit entièrement en XAML (le code XAML est ici (12 Ko)). Ce code XAML peut au choix être utilisé avec WPF pour faire une application en code managé et WPF, ou alors être utilisé par le module XAML de Codejock pour faire une application C++ natif.

Ci-dessus, du code XAML est utilisé pour créer des contrôles dans une application C++/MFC. On reconnaît la listbox multi-ligne, multi-format : une spécialité de XAML et WPF !

Cette fonctionnalité de Codejock ne supportera pas tout XAML, du moins dans la première version ;). Je ne sais pas quand cela sera disponible, mais à vue de nez... sans doute en même temps que les nouvelles MFC !

En tous cas, le rachat d'une partie de la librairie de BCG Soft par Microsoft a pour effet de dynamiser le développement C++ ! Vivement la suite !

 

Tags  |  | 
 26 December 2007, 18:45
# Wednesday, November 14, 2007

Comparaison n'est pas raison. Mais quand même...

Prenons trois petits programmes :

- Une application de gestion de comptes bancaires (Votre Budget) écrite en C++/MFC avec la librairie BCGSoft, linkée statiquement avec MFC et BCG (oui, la librairie qui va être intégrée dans la prochaine version des MFC)

- Un petit freeware écrit en VB.NET qui aide à arrêter de fumer, StopClope. On entre la date à laquelle on arrête de fumer, et puis on obtient des récompenses en fonction du nombre de jours qu'on tient sans fumer. Par exemple, j'ai arrêté il y a 101 jours, économisé 707 euros, et j'ai gagné 19 jours d'espérance de vie. Motivant non ?

- Une application WPF, LCI Intégrale qui affiche des vidéos en streaming.

Voici à quoi ressemble mon gestionnaire des tâches Vista quand je lance ces trois programmes en même temps :

Mémoire occupée par les trois applications :

- C++/MFC/BCG : 5 Mo (13 Mo)

- Winform : 15 Mo (28 Mo)

- WPF : 64 Mo (145 Mo)

A vue de nez, une application WPF occuperait 4 fois plus de mémoire qu'une application Windows Forms, et 12 fois plus qu'une application MFC/BCG.

Ces trois programmes sont des petites applications, mais les valeurs ne varient pas énormément. Pour donner un ordre de grandeur, j'ai aussi lancé Word 2007 (22 Mo), Photoshop (65 Mo), et Visual Studio (50 Mo).

Le confort ressenti à l'utilisation de ces applications est directement proportionnel à l'espace mémoire utilisé. Photoshop et Visual Studio sont lourds à utiliser, n'est-ce pas ?

Ah ! Quel plaisir d'utiliser des logiciels écrits en C++ ! Alors faites plaisir à vos clients, programmez en C++ !

Tags  |  | 
 14 November 2007, 00:48