Avec le recul, baser XAML sur XML est-il une erreur ou une bonne approche?

16

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.

Roman Starkov
la source
3
Oui, il peut être analysé par un analyseur XML, mais pas de manière significative / complète. Par exemple, il utilise des attributs de chaîne pour définir les sources de données et les mappages de propriétés.
Konrad Rudolph
5
Que proposez-vous comme alternative? Toute discussion sur la pertinence d'une technologie particulière devrait porter sur les technologies de remplacement appropriées.
Robert Harvey
2
XAML n'est pas sans homologues, vous savez. XUL, Glade et QML sont tous basés sur la même idée. Je pense que vous singularisez XAML injustement.
user16764
3
Je pense que le plus grand avantage de XAML n'est pas qu'il peut être analysé par des analyseurs XML. C'est plutôt que XAML est similaire à XML, et la plupart des développeurs savent déjà comment travailler avec XML, et donc la courbe d'apprentissage est beaucoup moins abrupte.
Juozas Kontvainis
2
@JuozasKontvainis Si par "travailler" vous voulez dire "analyser cela dans leurs outils", alors oui. Si vous voulez dire "écrire une interface utilisateur décrite par elle", alors la syntaxe familière pourrait sembler utile, mais en réalité, vous devez toujours savoir quoi mettre à l'intérieur des attributs (car ce n'est pas XML), et c'est de loin le plus difficile chose, dans mon expérience personnelle. À mon avis, apprendre une nouvelle syntaxe, surtout si elle est simple et bien conçue, est trivial.
Roman Starkov

Réponses:

4

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

Robert Harvey
la source
3
Seriez-vous d'accord pour dire que le même raisonnement s'applique également à des choses comme, par exemple, les descriptions de grammaire YACC, TeX, les expressions régulières, Verilog et peut-être même LISP? Nous avons trouvé une syntaxe spéciale pour chacun d'eux. Ils bénéficieraient de la même manière que vous énumérez dans le premier paragraphe. Alors, cela ne signifie-t-il pas que l'utilisation de XML pour eux serait la bonne chose, parce que XML répond aux objectifs que vous avez mentionnés?
Roman Starkov
Seul XML est largement reconnu comme une méta-norme de données universelle, à partir de laquelle vous pouvez créer autant de normes de données individuelles que vous le souhaitez. Pour éviter de brouiller les eaux, j'ai supprimé le premier paragraphe.
Robert Harvey
Les expressions S n'ont jamais été considérées comme un standard de métadonnées, peut-être parce que personne n'aime toutes ces parenthèses idiotes. L'ubiquité est le facteur déterminant ici; toutes ces syntaxes alternatives que vous avez mentionnées peuvent être représentées en XML, si vous êtes si enclin.
Robert Harvey
2
Tous peuvent également être représentés en YAML et JSON (et vice versa).
Timwi
2
Un énorme problème que je vois tout au long de cet argument est que XAML n'est pas vraiment des données. Bien sûr, il pourrait simplement être traité comme un simple graphique d'objet, mais ce genre de réflexion explique probablement pourquoi beaucoup de gens ne l'aiment pas et pourquoi il a une telle courbe d'apprentissage. "hey laisse aller faire un graphe d'objet, euh, je veux dire une interface utilisateur". Je ne sais pas comment cela pourrait être amélioré, mais je suis convaincu que cela pourrait l'être.
Earlz
2

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:

  1. (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.)

  2. 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.

  3. 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.

benzado
la source
1
J'aime XML; Je n'aime simplement pas l'écrire à la main. 1. Oui, ils devraient le faire, mais hélas, la réalité est que Visual Studio ne peut pas vraiment retirer cela. 3. Ceci est orthogonal à la discussion de savoir si XAML était, avec le recul, une mauvaise idée. Oui, on pourrait, mais pourquoi en aurait-on besoin si XAML n'était pas un mauvais choix?
Roman Starkov
1
Mon point est que vous le jugez entièrement par rapport aux critères de l'écriture; vos préoccupations doivent être mises en balance avec la validation et l’interprétation également. Une DSL plus agréable à écrire serait certainement plus difficile à analyser. Mais une étape de compilation intermédiaire pourrait vous donner le meilleur des deux mondes.
benzado
0

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.

John Henckel
la source