WPF est-il une chose extraordinaire?

Tant que je programme, je le faisais toujours avec MS-technologies. Il y avait DOS, MFC, VB6, puis .net avec WinForms et maintenant WPF.

Dans toutes ces technologies, l’interface graphique était toujours plus ou moins la même, car elle était basée sur Win32 (sauf DOS). Avec WPF, tout a totalement changé. MS a introduit de nombreuses nouvelles possibilités, à commencer par la manière déclarative de construire des interfaces utilisateur, des contrôles sans apparence, des animations, etc. J’aime beaucoup cette nouvelle technologie d’interface utilisateur, ainsi que ses principes fondamentaux (DependencyProperty-System, RoutedEvents, etc.).

Mais ce que je ne sais pas, parce que j’ai toujours utilisé les technologies MS, c’est que toute cette construction est une invention spécifique à MS ou ne constitue-t-elle qu’une bonne compilation de technologies et de modèles à la pointe de la technologie et utilisés dans de nombreux autres environnements modernes.

Existe-t-il des informations sur la comparaison des technologies d’interface utilisateur modernes qui montrent des liens et des modèles communs?

Si vous étudiez la technologie graphique, vous réaliserez que WPF n’est pas si remarquable: c’est une implémentation de concepts bien établis sur le matériel moderne et Windows moderne. Pour illustrer cela, un vieux livre ici sur mon étagère, imprimé en 1991, intitulé ” Infographie, principes et pratique “, contient bon nombre des idées développées par WPF.

La différence la plus fondamentale entre WPF et GDI (le système graphique Windows prédécesseur) réside dans le fait que WPF est un système graphique en mode conservé , alors que GDI était en mode non conservé . Cela signifie que dans WPF, il existe une arborescence visuelle et que la structure de données, qui représente la scène visuelle à visualiser, est découpée et pixellisée régulièrement, et que la structure de données rest toujours en mémoire, gérée par WPF lui-même.

Une fois que cela est compris, le cœur de WPF est une arborescence représentant la scène. Le rest repose sur les principes de gestion des spécificités de la pixellisation de l’arbre visuel au-dessus d’un système d’affichage 3D mature (DirectX). La superposition de threads ( DispatchObject ), le mécanisme de liaison de données ( DependencyObject ) et les idiomes d’interface utilisateur de disposition, d’entrée, de focus, d’événement ( UIElement ) et de style ( FrameworkElement ) sont tous des progressions naturelles des idées dans Win32 ou d’autres constructions d’interface utilisateur. Pour donner un exemple de ce dernier: même si rien comme DependencyObject n’a jamais existé dans Win32, un outil 3D populaire (Maya), qui représente une scène 3D comme un graphe acyclique dirigé a un sous-système similaire, où les nœuds ont des propriétés et les propriétés sont mises à jour, les valeurs sont poussées via les connexions de nœud sur le graphique et tous les nœuds intéressés par cette propriété sont informés de la nouvelle valeur. On peut en déduire qu’une fois que vous avez une structure de données centrale (arbre ou graphique), la superposition de nouvelles capacités est un problème d’ingénierie logicielle direct.

Cela dit, WPF doit être reconnu pour ce qu’il est: un fruit mûr qui incarne des décennies de recherche, d’essais et d’erreur dans la construction d’une interface utilisateur et d’une technologie graphique, et une base solide pour la création d’applications client riches dans le futur.

Ce n’est pas seulement une construction spécifique à MS, comme vous dites. Il existe d’autres technologies similaires basées sur les mêmes principes (une balise de type XML pour définir l’interface utilisateur) – JavaFX, Adobe Flex, Flash, etc. Je ne trouve aucune information spécifique sur les modèles communs utilisés dans chacun, mais il existe de nombreuses comparaisons entre eux.

À mon avis, WPF a été inspiré par d’autres technologies, telles que le StackPanel de Swing / Java. De plus, l’idée de disposer d’un fichier XML décrivant l’interface utilisateur et d’un fichier de code distinct existait auparavant – voir Adobe Flex où vous avez XML et ActionScript.

Cependant, Microsoft a fait un excellent travail lors de la conception de WPF. Ils ont certainement été inspirés par d’autres concepts, mais ils ont certainement ajouté d’excellentes fonctionnalités, telles que DependencyProperties, qui sont un nouveau concept, pour autant que je sache (corrigez-moi si je me trompe).

En outre, WPF semble être une technologie très évolutive, car elle ne repose pas uniquement sur MS sous Windows Desktop OS, mais également sur Silverlight et donc également sur Web-Solutions et sur le futur Windows Phone 7.

Pour moi, WPF est la meilleure technologie parmi toutes les autres technologies MS. Je l’utilise depuis un moment et je dois dire que je suis heureux que nous ayons quelque chose de mieux que WinForms. WPF est extraordinaire pour Microsoft, mais pas pour d’autres sociétés comme Adobe par certains aspects, l’animation par exemple. Les animations sont beaucoup plus puissantes en Flash. Pour que les animations fluides fonctionnent simultanément, vous devez probablement coder à des niveaux inférieurs de .NET et avoir besoin d’une bonne carte graphique.