经典论文 — REST

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




牛人Roy Thomas Fielding的博士论文,此处可以访问到英文版,中文版可以google一下. Roy何许人也?HTTP1.0,1.1版本以及URI规范的主要作者,Apache的co-founder。在写这篇论文之前已经很牛了,笔者不明白的是这种档次牛人还要读博士,文凭有这么重要吗? 文中没有任何令人眼花的数学公式和统计图表,实际上是一篇描述URI,HTTP设计经验教训总结的文章。 文章的全称是“Architectural Styles and the Design of Network-based Software Architectures”,但是由于文中Roy提出的软件架构Representational State Transfer (REST)被广为传颂,因此人们更多的是提到REST。

笔者仔细读过之后,发现Roy的博士论文有些取巧。原文是2000年写成的,当时HTTP已设计Over了,因此文章应该是总结性的,而非前瞻性的,文章总结了REST架构风格在HTTP和URI规范设计中的应用。对于Roy这样的一线开发者以及标准制定者来说,总结自己做过的事情应该是轻车熟路,估计几个月就搞定了一个博士学位。

我们现在看到的很多经典协议的RFC其实教育意义并不像实际地位那么重要,例如TCP协议的RFC,笔者看的晕头晕脑。因为多数RFC仅仅罗列协议该如何实现,对于背后的设计方法往往不会提及,读者看到的往往是一个不知道从哪里变出来的状态机,有的状态机复杂到无法用图形表示而只好列一个表格,读者无法获得深入的背景。其实这和弯曲的文章一样,讨论往往更精彩。这也是Roy这篇文档的价值所在,这篇文档是学习HTTP, URI等协议标准的很好的一个注脚。

REST这篇文章与其说是Network领域还不如说是软件工程领域。Roy首先介绍了软件架构风格的概念,笔者的理解是,软件架构风格就是软件运行某个阶段的架构快照,属于UML中所谓动态模型的一部分。当然笔者的软工属于业余水平,专业人士不要笑话。Roy首先使用大量的篇幅介绍了现有的几种典型的软件架构风格,接着从零开始,一步一步的告诉读者设计者是如何参照现有的架构风格建立一个REST风格的Web架构。

首先从一无所有的空风格开始:

image












然后这边加加,那边加加,变出来了这么一个东东:

image













这个东东就是作者独创的REST. 对于低手来说,系统分析怎么做无从下手,对于中手,套用积累的经验具体问题具体分析。对于Roy这种真正意义上的Architect,把系统架构这一看来非形式化的东东,以近似形式化的方式表达了出来,思路和目的很清晰,尤其重要的一图是5.1.8风格约束小结部分的总结,下图将REST是如何继承发展现有的架构风格清晰的描述了出来。

image













文章的最后一章内容是将REST风格应用于URI和HTTP协议设计的一份经验总结。

描述了例如,transfer-encoding,chunk的引入原因等等。建议读者在看完HTTP协议后研读一下本文,一定会有新的收获。另外现在有个热门词汇“restful”应用系统,究其根源,也是源于本文。当然web应用其实也是没有办法符合restful的,例如cookie的引入等等。因此有人反思而challenge web service的现状,写了一本书《Restful Web Services》,可供参阅。

值得一提的是中文版的译者很用心,翻译质量不错,原文180多页,翻译之后剩下了80多页,看来老外的论文水分很大,也进一步表明了,方块字的表述能力强于拉丁字。翻译也有小的不足,例如:“6.4.3 Deployment of URI and HTTP/1.1-compliant Software”翻译为“开发顺从于URI和HTTP/1.1的软件”,我觉得“URI以及HTTP1.1兼容软件的部署”更妥,翻译者可以酌情修改。

(2个打分, 平均:3.00 / 5)

雁过留声

“经典论文 — REST”有6个回复

  1. 陈怀临 于 2010-02-17 11:57 下午

    叶子,你写起来是欢。一submit然后就上街陪爸妈逛街了。我在这里(midnight)为您打工–排版,整理。我键盘打的不慢。但确实不是打字员,排版出身。花了20分钟整你这篇文章。例如,你要fit你的文章进入一个好的category,而非default行业动感。以后弟兄们要submit不管的时候,要自己先preview一些,许多格式问题就可以知道了。您就知道陈首席好喊不好做:-)。。。高主编是低主编了:-)

  2. appleleaf 于 2010-02-18 5:53 下午

    首席,没想到给你带来这么多麻烦,category我会注意。但是wordpress编辑器并非完全所见即所得,那个文字绕图的问题,我费劲脑汁也没有搞定,你教教我,或者发个帖子教教大家,怎么样才能不让文字绕图,而在图的下面。

  3. 陈怀临 于 2010-02-18 7:46 下午

    我是通过用“HTML”模式。然后加

    .杰夫好像说过,可以用Windows Live Editor。就不需要这么麻烦了。

  4. appleleaf 于 2010-02-19 12:33 上午

    回来我也试试,我也是用的win live但是没用,我加了很多回车都被自动删掉了。

  5. loco 于 2010-12-08 9:16 下午

    对推荐牛文。。刚入门,就需要这些。。谢谢。

  6. loco 于 2010-12-08 9:16 下午

    多推荐牛文。。刚入门,也不知什么。什么人,什么文都不知道。。