XAML本质上是XML的子集。据说将XAML基于XML的主要好处之一是可以使用现有工具进行解析。尽管(语法上不重要的)属性值将保持文本形式并需要进一步解析,但它在很大程度上可以。
用XML派生的语言描述GUI有两种主要选择。一种是做WinForms所做的事情,并用真实的代码对其进行描述。尽管它并非完全没有优势,但这样做有很多问题(将XAML与这种方法进行比较是一个问题)。另一个主要的替代方案是设计专门针对手头任务的全新语法。这通常称为领域特定语言。
因此,事后看来,作为对子孙后代的一个教训,将XAML基于XML是一个好主意,还是作为一种定制设计的领域特定语言会更好?如果我们要设计一个更好的UI框架,我们应该选择XML还是自定义DSL?
由于积极地思考现状要容易得多,尤其是社区非常喜欢的现状,因此,我将举一些示例理由说明为什么在XML之上进行构建可能会被认为是错误的。
基于XML的语言有其作用:解析起来要容易得多(核心解析器已经可用),所需的设计工作要少得多,并且对于第三方开发人员来说,替代解析器也要容易编写。
但是由此产生的语言可能会以各种方式令人不满意。这很冗长。如果更改某物的类型,则需要在结束标记中进行更改。它对评论的支持很差;注释掉属性是不可能的。XML对属性的内容有一些限制。标记扩展必须建立在XML语法的“顶部”,而不是深入和完美地集成到其中。而且,我个人最喜欢的是,如果您通过属性设置内容,则使用的语法与将内容属性设置为完全相同的语法完全不同。
也有人说,由于每个人都了解XML,因此XAML需要的学习较少。严格来说,这是事实,但是学习语法只是学习新UI框架的一小部分时间。正是框架的概念使曲线变得陡峭。此外,基于XML的语言的特质实际上可能会添加到“需要学习”的篮子中。
易于解析会抵消这些缺点吗?下一个很酷的框架是否应该延续这一传统,还是应该花时间设计出色的DSL,而DSL是现有工具无法解析的,并且每个人都需要学习其语法?
PS并非每个人都对XAML和WPF感到困惑,但是有些人对此感到困惑。XAML是类似XML的东西。WPF是支持绑定,主题化,硬件加速和许多其他很酷功能的框架。