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.
quelle
Antworten:
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
quelle
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:
(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.)
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.
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.
quelle
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.
quelle