Don Box 是一位著名的教育家,被公认为组件对象模型 (COM) 领域的权威人物;他是简单对象访问协议 (SOAP) 规范的制定者之一,也是“COM,我的爱”一词的发明者。最近,他作为架构师加入了 Microsoft .NET Developer and Platform Evangelism Group。Box 是以下三本畅销书的作者:Essential COM、Effective COM 和 Essential XML。他还撰写了一系列以审视 .NET 战略为内容、名为 Essential .NET 的书籍。在其早期的职业生涯中,Box 与他人共同创立了DevelopMentor Inc.。此公司是一家组件软件思想库,致力于为开发人员提供 COM、Java 和 XML 使用方面的培训。
作为一名广受欢迎的公众演说家,Box 以善于吸引世界各地的观众,拥有深邃的技术洞察力以及令人目瞪口呆的惊人之举而著称—一项惊人举措是在 2001 年于巴塞罗那举行的 TechEd 上,他在满是肥皂泡沫的浴缸里主持一个有关 SOAP 的讨论。在业余时间,Box 喜欢与 MSDN Magazine 的撰稿人同仁在 Band on the Runtime(它演奏有关各种编程主题的歌曲)打发时光。此外,Box 还负责创建了一个时尚栏目“与Don Boxers同行”。
Don Box 论 WSDL 的重要性 编辑本段回目录
Don Box
架构师,Microsoft Corporation
2002 年 2 月
摘要:对 Web 服务社区发出的个人呼吁,通过为基于脚本的 Web 服务编写 WSDL,让类型安全成为优先考虑的事情。(3 页打印页)
在观察各种 Internet 论坛的时候,明显感受到,整个开发社区仍然一直致力于如何将 Web 服务的结构集中在一起。到 2001 年底,新兴的 Web 服务行业的所有人都将注意力集中到了 SOAP 上。从 1999 年激烈的争论来看,这的确是一个了不起的进步。遗憾的是,仅 SOAP 一项是不够的,就像在它之前的 XML 不足以满足大家的要求一样。目前的 SOAP 假定各方都“仅仅知道”可以交换哪些消息以及它们如何联系在一起。尽管 SOAP 的一位原始作者(也就是鄙人)在不断地进行呼吁,但是 SOAP 仍然对于人们如何获知消息的内容没有提供任何帮助。我个人认为,标准化的发现过程和元数据格式的开发相对滞后,这将在 1999 和 2000 年的大部分时间内阻碍 SOAP 的发展。
抓住问题的本质
无论何时,只要有两方或者多方开展协作,就需要对协作的具体内容达成共识。首先,也是最重要的,所有协作方都需要理解协作的本质。即每一方能够从协作中获得哪些利益?每一方承担哪些责任和义务?对于人类之间的交互来说,这些问题十分重要,对于Web服务之间的交互或者软件集成,情况也大体如此。
某个特定协作的含义和条款可以被视作一个协定。在理想世界中,协定应该简洁、清晰地描述协定的语义,而不涉及其他任何东西。例如,如果我雇佣您修剪我的草坪,那么协定可能如下所示:
读者负责修剪作者的草坪,每周一次,报酬为 10 美元。
该协定的语义十分清晰。您修剪我的草坪。我付钱给您。简单、清楚。大功告成。
遗憾的是,美国的法律界通过理清如上所示的协定带来的混乱挣得大量财富。为什么是这样呢?因为协定一方或多方的目的并没有通过协定语言充分地反映。英语这种语言的多变性为解释留下了太多的空间。例如,如果有一个以上的读者要为我修剪草坪怎么办?我需要付钱给所有人还是仅仅付钱给您一个人(您知道这里的“您”是谁吗)?此外,我可以用加元付报酬吗?我可以欠帐并且每 10 年付一次钱吗?如果您的工作做得很糟糕又该如何?人类协定与软件协定一样,明确声明的意图越多,产生误解的机会就越少。
在 Web 服务领域中,有一种强烈的观点,认为协定应该以机读格式进行保存和传输。出于几种原因,机读格式要优于非机读格式。首先,采用机读格式的协定可以具有众多的功能,包括验证、加速和深层的工具集成。此外,如果使用机读格式,可以通过编写程序,将协定转换为任何已知格式。包括将协定转换为人类能够阅读的文档。而反过来则非如此;从正常文档中获取任何信息都不可避免地需要大量的人工干预。
采用机读协定显然是针对使用强类型编程语言(例如 Java、Delphi 或者 C++)的开发人员。遗憾的是,这种思想很难被某些编程人员所接受,特别是那些沉湎于大多数脚本语言的弱类型世界中的开发人员。但是,在整个世界都转变为 Perl 之前,我们需要采取一些行动,使强类型语言能够以一种自然的方式处理 Web 服务。
渴望帮助的呼声
多年来,我一直在努力使脚本开发人员相信机读协定格式具有各种优点。我曾经从技术角度与他们争论这个问题,但是没有任何用处。我也曾尝试从个人偏好 的角度来讨论这个问题,但是却无法让我自己走得那么远。所以,今天我要尝试一种不同的方法,从个人坦诚和自我否定的角度来谈这个问题:
您好,我的名字叫 Don。
我使用强类型语言。
我需要您的帮助。
我曾经试着只使用脚本语言。而且真的这样做了。
我必须承认,使用脚本让我感到很自由。它令人激动不已。甚至会令人上瘾。没想到,我真的上瘾了。
我的第一个问题是,我的程序有时候不能正常工作。尽管我努力了,有时我还是忘记为某个函数传递一个参数。而其他时候,我会向数学库传递类似 "XXVII" 或 "Twenty Seven" 这样的参数。我最大的问题是,我的拼写水平实在很糟糕,我发现,尽管很多脚本语言不区分大小写,但是它们好像对拼写十分敏感。
真正奇怪的事情是,在我测试脚本程序的时候,很多编程错误并不会显现出来。相反,总是在用户开始实际应用我的程序之后,这些错误才浮出水面。这让我感到很郁闷,尤其是在用户知道我家里的电话的时候。我想,我的妻子肯定比其它任何人都讨厌我使用脚本。她提醒我说,当我在 K&R C 工作的时候,我们经常会接到询问类似问题的许多电话;而当我转移到 ANSI C 之后,我们有了更多的睡眠时间。
我发现,通过戒酒和将每天花费在编程上的时间限制在 30 分钟之内以减轻疲劳,我可以大幅度降低程序错误的数量。遗憾的是,我总是发现我必须与其他编程人员一同工作,而他们中的很多人使用强类型语言。我试着让这些人将我的程序与他们的程序一起使用,但却总是出现问题。我编写的基于 Windows 的脚本可以被访问,但是只能通过 Idispatch 进行,我的 C++ 朋友看上去对此十分不满。他们会经常编写这些看上去十分奇怪的 IDL 文件,同时又经常窃窃私语,说一些有关我的不太友好的话。我曾经试着劝说他们像我一样转移到脚本语言,但是没有任何效果。我很快发现,C++ 的编程人员是世界上最聪明的编程人员,因为我遇到的每一位这样的人都会向我迅速表明这一点。
我必须承认,我很弱小。我最终屈服于强类型语言的力量。
如果编译器不帮助我在程序中检查出一些愚蠢的编程错误和拼写错误,我很难写出优秀的代码。
我不能无视使用 C++ 的同事对我的奚落。
所以现在,我需要得到脚本开发人员社区的帮助。
尽管多年以来,我一直在努力让 SOAP 成为程序在 Internet 上通讯的一种标准方法,但我发现原始的 SOAP 和 XML 与我现在正在使用的所有编译器不一致。我知道如果您给我机读协定的定义,那么我的编译器就可以帮助我与您的 Web 服务对话。能提供很多帮助。
如果您没有给我提供一个机读的协定,那么我将手工编写一个看上去很奇怪的 WSDL 文件,这简直要让我发疯了。我相信编写 WSDL 文件这个工作也会让您发疯的,但是我敢打赌,如果您写了一个 WSDL 并且将它放在您的 Web 站点上,那么其他任何人都可以使用它,并且没有人需要再次编写 WSDL。此外,如果您还同时编写了一个 10 行的 WS-Inspection 或者 DISCO 文件,那么我可以找到您的所有其他服务有关的信息。
我知道 WSDL 并不是十全十美。老天知道,在发布之前,我想方设法让它能够更完美一些。幸运的是,W3C 刚刚建立了一个 WSDL 工作组。它整体看上去像社区,但是拥有清理整顿的决心,就像 SOAP,在得到大量业内人士和专家的注意之后,便得到了整顿。实际上,SOAPBuilders 正于二月份进行一个 WSDL bake-off 会议,它必定会对此产生一些推动作用。
我还知道,为基于脚本的 Web 服务编写 WSDL 需要付出更多的劳动,但是辛苦您一个,将使成千上万的开发人员受益。仔细想想吧,如果您让他们的生活更加轻松,他们会对您所做的一切大加赞赏。
而且不再窃窃私语诋毁您。
相关链接:
WSDL 1.1 规范
SOAP v1.1 规范
Web 服务操作
Don Box 是一位著名的教育家,被公认为组件对象模型 (COM) 领域的权威人物;他是简单对象访问协议 (SOAP) 规范的制定者之一,也是“COM,我的爱”一词的发明者。最近,他作为架构师加入了 Microsoft .NET Developer and Platform Evangelism Group。Box 是以下三本畅销书的作者:Essential COM、Effective COM 和 Essential XML。他还撰写了一系列以审视 .NET 战略为内容、名为 Essential .NET 的书籍。在其早期的职业生涯中,Box 与他人共同创立了DevelopMentor Inc.。此公司是一家组件软件思想库,致力于���开发人员提供 COM、Java 和 XML 使用方面的培训。作为一名广受欢迎的公众演说家,Box 以善于吸引世界各地的观众,拥有深邃的技术洞察力以及令人目瞪口呆的惊人之举而著称—一项惊人举措是在 2001 年于巴塞罗那举行的 TechEd 上,他在满是肥皂泡沫的浴缸里主持一个有关 SOAP 的讨论。在业余时间,Box 喜欢与 MSDN Magazine 的撰稿人同仁在 Band on the Runtime(它演奏有关各种编程主题的歌曲)打发时光。此外,Box 还负责创建了一个时尚栏目“与Don Boxers同行”。