InfoQ

InfoQ

文章

我的书签

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

该内容已经被标记书签!

标记书签错误,请重试!

书评:《RESTful Web Services中文版》

作者 胡键 发布于 2008年6月4日

领域
架构 & 设计,
企业架构
主题
技术 ,
SOA ,
REST ,
Web服务 ,
架构

尽管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创建面向资源的服务

好书 发表人 Wang Chunshan 发表于
这个书评太CCTV了 发表人 Su Suave 发表于
在本书官方网站购买,可享受特别优惠。 发表人 Xu Han 发表于
这是在开玩笑么? 发表人 刘江 图灵 发表于
  1. 返回顶部

    好书

    发表人 Wang Chunshan

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

  2. 返回顶部

    这个书评太CCTV了

    发表人 Su Suave

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

  3. 返回顶部

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

    发表人 Xu Han

  4. 返回顶部

    这是在开玩笑么?

    发表人 刘江 图灵

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

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

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

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

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey 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

特性注入:成功三部曲

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