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.
la source
Réponses:
La seule raison impérieuse d'utiliser XML est d' établir une norme de données ouverte. XAML est la même langue d'affichage utilisée dans Silverlight et WPF; n'importe quel fournisseur peut utiliser la même norme de balisage pour créer une définition d'affichage pour sa propre plate-forme, et elle peut être réutilisée dans Silverlight ou WPF.
Dans l'industrie aérospatiale, nous avons des salles de contrôle qui, grâce aux progrès de la technologie informatique, sont maintenant raisonnablement flexibles. Dans le passé, tout le matériel était personnalisé, unique et très cher; aujourd'hui, tout fonctionne avec des PC standard, peu coûteux et disponibles sur le marché. Cela réduit considérablement le verrouillage du fournisseur. Cependant, les widgets d'affichage sont toujours écrits à l'aide d'ActiveX, car c'est comme cela que cela a toujours été fait.
ActiveX nécessite l'accès à des outils Microsoft qui sont, bien, obsolètes. L'Air Force et l' Inter-Range Instrumentation Group proposent donc un langage de balisage d'affichage de données, basé sur XML. Cela permettra aux praticiens de concevoir des affichages à l'aide du balisage XML, dans l'éditeur de leur choix. Semble familier?
Personne ne prétend que XML n'est pas sans défauts. Mais c'est la meilleure chose disponible pour ce pour quoi elle a été conçue, jusqu'à ce que quelque chose de mieux arrive.
Voir aussi
pourquoi XML ne suce pas
la source
Vos objections à XML n'ont rien à voir avec son utilisation comme langage de description GUI; ce sont toutes des plaintes concernant l'utilisation de la syntaxe XML qui s'appliquent également à toute forme de XML.
Il semble donc que vous n'aimiez tout simplement pas XML.
Vous avez raison, ce n'est peut-être pas le choix optimal pour éditer à la main, mais pour un langage de description GUI, je ferais quelques contre-arguments:
(IMHO,) Les interfaces graphiques sont graphiques et doivent être présentées graphiquement. Le format de fichier n'est pas vraiment important, car vous ne devriez vraiment pas le modifier à la main. (Le texte est bien pour le contrôle du code source, mais la verbosité n'est pas un problème.)
Outre que l'analyseur est disponible, XML est également facile à valider: vous pouvez écrire une DTD ou un schéma XML, puis utiliser des outils génériques pour vous dire si votre fichier est légal. Cela va être très utile pour un langage de description GUI. Faire de même en JSON ou YAML n'est pas aussi simple.
Si vous n'êtes vraiment pas satisfait d'écrire directement en XAML, rien ne vous empêche de développer un nouveau format, puis de le compiler en XAML. Par exemple, vous pouvez proposer un mappage simple de JSON à XAML, afin que vous puissiez avoir la syntaxe plus légère de son JSON (et la possibilité de commenter les attributs), puis générer le XAML lorsque vous créez votre application. Les gens écrivent rarement HTML directement plus, mais HTML est toujours un excellent format.
la source
Cette question est subjective, donc je pense qu'il est juste de poster une réponse qui est basée sur mes préférences personnelles.
XML est difficile à lire. Par exemple, ouvrez ce lien et cliquez sur "Échantillon" pour comparer côte à côte XML et YAML. Ce dernier est clairement beaucoup plus lisible par l'homme.
Si vous souhaitez utiliser XML pour décrire une interface graphique, vous feriez mieux de vous assurer que vous fournissez suffisamment d'outils pour que les humains n'aient pas à regarder le XML.
Il est clair que XPF a échoué à cet égard.
la source