您的位置:首页 > 其它

Web改变世界,我们以REST的方式创造Web

2008-07-21 22:29 597 查看
Web改变世界,我们以REST的方式创造Web
——《RESTful Web Services中文版》书评
作者:刘如鸿
突然之间不知道应该用怎样的标题来写这个书评,因为不管如何都会有“标题党”或者炒作嫌疑,继续说Web 2.0似乎有点无聊了,毕竟已经是无人不知、无人不晓的田地了。就如标题说到的,“Web改变世界,我们创造Web”,对于所有活跃的互联网架构师、产品经理,无疑是一个重要的使命。
大概我们都听说过REST,也知道应该为自己的站点提供RSS Feed或者Atom,再不济,总得知道如何订阅某网站或者博主的RSS吧。但是对于REST,我们了解的又有多少?从字面的翻译是表象状态转移(Representational State Transfer),但还是有些抽象,且先不用着急,这个也就是我介绍《RESTful Web Services中文版》的主要目的,简单地说REST是一种体系结构设计风格,而非某种标准。
通读本书,你会发现“可编程”、“面向资源架构(ROA)”是贯穿始终的,而采用REST的方式构建自己的Web服务意味着什么呢?其实很简单,就是提供一个可编程的、面向资源架构的Web站点。市面上有很多书在说如何写程序,如何使用哪些框架,如何建立数据库应用,更深一点的,则是探讨高性能、可伸缩性和可靠性的话题,我并不是说这些东西部重要,恰恰相反,这是构建Web应用的基础,也是一个合格的Web架构师需要的能力,但是除了让系统可以负载均衡、拥有更好的性能之外,架构师还需要什么呢?
OK,我们还会说Web 2.0的时代需要以用户为中心的优质用户体验,所以我们会采用Ajax,会让页面结构更加清晰有效,更加符合标准。除此之外呢,难道就没有需要考虑的?答案显然是否定的,为了让Web具备更大的想象力,我们需要让数据“流动起来”。我们都知道,Web 2.0是用户创造数据,而基于数据的应用则是Web 2.0的核心,所以我们也需要让数据表现拥有更大的灵活性,从而提供更强的服务能力。
基于此,有效合理地组织数据也成为了Web架构师的一个重要挑战,而REST也好,Mashup也罢,核心的理念无非是暴露数据和订阅数据,而如何优雅地提供服务,这正是REST核心的理念所在,而本书——《RESTful Web Services中文版》正是目前在这个领域的经典,它很清楚地阐述了ROA及其构建面向资源服务的最佳实践。
本书的前三章介绍了什么是RESTful的Web服务,重点探讨了可编程Web的特点,分类以及相关的实现技术,他将常见的Web服务架构分成三类:
l REST式、面向资源的架构
l RPC式架构
l REST-RPC混合架构
决定Web服务属于哪种分类的秘密在于以下两个问题的答案:
1. 服务的方法信息是否出现在HTTP方法中?
2. 服务的作用域信息是否出现在URI中?
两个极端的答案:全是和全否,分别对应REST式架构和RPC式架构。处于中间的则是REST-RPC混合架构。而对于大多应用而言,是采用这种混同的架构。
第四到第九章则是本书的核心,尤其是第四章“面向资源的架构”,更是本书的核心,它阐述了四个关键的概念:资源、命名(URI)、资源表象(Representation)和彼此之间的连通,与此同时介绍了ROA四个重要的属性:可寻址(addressability)、无状态(statelessness)、连通性(connectedness)以及统一接口。而第五章和第六章则探讨了如何设计一个只读和可读写的面向资源服务,而后面的章节则讨论了构建RESTful Web Services的最佳实践。
之后的章节介绍了Restful Web Services的具体应用,也许阅读过程中你会有些疑惑,其实大可不必如此,认真研读之后,你就会找到其中的微妙,说到大web services(我想大抵是说以SOAP为核心我们所熟知的web services)、Ajax及其框架,相信各位读者不会太陌生的,恰恰因为如此,更加值得去领会REST的精髓所在。
本书的大多示范代码是使用Ruby写的,这点毫不奇怪,Ruby on Rails是天生的REST最佳实现,也有部分的python代码,有读者会疑问,是不是出了RoR别无他途,恰恰相反,Java也好,PHP也罢,甚至有些人略微抱怨的ASP.NET。各位读者大可不用关心语言和平台的区别,虽然我们也必须承认不同的语言在实现上会有区别,但就如本文最开始提到的,REST只是一个体系结构的设计风格,就如SOA,相信没有人会去争执哪个语言更加适合实现SOA罢了,只是不同平台因为其设计初衷和风格的不同,你需要多做一些工作。
在LAMP上你可能需要使用mod_rewrite来帮你做一些工作,而Java,则看你采用的具体框架了,最后说ASP.NET,比较合理的做法是通过一些isapi(如isapi_rewrite)来帮助你重写URL,从而实现REST风格的服务。
如果刻意地吹捧一本书,是有失公道的,就如刚才所说,如果说本书还缺少哪些,则是应该多介绍一些其他平台,如PHP和ASP.NET的框架,但是不管如何,相对于市场上寥寥甚少的REST图书市场而言,本书无疑是值得一读。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: