InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 霍泰稳 发布于 2007年7月2日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
.NET ,
REST ,
Java ,
Ruby ,
采访 ,
SOA
标签
SOAP

日前,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技术社区负责人刘丹和《重构与模式》的译者杨光等,由李锟负责全文的审校和润色。在这期间还得到了国内技术社区一些专家的支持,比如庄表伟、李琳骁、孟岩骆古道范凯、刘新生、刘江等。全程用时两个半月时间。

霍泰稳 是InfoQ中文站的联合创始人兼总编辑,有多年的软件开发经验和媒体从业经历。

RE: 发表人 Shaucle Friszart 发表于
:) 发表人 Ang Gao 发表于
公益性的行为值得大力支持! 发表人 刘江 图灵 发表于
Re: 公益性的行为值得大力支持! 发表人 焦 tony 发表于
Re: 公益性的行为值得大力支持! 发表人 Xie Fengbo 发表于
Re: 公益性的行为值得大力支持! 发表人 Wang Deo 发表于
  1. 返回顶部

    RE:

    发表人 Shaucle Friszart

    翻译的确很一般,不过还是比英文版好读多了.作者应该也辛苦了.


    读完此文后,下面是一些个人理解: (还望多PP)

    REST请求具有标准语义(通用的接口),这些语义能够被中间组件解释,主要在于其可见性.

    Cookie允许数据在没有充分表明其语义的情况下进行传递,从而无法被中间组件管理或解释。
    RPC式的SOAP也是.

    REST将约束放置在连接器的语义上(标准),从而(最大化)实现组件的独立性和可伸缩性等.
    而其他的架构风格则放置于组件的语义(非标准),而难以达到这些特性.

  2. 返回顶部

    :)

    发表人 Ang Gao

    比较佩服这样的博士论文,真正是在把技术实现上升到模型和规则,再来服务于技术开发者

  3. 返回顶部

    公益性的行为值得大力支持!

    发表人 刘江 图灵

    反正英文和译文都是公开的,大家尽可以多多提出意见,共同使这个译文越来越完美。

    可惜最近太忙了,不然真想从头到尾细校一次,用自己的出版背景,做点贡献。

  4. 返回顶部

    Re: 公益性的行为值得大力支持!

    发表人 焦 tony

    反正英文和译文都是公开的,大家尽可以多多提出意见,共同使这个译文越来越完美。

    可惜最近太忙了,不然真想从头到尾细校一次,用自己的出版背景,做点贡献。


    用出版背景能干啥?出个发行版?扯淡不是。前一句还可以说说,后面就不用了吧。

  5. 返回顶部

    Re: 公益性的行为值得大力支持!

    发表人 Xie Fengbo

    出个单行本也未尝不可!
    不过把http翻译成超文本转移协议就不太好接受了。不论从字面上意思表达上还是阅读习惯上我都觉得transfer翻译成传输会更好!
    类似的技术术语翻译还是值得考究的。

    反正英文和译文都是公开的,大家尽可以多多提出意见,共同使这个译文越来越完美。

    可惜最近太忙了,不然真想从头到尾细校一次,用自己的出版背景,做点贡献。


    用出版背景能干啥?出个发行版?扯淡不是。前一句还可以说说,后面就不用了吧。

  6. 返回顶部

    Re: 公益性的行为值得大力支持!

    发表人 Wang Deo

    您这。。。人家论文中本来就说HTTP不是设计成的传输协议,而是设计成的转换协议,你还要这样翻译。。。。。。

深度内容

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。