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.