Ist es im Nachhinein ein Fehler oder ein guter Ansatz, XAML auf XML aufzubauen?

16

XAML ist im Wesentlichen eine Teilmenge von XML. Einer der Hauptvorteile von XAML auf XML-Basis ist, dass es mit vorhandenen Tools analysiert werden kann. Dies kann in hohem Maße der Fall sein, obwohl die (syntaktisch nicht trivialen) Attributwerte in Textform bleiben und eine weitere Analyse erfordern.

Es gibt zwei Hauptalternativen zur Beschreibung einer GUI in einer von XML abgeleiteten Sprache. Eine besteht darin, das zu tun, was WinForms getan hat, und es in echtem Code zu beschreiben. Es gibt zahlreiche Probleme damit, obwohl es nicht völlig vorteilhaft ist (eine Frage, um XAML mit diesem Ansatz zu vergleichen ). Die andere wichtige Alternative besteht darin, eine völlig neue Syntax zu entwerfen, die speziell auf die jeweilige Aufgabe zugeschnitten ist. Dies ist allgemein als domänenspezifische Sprache bekannt .

War es im Nachhinein und als Lehre für die zukünftigen Generationen eine gute Idee, XAML auf XML-Basis zu erstellen, oder wäre es besser gewesen, eine benutzerdefinierte domänenspezifische Sprache zu verwenden? Wenn wir ein noch besseres UI-Framework entwerfen würden, sollten wir uns für XML oder ein benutzerdefiniertes DSL entscheiden?

Da es viel einfacher ist , positiv über den Status quo zu denken, vor allem eine , die ganz von der Gemeinschaft gemocht wird, werde ich einige Beispiel Gründe geben , warum auf der XML - Aufbau könnte ein Fehler in Betracht gezogen werden.

XML als Grundlage für eine Sprache zu verwenden, bedeutet Folgendes: Es ist viel einfacher zu analysieren (der Kern-Parser ist bereits verfügbar), erfordert viel weniger Entwurfsarbeit und alternative Parser sind auch für Entwickler von Drittanbietern viel einfacher zu schreiben.

Die resultierende Sprache kann jedoch auf verschiedene Weise unbefriedigend sein. Es ist ziemlich ausführlich. Wenn Sie den Typ von etwas ändern, müssen Sie ihn im schließenden Tag ändern. Es hat sehr schlechte Unterstützung für Kommentare; Ein Attribut kann nicht auskommentiert werden. Es gibt Einschränkungen für den Inhalt von Attributen durch XML. Die Markup-Erweiterungen müssen "auf" der XML-Syntax aufgebaut sein und dürfen nicht tief und gut in diese integriert sein. Und, mein persönlicher Favorit, wenn Sie etwas über ein Attribut festlegen, verwenden Sie eine völlig andere Syntax als wenn Sie genau dasselbe wie eine Inhaltseigenschaft festlegen .

Es wird auch gesagt, dass XAML weniger Lernen erfordert, da jeder XML kennt. Genau genommen stimmt dies, aber das Erlernen der Syntax ist ein winziger Bruchteil der Zeit, die zum Erlernen eines neuen UI-Frameworks aufgewendet wird. Es sind die Konzepte des Frameworks, die die Kurve steil machen. Außerdem könnten die Eigenheiten einer XML-basierten Sprache tatsächlich zum "Lernbedarf" -Korb beitragen.

Werden diese Nachteile durch die einfache Analyse aufgewogen? Sollte das nächste coole Framework die Tradition fortsetzen oder die Zeit investieren, um ein fantastisches DSL zu entwerfen, das nicht von vorhandenen Tools analysiert werden kann und dessen Syntax von allen gelernt werden muss?

PS Nicht jeder verwechselt XAML und WPF , aber einige tun es. XAML ist das XML-ähnliche Ding. WPF ist das Framework, das Bindungen, Themes, Hardwarebeschleunigung und viele andere coole Dinge unterstützt.

Roman Starkov
quelle
3
Ja, es kann von einem XML-Parser analysiert werden, aber nicht sinnvoll / vollständig. Beispielsweise werden Zeichenfolgenattribute verwendet, um Datenquellen und Eigenschaftenzuordnungen zu definieren.
Konrad Rudolph
5
Was schlagen Sie als Alternative vor? Jede Diskussion über die Eignung einer bestimmten Technologie müsste sich mit geeigneten Ersatztechnologien befassen.
Robert Harvey
2
XAML ist nicht ohne Gegenstücke, wissen Sie. XUL, Glade und QML basieren alle auf derselben Idee. Ich denke, Sie heben XAML unfair hervor.
user16764
3
Ich denke, dass der größte Vorteil von XAML nicht darin besteht, dass es von XML-Parsern analysiert werden kann. Vielmehr ähnelt XAML XML, und die meisten Entwickler wissen bereits, wie man mit XML arbeitet, sodass die Lernkurve viel weniger steil ist.
Juozas Kontvainis
2
@JuozasKontvainis Wenn du mit "arbeiten" meinst "parse es in ihren Werkzeugen", dann ja. Wenn Sie "eine von ihr beschriebene Benutzeroberfläche schreiben" meinen, dann könnte die bekannte Syntax hilfreich sein, aber realistisch gesehen müssen Sie noch lernen, was in Attribute zu setzen ist (denn das ist kein XML), und das ist bei weitem das Schwierigste Sache, nach meiner persönlichen Erfahrung. Das Erlernen einer neuen Syntax, insbesondere wenn sie einfach und gut gestaltet ist, ist meiner Meinung nach trivial.
Roman Starkov

Antworten:

4

Der einzige zwingende Grund für die Verwendung von XML ist die Einrichtung eines offenen Datenstandards. XAML ist dieselbe Anzeigesprache, die sowohl in Silverlight als auch in WPF verwendet wird. Jeder Anbieter kann denselben Markup-Standard verwenden, um eine Anzeigedefinition für seine eigene Plattform zu erstellen. Sie kann in Silverlight oder WPF wiederverwendet werden.

In der Luft- und Raumfahrtindustrie haben wir Kontrollräume, die dank der Fortschritte der Computertechnologie jetzt relativ flexibel sind. In der Vergangenheit war die gesamte Hardware kundenspezifisch, einzigartig und sehr teuer. Heute läuft alles mit preiswerten, handelsüblichen Standard-PCs. Dies reduziert die Lieferantenbindung erheblich. Anzeige-Widgets werden jedoch weiterhin mit ActiveX geschrieben, da dies immer so erfolgt.

ActiveX erfordert Zugriff auf Microsoft-Tools, die veraltet sind. Die Air Force und die Inter-Range Instrumentation Group haben daher eine XML-basierte Data Display Markup Language entwickelt. Auf diese Weise können Praktiker Anzeigen im Editor ihrer Wahl mit XML-Markup entwerfen. Klingt bekannt?

Niemand argumentiert, dass XML nicht ohne Fehler ist. Aber es ist das Beste, was es zu bieten hat, bis etwas Besseres eintritt.

Siehe auch
Warum XML nicht funktioniert

Robert Harvey
quelle
3
Würden Sie zustimmen, dass die gleiche Argumentation auch für Dinge wie YACC-Grammatikbeschreibungen, TeX, Regexes, Verilog und vielleicht sogar LISP gilt? Wir haben uns für jede davon eine spezielle Syntax ausgedacht. Sie würden in der gleichen Weise profitieren, wie Sie es im ersten Absatz auflisten. Ist es dann nicht richtig, XML für sie zu verwenden, weil XML die von Ihnen genannten Ziele erreicht?
Roman Starkov
Nur XML ist weithin als universeller Daten-Metastandard anerkannt, aus dem Sie beliebig viele individuelle Datenstandards erstellen können. Um das Wasser nicht zu trüben, habe ich den ersten Absatz gestrichen.
Robert Harvey
S-Ausdrücke haben sich nie als Metadatenstandard durchgesetzt, vielleicht weil niemand diese albernen Klammern mag. Die Allgegenwart ist hier der zwingende Faktor; Alle diese alternativen Syntaxen, die Sie erwähnt haben, können in XML dargestellt werden, wenn Sie dazu geneigt sind.
Robert Harvey
2
Alle von ihnen können auch in YAML und JSON dargestellt werden (und umgekehrt).
Timwi
2
Ein großes Problem, das ich in diesem Argument sehe, ist, dass XAML nicht wirklich Daten sind. Sicher, es könnte nur als ein Objektdiagramm behandelt werden, aber diese Art des Denkens ist wahrscheinlich, warum viele Leute es nicht mögen und warum es eine solche Lernkurve hat. "Hey, lass uns einen Objektgraphen erstellen, äh, ich meine eine Benutzeroberfläche". Ich habe keine Ahnung, wie es besser gemacht werden könnte, aber ich bin zuversichtlich, dass es besser sein könnte.
Earlz
2

Ihre Einwände gegen XML haben nichts damit zu tun, es als GUI-Beschreibungssprache zu verwenden. Es sind alles Beschwerden über die Arbeit mit XML-Syntax, die für jede Form von XML gleichermaßen gelten.

Es klingt also so, als ob Sie XML einfach nicht mögen.

Sie haben Recht, es ist möglicherweise nicht die optimale Wahl für die manuelle Bearbeitung, aber für eine GUI-Beschreibungssprache würde ich einige Gegenargumente vorbringen:

  1. (IMHO,) GUIs sind grafisch und sollten grafisch angelegt werden. Das Dateiformat ist eigentlich nicht so wichtig, da Sie es eigentlich nicht von Hand bearbeiten sollten. (Textbasiert ist gut für die Quellcodeverwaltung, aber Ausführlichkeit ist kein Problem.)

  2. Abgesehen davon, dass der Parser verfügbar ist, ist XML auch einfach zu validieren: Sie können ein DTD- oder XML-Schema schreiben und dann mithilfe generischer Tools feststellen, ob Ihre Datei legal ist. Dies wird für eine GUI-Beschreibungssprache sehr nützlich sein. Dasselbe in JSON oder YAML zu tun, ist nicht so einfach.

  3. Wenn Sie mit dem direkten Schreiben von XAML wirklich unzufrieden sind, hindert nichts Sie daran, ein neues Format zu entwickeln und dieses dann in XAML zu kompilieren. Sie könnten beispielsweise eine einfache Zuordnung von JSON zu XAML finden, damit Sie die leichtere JSON-Syntax (und die Möglichkeit zum Auskommentieren von Attributen) verwenden und dann die XAML generieren, wenn Sie Ihre App erstellen. HTML wird selten mehr direkt geschrieben, aber HTML ist immer noch ein großartiges Format.

benzado
quelle
1
Ich mag XML; Ich schreibe es einfach nicht gerne von Hand. 1. Ja, das sollten sie, aber leider ist die Realität, dass Visual Studio das nicht wirklich durchziehen kann. 3. Dies ist orthogonal zu der Diskussion, ob XAML im Nachhinein eine schlechte Idee war. Ja, das könnte man, aber warum müsste man es tun, wenn XAML keine schlechte Wahl wäre?
Roman
1
Mein Punkt ist, dass Sie es ganz nach den Kriterien des Schreibens beurteilen; Ihre Bedenken müssen gegen die Validierung und Interpretation abgewogen werden. Ein besser zu schreibendes DSL wäre mit ziemlicher Sicherheit schwerer zu analysieren. Ein zwischenzeitlicher Kompilierungsschritt könnte Ihnen jedoch das Beste aus beiden Welten bieten.
Benzado
0

Diese Frage ist subjektiv, daher halte ich es für angemessen, eine Antwort zu veröffentlichen, die auf meinen persönlichen Vorlieben basiert.

XML ist schwer zu lesen. Öffnen Sie zum Beispiel diesen Link und klicken Sie auf "Beispiel", um XML und YAML nebeneinander zu vergleichen. Letzteres ist deutlich besser lesbar.

Wenn Sie XML zur Beschreibung einer GUI verwenden möchten, sollten Sie verdammt sicher sein, dass Sie genügend Tools bereitstellen, damit sich die Menschen nicht mit XML befassen müssen.

In dieser Hinsicht ist XPF eindeutig gescheitert.

John Henckel
quelle