把界面描述交给标记文件
可扩展应用程序标记语言(Extensible Application Markup Language,XAML)是在微软Windows应用开发中形成的声明式语言。它使用XML形式描述对象、属性及相互关系,典型用途是定义窗口、按钮、文字和布局。程序仍然需要运行框架,但界面结构可以从逐条创建控件的程序代码中分离出来。
2003年10月27日,微软在洛杉矶专业开发者大会上公开展示这项技术。吉姆·奥尔钦把XAML介绍为Longhorn计划的一部分,强调设计人员与开发人员可以分别处理界面外观和后台代码。它所依托的Avalon呈现系统,后来发展为Windows呈现基础(Windows Presentation Foundation,WPF)。
两种写法指向同一组对象
大会演示中,Windows架构师克里斯·安德森与唐·博克斯先用C#建立窗口,再把部分界面定义移入XAML文件。他们把属性设置改写成标记,同时保留后台代码,并通过构建系统把两类文件组合起来。演示还加入文本框、按钮及点击处理程序,说明标记与程序逻辑如何合作。
这里的关键不是取消编程,而是改变界面对象的表达方式。创建某个按钮,既可以调用类的构造函数、逐一赋值,也可以写出按钮元素及其属性。可视化工具能够读取和生成这种结构化文本,设计人员调整界面时便有了与开发代码衔接的共同文件形式。
从早期预览到运行框架
2004年的技术文章基于Longhorn预发布版本,描述了独立标记与带后台代码的应用两种情形。其示例中,只要引用了过程代码,就必须通过构建步骤组合标记和代码文件。元素名称、命名空间与构建方式在后续产品中继续调整,早期示例反映的是当时的开发环境。
2006年11月6日,微软宣布.NET Framework 3.0完成发布制造阶段,并提供下载,其中包括WPF。XAML由此前公开演示的技术方向进入可交付的应用框架。开发者可以利用框架的控件、数据绑定和呈现设施,而不是为每个标记自行实现绘制逻辑。
2008年文档规定了哪些内容
2008年公开的技术规范进一步把XAML对象映射与具体框架词汇分开。对象映射规定如何从XML结构描述类型和对象层级;WPF词汇规范则列出这个框架允许使用的类型、成员和文本表示。不同框架可以在共同映射办法上定义各自的词汇。
《WPF Xaml Vocabulary Specification 2006》第1.0版标注2008年6月发布。它说明,应把其中的WPF信息项与对象映射规范结合,才能判断某份文档是否属于有效的WPF XAML。文件题名中的2006与版本发布日期2008承担不同含义:前者标识相关词汇版本,后者记录该规范文件的发布。
这些规范让实现者和工具开发者能核对类型是否存在、某个成员怎样赋值,以及文本如何解释,减少仅凭示例猜测语法的空间。它们记录和整理了已经在产品中使用的技术。
协作方式与版本边界
XAML将布局、样式和资源组织为可由工具处理的声明,使外观修改与业务逻辑更容易分工。控件样式可以被多个界面复用,数据绑定则把运行时数据连接到显示对象;这些能力由相应框架解释并执行。
后来WPF、Silverlight及工作流等技术都使用了XAML,但支持的类型和解析能力并不完全相同。相似的标记文件不能因此假定在所有平台直接通用。其早期发展展示了一条明确路线:先用声明表达对象,再由框架提供行为和呈现,最终以规范说明两者之间的映射。