W3C Web 应用工作组(Web Applications Working Group)最近发布了《Web IDL》工作草案,即过去的《DOM 规范语言绑定(Language Bindings for DOM Specifications)》。该工作草案定义了一个 OMG IDL 3.0 版的语法子集,供那些需要定义接口的规范使用。InfoQ 采访了该规范的编辑,以进一步了解该规范、以及该规范对 Web 开发社区的影响。
由该工作草案定义的接口定义语言(interface definition language)叫作Web IDL,它可被用来描述要在 Web 浏览器里实现的接口。Web IDL 是一种 IDL 的变体,它所具有的很多特性使之能够更容易地对 Web 平台里的常用脚本对象的行为进行规定。为了支持过去只能以文字描述的常用功能,该 IDL 在很多方面得到了扩展。另外,它还为 ECMAScript 第 3 版和 Java 给出了精确的语言绑定。该规范文档在介绍部分解释了为何要有这样一个规范:
过去,W3C 技术报告都是用对象管理组织(OMG)的接口定义语言(IDL)[OMGIDL] 来描述编程语言接口的。利用该 IDL,可以以独立于语言的方 式来描述这些接口。通常,这些文档还要在附录中另外给出一个语言绑定,以详细描述用 IDL 描述的接口如何与给定语言的构造成分相对应。然 而,这些规范在为 ECMAScript 这一 Web 上最常用的语言给出绑定时,描述的精确度很低,因而造成互操作性问题。另外,各个规范必须描述同样的基本信 息,比如:用 IDL 描述的 DOM 接口相当于 ECMAScript 全局对象的属性,或者无符号长整数 IDL 类型映射为 ECMAScript 的数值类型,等 等。
Web IDL 的目的,就是详细定义一种语言,以便 W3C 规范定义接口、并为这种接口的 ECMAScript 与 Java 绑定提供精确的一致性要求 (conformance requirements)。W3C 期望该文档对已发布规范的实现者们起到指南作用,并期望以后发布的规范参照本文档,以确保合乎规范的各接口实现之间能 够互操作。“这对《HTML 5》的制定将有极大的帮助”,《HTML 5》编辑 Ian Hickson 说。另外,《XMLHttpRequest Level 2》的制定也将参照 Web IDL 规范。这次发布的版本,除了一些内容上的改动,还有一个重大变化,即文档标题改成了“Web IDL”。Web IDL 编辑 Cameron McCormack 说:“因为该文档定义的是一个 IDL 语言及其跟两种语言的映射,而之前的名称给人以‘该文档仅用于 DOM 规范、而不是任何需要用 IDL 定义接口的规范’的印象,所以现在这个名称更加准确。”
Cameron McCormack 还向 InfoQ 讲述了 Web IDL 将如何对 Web 开发社区有间接帮助:
目前,大部分 DOM 相关的规范,都是在相当高的层次上,对实现特定接口的 ECMAScript 宿主对象的行为进行描述的。例如,DOM Level 3 Core 规范在附录 ECMAScript 语言绑定部分为 DOM Level 3 Core 描述了 ECMAScript 绑定,但它没有说 Node 原型对象(prototype object)在 Element 对象的原型链(prototype chain)中。各种 AJAX 工具包均有赖于此,而这一块还没有被标准化。另一个例子,在调用宿主对象的函数时,如何进行类型强制转换,这也是没有规定的。例如,当你执行下面这行时:
circleElement.setAttributeNS(null, ‘cx’, 2 * 50);
期望的行为是: circleElement.setAttributeNS(null, ‘cx’, ‘100’);
因为 setAttributeNS() 的第三个参数是一个 DOMString。这一点没有在任何地方定义,但它是一个能够广泛互操作的行为。Web IDL 定义了如何像这样进行类型强制转换。
那么由于 Web IDL“在对其他规范的语言绑定方面施加了更强的要求”,所以 Web 开发社区将看到一个更加互操作的环境:各标准之间是一致的,参照同一套标准开发的各产品之间也是一致的。查看英文原文: Web IDL: W3C Language Bindings for DOM Specifications Gets a New Name
评论