写点什么

李锟谈 Fielding 博士 REST 论文中文版发布

  • 2007-07-02
  • 本文字数:1284 字

    阅读完需:约 4 分钟

日前,Roy Thomas Fielding 博士关于 REST 的论文 Architectural Styles and the Design of Network-based Software Architectures 中文版(《架构风格与基于网络的软件架构设计》)正式对外发布。在这个2000 年所著的论文中,首次系统阐述了REST 的架构风格和设计思想,对理解Web 架构和HTTP、URI 等标准背后的原理非常有帮助。InfoQ 中文站编辑霍太稳就此采访了主导此次公益性翻译的 Ajaxcn.org 网站站长李锟

Fielding 博士是 HTTP 和 URI 等 Web 架构标准的主要设计者,也是 Apache HTTP 服务器的主要设计者,他的这篇论文是 Web 发展史上的一个重要的技术文献。深入理解 REST 等 Web 架构背后的工作原理,对于开发者设计和构建高效的 Web 应用,这也是李锟决定发起这个翻译项目的主要原因:

翻译这篇论文就是为了将 REST 的思想介绍到中国。我们翻译了《Ajax 模式与最佳实践》,这是一本关于 REST 架构设计的非常好的书籍,内容非常深入。但是如果不懂 REST,就难以理解这本书中介绍的架构。而这本书的作者对于 REST 的来龙去脉也语焉不详,似乎认为每个读者都已经读过了 Fielding 的论文,对于母语不是英语的中国读者而言,这个假设是不成立的。而 Fielding 的论文阅读的难度非常大,如果不翻译过来,普通的读者肯定无法读懂(这个判断是客观的,因为我们自己也是在初稿翻译出来后,又费了很大功夫才真正理解了这篇论文)。为了帮助这本书的读者,我启动了这个公益性的翻译项目。

翻译的过程也是一次学习的过程,在这篇论文的翻译过程中,李锟充分理解了 REST 的各种架构约束,例如通用接口、操作语义的可见性、支持大粒度的数据通信等等。也理解了 HTTP 和 URI 的正确的使用方式,因为 HTTP 和 URI 正是基于 REST 的思想设计出来的。所有 HTTP 的扩展或者使用 HTTP 的 Web 应用,都应该与 REST 的各种架构约束相匹配,否则肯定无法在 Web 上面取得成功。

在过去的 7 年中,Web 技术的发展验证了本论文所主要阐述的 REST 技术的有效性,李锟举例说:

一个典型的反例就是 SOAP,尽管它在企业应用中取得了一些成功,并且被某些人吹嘘的天花乱坠,但是在 Web 应用中,却几乎没有人愿意使用 SOAP。我的判断是,主要的原因在于 SOAP 违反了 REST 的通用接口和语义可见性等架构约束。它仅仅是将 HTTP 作为一种传输协议来使用的,这种将 HTTP 仅仅作为一种能够穿越防火墙的传输协议来使用的扩展不只 SOAP。

但李锟表示虽然理解 REST 对 Web 开发非常重要,这一技术在国内的应用现状却并不乐观:

REST 应用目前在国内刚刚萌芽,还谈不上有什么应用。在 REST 的思想传入国内之前,国内绝大多数开发者并不理解 HTTP 和 URI 是用来做什么的,当然也包括我在内。

这篇论文由李锟和他的几个朋友共同翻译,如 91yee 翻译社区的负责人廖志刚、 Matrix 技术社区负责人刘丹和《重构与模式》的译者杨光等,由李锟负责全文的审校和润色。在这期间还得到了国内技术社区一些专家的支持,比如庄表伟、李琳骁、孟岩骆古道范凯、刘新生、刘江等。全程用时两个半月时间。

Update:

本论文于 2013 年被李锟重新翻译,新版经马国耀审校后于 2014 年发布于 InfoQ 中文站:查看新版论文译本

2007-07-02 21:2614674

评论 1 条评论

发布
用户头像
thx
2020-10-09 11:11
回复
没有更多了
发现更多内容

写给互联网工程师的5G书 | 3. 基础架构

俞凡

架构 5G 网络

JavaScript进阶(三)模块化

Augus

JavaScript 9月日更

【Flutter 专题】42 图解页面截屏与本地保存小尝试

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

模块八作业:设计消息队列存储消息数据的MySQL表格

Felix

【优化技术专题】「温故而知新」基于Quartz系列的任务调度框架的动态化任务实现分析

码界西柚

Java quartz 任务调度 9月日更

产品分析:谁是利益相关者?

石云升

产品经理 9月日更

Redis核心原理与实践--列表实现原理之quicklist结构

binecy

redis 数据结构 原理分析

Opus从入门到精通(四)Opus解码程序实现

轻口味

android 音视频 9月日更

模块八作业

NewBranSTONE

架构实战营

数据结构与算法:缓存置换算法

正向成长

LRU 置换算法

autojs自动化框架简介

IT蜗壳-Tango

9月日更

小小感悟

Nydia

什么是数据粒度

奔向架构师

数据仓库 9月日更

中秋节如何拍月亮

卢卡多多

9月日更

k8s deployment controller源码分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

Scrum Patterns:昨日天气(译)

Bruce Talk

敏捷 译文 Agile Scrum Patterns

要养成编写有语义的HTML的习惯

Regan Yue

html 大前端 9月日更

linux之fping命令

入门小站

Linux

华强买瓜•程序员版

三分恶

程序员

网络攻防学习笔记 Day140

穿过生命散发芬芳

9月日更 网站安全基础

【Vuex 源码学习】第六篇 - Vuex 的模块收集

Brave

源码 vuex 9月日更

写给互联网工程师的5G书 | 2. 无线传输

俞凡

架构 5G

利用 Python 分析了一波月饼,我得出的结论是?

JackTian

Python 数据分析 数据可视化 中秋 月饼

【LeetCode】回文链表Java题解

Albert

算法 LeetCode 9月日更

Prometheus 2.22.0 新特性

耳东@Erdong

Prometheus 9月日更

【LeetCode】括号的最大嵌套深度Java题解

Albert

算法 LeetCode 9月日更

CyclicBarrier类在性能测试中应用

FunTester

线程 多线程 性能测试 线程安全 FunTester

谈 C++17 里的 Observer 模式 - 补

hedzr

c++ 设计模式 观察者模式 Design Patterns c++17

Linux初体验:Linux操作系统

在即

9月日更

Java“锁”事

中原银行

Java 中原银行

在线JSON转jsdoc工具

入门小站

工具

李锟谈Fielding博士REST论文中文版发布_Java_霍太稳@极客邦科技_InfoQ精选文章