写点什么

Thomas 谈 REST Describe & Compile

  • 2007-06-21
  • 本文字数:1654 字

    阅读完需:约 5 分钟

Thomas Steiner 已经发布了 REST Describe & Compile 工具的 0.3 版。这个工具可根据现有的 REST 消息构建出 WADL 描述,并可进一步生成多种语言的代码。这次的新版本增加了生成 Java 代码的功能(之前已可生成 PHP、Ruby、Python 和 C#代码)。要想对 REST Describe & Compile 工具有个初步了解,你可以试试它的在线版本;你也可以下载它的源码。这是一个Java 程序,其中使用了 Google Web Toolkit

Thomas 跟 InfoQ 通过 E-mail 进行了一次简短的问答,以解答关于方法和工具使用上的一些最显著的问题。

InfoQ:你能不能给我们作一个简要的概括——用两句话介绍 REST Describe & Compile?

Thomas Steiner (TS):WADL 跟 REST 的关系等同于 WSDL 跟 SOAP 的关系。WSDL 有 Axis 和 WSDL2Java 工具,REST 则有 REST Describe & Compile,它是一个很酷的 WADL 生成工具,以及 WADL 到任何语言的代码生成工具。差不多是任何语言 ;-)

InfoQ:这跟 Google 有什么关系?

TS:这是我在 Google 做的毕业设计,不过它不是正式的 Google 产品。我在实习期间是作为 Google 的临时员工工作,最近又跟 Google 签了一份从 10 月份开始的全职工作合同。

InfoQ:你是打算即时生成服务描述,然后用“契约先行”的方式来使用它们?

TS:只要在头脑中构想出 URI 的结构,你就可以用“事例驱动”的方式来构建服务。然后不费吹灰之力就得到 WADL 描述和代码。将来你的服务打算支持哪些请求,你就准备一组事例,把它们丢给工具,就可以得到 WADL 和任何语言的客户端代码。

InfoQ:你对于认为代码生成是罪恶的观点看法如何?

TS

/**
\* 本文件由 REST Compile 自动生成。
\* 你不应该修改本文件,除非你知道自己在做什么。任何修改
\* 都有可能造成严重破坏,甚至摧毁你的电脑。
*/

除此之外,代码生成让你能够非常快速地对契约更改作出响应。修改服务描述,运行代码生成器,你的工作就完成了。代码生成有助于全面保证一致性,当你只需要维护生成器而不用动任何一个文件时,维护也变得更简单。这跟做爱很像,只有当你真正享受过之后你才能说出好在哪里。

InfoQ:你对“REST 是否需要一个描述语言”这场争论的观点如何?

TS:老实说,我觉得大家对于什么是 REST,什么是 RESTful,什么是用 REST 伪装的 WS-*,太过庸人自扰了。我觉得问题不在于 HTTP 方法是如何映射到 CRUD 的,对这些问题大家已经讨论了很久。我更同意 Nelson Minar 的观点:“怎么行得通就怎么做”。没有什么 REST 不 REST 的做事方式,只有一家企业的做事方式。有时候一家企业被另一家买下了,突然间企业里就有了两种做事方式。看看 Yahoo!、 Flickr 和 Del.icio.us 就知道了。他们的 API 都很棒,也确实运作得很好。有些 API 完全不需要身份认证,另一些则强制 HTTP 认证,而大多数服务都有某种形式的令牌参数(Token Parameter)。问题在于没有一种通用的机器能识别的方式来描述这些东西。WADL 可能跟 WSDL 描述服务的方式很相似,但谁又在乎呢?规范差不多 14 页那么长,你可以读它,理解它,甚至真的实现它。Marc Nottingham 做了一个 WADL 到 HTML 的转换工具,Marc Hadley 也有一个 WADL 工具(现在属于 SUN),终于,现在有了 REST Describe & Compile。可能 WADL 不是 Web Service 的万能药,但它的用处是实实在在的。它让你能够完成你的工作,管它是不是纯粹的 REST,是不是 POX,是不是 RESTful,或者其它什么东西,能用就行。

InfoQ:你对未来的版本已经有什么计划了吗?

TS:目前程序完全在客户端运行。这样做有很多优点,但是,长远来说,这限制了它的能力。可能有一天会出现一个 WADL2Anything 的在线服务,大家向它发出 WADL 请求就可以传回生成的代码。人们应该能够把他们的 WADL 存储在网上,让其他人免费使用。就像是 Web Service 版的 CDDB(译者注:CDDB 是提供唱片资料的网站)。这是比较接近幻想的计划,首先要完成的还是一些实在的目标:提高代码生成能力,增加对 XML Schema 的支持,改进语法高亮,让 REST Compile 模块支持更多更多的语言……

InfoQ:非常感谢!

查看英文原文: REST Describe and Compile

2007-06-21 02:07975
用户头像

发布了 225 篇内容, 共 66.0 次阅读, 收获喜欢 51 次。

关注

评论

发布
暂无评论
发现更多内容

专属云资源包计算规格探秘

天翼云开发者社区

设计消息队列存储消息数据的 MySQL 表格

唐尤华

架构实战营

教你三步实现CDH到星环TDH的平滑迁移

星环科技

国产数据库

使用 Amazon Cloud WAN 构建您的全球网络

亚马逊云科技 (Amazon Web Services)

Builder 专栏

整机生产制造头部厂商雷神科技加入龙蜥社区

OpenAnolis小助手

Linux 开源 整机

天翼云分布式缓存服务(Redis)的应用场景(干货)

天翼云开发者社区

61%!产品+渠道创新 蒙牛冰淇淋业绩收录有史高增长

科技新消息

“敏捷项目比传统项目快”这个说法对吗?

优秀

项目管理 低代码开发

天翼云分布式缓存服务(Redis)的几个核心概念

天翼云开发者社区

制造业企业数据平台建设最佳实践分享

华为云开发者联盟

数字化转型 数据平台 制造业 华为工业云平台 数据应用

PolarDB-X 正式发布2.1.0版本,Paxos 重磅开源

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB

墨天轮

数据库 TcaplusDB 国产数据库

芝士就是力量!蒙牛2021年报笑出大大的CHEESE

科技新消息

自动化运维发展趋势以及好用工具推荐

行云管家

运维 IT运维 自动化运维

【网络安全】网络安全堡垒机多少钱?有什么用?

行云管家

网络安全 信息安全 数据安全 堡垒机 企业安全

星环科技TDH基于Overlay网络架构为数据安全保驾护航

星环科技

数据库

蒙牛2021年报:数智化大脑为乳业插上腾飞翅膀

科技新消息

java培训浅谈程序员怎么避免面试过程中碰壁

@零度

面试 JAVA开发

领域驱动设计入门与实践[下]

LigaAI

团队管理 DDD 领域驱动设计思想 LigaAI

天翼云新一代V5云主机,Kvm之生,Xen之死!

天翼云开发者社区

把一整个生态圈藏进大沙漠 看蒙牛如何在每一滴奶中藏进玄机

科技新消息

夯实领军者地位 奶酪业务协同发展领先赛道

科技新消息

Linux 管道操作符详解

CRMEB

龙蜥社区&龙蜥开发者获CSDN 2021年度技术影响力「年度开源项目」奖和「年度社区之星」

OpenAnolis小助手

开发者 开源项目 龙蜥社区 年度影响力 社区之星

人工智能融合赋能平台,赋能智慧城市智能化升级

脑极体

每周更新 | Verilog测试用例及波形展示图功能上线

ShowMeBug

打造中国优质奶源基地 筑牢高质量发展基石

科技新消息

TypeScript 之 any:哪里可以用?哪里不能用?

杨成功

4月月更

再论ORACLE上云通用技术方案

天翼云开发者社区

爆款国民冰淇淋原来是这样“凝冻”出来的

科技新消息

易观分析:海外业务亮眼,研发+IP运营助力中手游持续增长

易观分析

IP 中手游

Thomas谈REST Describe & Compile_SOA_Stefan Tilkov_InfoQ精选文章