InfoQ

文章

书评:《RESTful Web Services中文版》

作者 胡键 发布于 2008年6月4日 下午7时44分

社区
Architecture,
SOA
主题
技术,
Web服务,
REST

尽管REST在国内技术领域已算不上什么新鲜名词了,但是关于REST的中文资料并不多见。到目前为止,好像也就只有Roy Thomas Fielding博士论文的中译版。随着《RESTful Web Services中文版》的即将面世,这种REST中文资料奇缺的局面有望得到改善,该书也是目前国内出版的以REST为主题的第一本书籍。鉴于本书的原版也才于2007年5月出版,短短一年间就推出了中文版,不得不由人感叹国内出版社的效率。此外,由于出版商O'Reilly一贯的口碑,本书的质量自然令人期待。

《RESTful Web Services》全书对以下3个问题进行了回答:

  • 什么是RESTful服务
  • 如何设计和实现RESTful服务
  • RESTful服务的应用

什么是RESTful服务

这是本书前3章的主题。在这部分,作者从客户端的角度对Web服务进行了介绍,并指出了RESTful服务的特别之处。

在本书的第一章,《Programmable Web及其分类》。作者将常见的Web服务架构分成3类:

  • REST式、面向资源的架构
  • RPC式架构
  • REST-RPC混合架构

决定Web服务属于哪种分类的秘密在于以下两个问题的答案:

  1. 服务的方法信息是否出现在HTTP方法中?
  2. 服务的作用域信息是否出现在URI中?

两个极端的答案:全是和全否,分别对应REST式架构和RPC式架构。处于中间的则是REST-RPC混合架构。

对于Programmable Web一词感觉陌生的读者也不必为此介怀,这是一种按Web使用者分类的方式。顾名思义,Programmable Web是指供程序使用的Web,与之对应的另一词Human Web,其使用者即为人类。但是严格的说,人类也是通过程序(如浏览器)来对Web进行浏览,因此,Human Web实际是Programmable Web的特例。

本部分的其他两章分别对Web服务客户端的编写和RESTful服务特点进行了介绍,并举例说明了REST的一些重要概念:资源、表示、统一接口。

如何设计和实现RESTful服务

回答这个问题的第4~9章是本书的核心,而第4章《面向资源的架构(Resource-Oriented-Architecture,ROA)》则是该部分的核心。

提出ROA的目的,作者在前言中已经说得非常清楚:

我们通过制定这个面向资源的架构(ROA),把来自坊间传言(folklore)的经验提炼为Web服务设计的最佳实践(best practices)。

作者这样描述ROA:

ROA是一种把实际问题转换成REST式Web服务的方法:它令URI、HTTP和XML具有跟其他Web应用一样的工作方式,令人程序员们容易使用它。

在这一章中,作者介绍了ROA的功能组成:

  • 资源
  • 资源名称
  • 资源的表示
  • 资源间的连接

以及ROA的功能特性:

  • 可寻址性
  • 无状态性
  • 连通性
  • 统一接口

本部分的后续章节谈到了ROA的实践,分别介绍了面向资源的服务设计、服务实现、REST和ROA的最佳实践,以及服务的技术构件。

RESTful服务的应用

作为本书的最后部分,第10~12章以每章一个专题的形式介绍了RESTful服务的应用。这些专题是:

  • 面向资源架构 VS 大Web服务
  • 将Ajax作为REST客户端
  • REST式服务框架

对于第10章《面向资源架构 VS 大Web服务》,你或许会感到有些奇怪:只不过是架构的比较罢了,怎么算得上是专题应用?如果你认真地读过本书的前言,应该会看出些端倪。本章所讲的内容正是“应用REST”的前提:如何推荐REST?

结语

作为一本平民化的REST书籍,本书并没有仅仅停留在对一些实际问题的解答上。理论联系实践是对本书最好的概括。围绕作者提出的ROA,本书向读者展示了如何应用REST原则设计Web服务的方法,并试图在此之上对一些广为流传的经验教训加以总结、提升。对于目前REST缺乏公认最佳实践的现状,不失为一次有意义的尝试。

相信本书中文版的推出会对REST在国内进一步的发展起到促进作用。关于本书中文版的详细信息,请访问中文版的官方网站


博文视点还授权InfoQ中文站独家为大家提供额外的样章进行试读:欢迎下载第3章《REST式服务有什么不同》

相关阅读用Restlet创建面向资源的服务

4 条回复

回复

好书 发表人 Jack Wang 发表于 2008年6月4日 下午11时44分
这个书评太CCTV了 发表人 Suave Su 发表于 2008年6月14日 下午12时19分
在本书官方网站购买,可享受特别优惠。 发表人 Han Xu 发表于 2008年6月16日 上午6时45分
这是在开玩笑么? 发表人 图灵 刘江 发表于 2008年6月17日 上午10时19分
  1. 返回顶部

    好书

    2008年6月4日 下午11时44分 发表人 Jack Wang

    已经拿到手了,粗略翻了下,内容真的很好。不过大部分示例用ruby表达,如果有ruby基础,阅读体验会更好些。

  2. 返回顶部

    这个书评太CCTV了

    2008年6月14日 下午12时19分 发表人 Suave Su

    不管怎样准备买来看看,书评确实内容有点单薄

  3. 返回顶部

    在本书官方网站购买,可享受特别优惠。

    2008年6月16日 上午6时45分 发表人 Han Xu

  4. 返回顶部

    这是在开玩笑么?

    2008年6月17日 上午10时19分 发表人 图灵 刘江

    “短短一年间就推出了中文版,不得不由人感叹国内出版社的效率。”唉,最近审稿头痛,叹口气。

    不知大家发现没有,许多好书的台湾版反而比我们出得早。

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。