XAML est essentiellement un sous-ensemble de XML. On dit que l'un des principaux avantages de baser XAML sur XML est qu'il peut être analysé avec les outils existants. Et cela peut, dans une large mesure, bien que les valeurs d'attribut (syntaxiquement non triviales) restent sous forme de texte et nécessitent une analyse plus approfondie.
Il existe deux principales alternatives à la description d'une interface graphique dans un langage dérivé de XML. La première consiste à faire ce que WinForms a fait et à le décrire en vrai code. Il y a de nombreux problèmes avec cela, bien qu'il ne soit pas complètement sans avantage (une question pour comparer XAML à cette approche ). L'autre alternative majeure consiste à concevoir une toute nouvelle syntaxe spécialement adaptée à la tâche à accomplir. Ceci est généralement connu comme un langage spécifique au domaine .
Donc, avec le recul, et comme une leçon pour les générations futures, était-ce une bonne idée de baser XAML sur XML, ou aurait-il été préférable en tant que langage spécifique au domaine conçu sur mesure? Si nous concevions un cadre d'interface utilisateur encore meilleur, devrions-nous choisir XML ou un DSL personnalisé?
Puisqu'il est beaucoup plus facile de penser positivement au statu quo, en particulier à celui qui est très apprécié par la communauté, je vais donner quelques exemples de raisons pour lesquelles construire sur XML pourrait être considéré comme une erreur.
Baser un langage sur XML a une chose en tête: il est beaucoup plus facile d'analyser (l'analyseur principal est déjà disponible), nécessite beaucoup, beaucoup moins de travail de conception, et les analyseurs alternatifs sont également beaucoup plus faciles à écrire pour les développeurs tiers.
Mais la langue qui en résulte peut être insatisfaisante de diverses manières. C'est assez verbeux. Si vous changez le type de quelque chose, vous devez le changer dans la balise de fermeture. Il a un très faible support pour les commentaires; il est impossible de commenter un attribut. Il existe des limitations imposées au contenu des attributs par XML. Les extensions de balisage doivent être construites "au-dessus" de la syntaxe XML, et ne pas y être intégrées profondément et joliment. Et, mon préféré, si vous définissez quelque chose via un attribut, vous utilisez une syntaxe complètement différente que si vous définissez exactement la même chose qu'une propriété de contenu.
On dit également que puisque tout le monde connaît XML, XAML nécessite moins d'apprentissage. À vrai dire, cela est vrai, mais l'apprentissage de la syntaxe ne représente qu'une infime fraction du temps passé à apprendre un nouveau cadre d'interface utilisateur; ce sont les concepts du cadre qui rendent la courbe raide. En outre, les particularités d'un langage basé sur XML pourraient en fait s'ajouter au panier "besoins d'apprentissage".
Ces inconvénients sont-ils surpondérés par la facilité d'analyse? Le prochain cadre sympa devrait-il continuer la tradition, ou investir le temps de concevoir un DSL génial qui ne peut pas être analysé par les outils existants et dont la syntaxe doit être apprise par tout le monde?
PS Tout le monde ne confond pas XAML et WPF , mais certains le font. XAML est la chose semblable à XML. WPF est le cadre avec le support des liaisons, des thèmes, de l'accélération matérielle et beaucoup d'autres trucs sympas.