硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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:071237
用户头像

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

关注

评论

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

大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

Lansonli

airflow 9月月更

最近几周react面试遇到的题总结

beifeng1996

前端 React

2022react高频面试题有哪些

beifeng1996

前端 React

每日算法刷题Day1-隐式转换与精度丢失

timerring

算法题 9月月更

SQL是什么?它能做什么?

乌龟哥哥

9月月更

【云原生 | 从零开始学Kubernetes】七、Kubernetes的命名空间

泡泡

Docker 云计算 容器 云原生 9月月更

2022-09-24:以下go语言代码输出什么?A:1;B:3;C:13;D:7。 package main import ( “fmt“ “io/ioutil“ “net/

福大大架构师每日一题

golang 福大大 选择题

后端打工人必知必会21个MySQL表设计的经验准则

程序员小毕

MySQL 数据库 程序员 程序人生 Java 面试

【jvm】通过JDBC为例谈谈双亲委派模型的破坏

石臻臻的杂货铺

JVM 9月月更

基于微服务的应用性能监控方案

穿过生命散发芬芳

9月月更 微服务监控

如何将 SAP 电商云 Spartacus UI 部署到 tomcat 上运行

汪子熙

angular SAP commerce Spartacus 9月月更

面向深度神经网络的特定领域架构

俞凡

深度学习 架构 TPU

Javaweb核心之注解开发Servlet

楠羽

Servlet 笔记 9月月更

跟着卷卷龙一起学Camera--内存池浅析01

卷卷龙

ISP 9月月更

【编程基础】正则表达式基本使用及在Python中使用正则表达式匹配内容

迷彩

Python 正则表达式 9月月更

算法基础(四)| 前缀和算法及模板详解

timerring

算法 9月月更

清览题库--C语言程序设计第五版编程题解析(2)

吉师职业混子

9月月更

新书上市|听说你翻开数学书就眼睛疼?

图灵社区

数学 科普 教育

新书上市|听说你翻开数学书就眼睛疼?

图灵教育

数学 科普 教育

Identity and Access Management

冯亮

DevOps security AWS Cloud

在家学习如何保持高度自律

大数据搬运工

学习方法

工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(下)

宇宙之一粟

数据库 abap 查询语句 select 9月月更

架构实战营-模块一作业

Geek_92ba6f

深入了解之链接器与加载器

邱学喆

加载器 链接器 ELF文件结构

leetcode 669. Trim a Binary Search Tree 修剪二叉搜索树 (简单)

okokabcd

LeetCode 算法与数据结构

RocketMQ&kafka消息队列性能优劣对比

程序员小毕

程序员 面试 RocketMQ 后端 消息队列

如何在笔记本上安装openEuler 22.03 LTS

openEuler

开源 操作系统 openEuler 安装部署

闲着刷题

吉师职业混子

9月月更

Java服务异常排查定位大图

慕枫技术笔记

后端 9月月更

NestOS应用案例:容器化部署OpenStack

openEuler

架构 openEuler 开源操作系统 OpenStack

脑机接口照进现实:5位脑科学家带来的最新启示

脑极体

Thomas谈REST Describe & Compile_SOA_Stefan Tilkov_InfoQ精选文章