REST实战(中文版)
基本信息
- 作者: Jim Webber Savas Parastatidis Ian Robinson [作译者介绍]
- 译者: 李锟 俞黎敏 马钧 崔毅
- 出版社:东南大学出版社
- ISBN:9787564129651
- 上架时间:2011-10-18
- 出版日期:2011 年9月
- 开本:16开
- 页码:388
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > 网络编程 > 综合
内容简介回到顶部↑
为何典型的企业项目无法像你为web所开发的项目那样运行得如此平滑?对于建造分布式和企业级的应用来说,rest架构风格真的提供了一个可行的替代选择吗?
在这本富有洞察力的书中,三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业逐渐成长为全球化的企业,使用这些web技术和模式来解决这家公司在成长过程中产生的各种需求。
为了应用集成而学习基本的web技术
使用http和web的基础架构来建造可伸缩的、具有容错性的企业应用
发现创建、读取、更新、删除(crud)模式,以便操作资源
建造rest风格的服务,在其中使用超媒体来为状态迁移建模并描述业务协议
学习如何使得基于web的解决方案变得安全和可互操作
使用atom联合格式为事件驱动的计算扩展集成模式,并且使用atompub来实现多方集成
理解语义网将会如何影响系统的设计
在这本富有洞察力的书中,三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业逐渐成长为全球化的企业,使用这些web技术和模式来解决这家公司在成长过程中产生的各种需求。
为了应用集成而学习基本的web技术
使用http和web的基础架构来建造可伸缩的、具有容错性的企业应用
发现创建、读取、更新、删除(crud)模式,以便操作资源
建造rest风格的服务,在其中使用超媒体来为状态迁移建模并描述业务协议
学习如何使得基于web的解决方案变得安全和可互操作
使用atom联合格式为事件驱动的计算扩展集成模式,并且使用atompub来实现多方集成
理解语义网将会如何影响系统的设计
作译者回到顶部↑
本书提供作译者介绍
Jim Webber,ThoughtWorks公司的一位技术主管,工作于可信赖的分布式系统。
Savas Parastatidis,微软公司的一位架构师,工作于大规模的数据密集型和计算密集型应用。
Ian Robinson,ThoughtWorks公司的首席咨询顾问,帮助客户从奠基阶段到运营阶段创建可持续的面向服务开发能力。
.. << 查看详细
Savas Parastatidis,微软公司的一位架构师,工作于大规模的数据密集型和计算密集型应用。
Ian Robinson,ThoughtWorks公司的首席咨询顾问,帮助客户从奠基阶段到运营阶段创建可持续的面向服务开发能力。
.. << 查看详细
目录回到顶部↑
《rest实战(中文版)》
序言
前言
第1章将web作为建造分布式系统的平台
web的架构
从资源的角度思考
从web架构到rest架构风格
web作为一个应用平台
web的友好性和richardson的成熟度模型
起航
第2章介绍restbucks:如何以web风格获得一杯咖啡
restbucks:一家有着全球抱负的小咖啡店
web现身了
第3章基础的web集成
减肥的感觉真好!
一个简单的咖啡订购系统
uri模板
uri隧道技术
pox:基于http之上的普通老式xml
开始行动
序言
前言
第1章将web作为建造分布式系统的平台
web的架构
从资源的角度思考
从web架构到rest架构风格
web作为一个应用平台
web的友好性和richardson的成熟度模型
起航
第2章介绍restbucks:如何以web风格获得一杯咖啡
restbucks:一家有着全球抱负的小咖啡店
web现身了
第3章基础的web集成
减肥的感觉真好!
一个简单的咖啡订购系统
uri模板
uri隧道技术
pox:基于http之上的普通老式xml
开始行动
译者序回到顶部↑
今天,Web(万维网)已经是无处不在。对于90后一代人来说,上网简直就像阳光、空气和水一样,是生命中必不可少的部分。
Web取得了巨大的成功,其原因是多方面的:技术层面、社会层面、经济层面、文化层面等等。早在十几年前,有一群人想要总结清楚Web取得了巨大成功,技术层面的原因究竟是什么?
经过深入细致的分与析之后,,他们将Web取得成功在技术层面的原因总结为一种崭新的分布式应用架构风格(architectural style)——REST(表述性状态转移)。简单来说,Web的架构风格就是REST,所有希望在Web生态系统中繁荣发展的技术,都应该符合REST这种架构风格的要求。
事实上,HTTP 1.1规范正是基于REST架构风格的指导原理来设计的,其目标是实现符合REST风格的分布式应用架构。HTTP 1.1规范(RFC 2616)在1999年6月正式发布。次年(2000年),HTTP 1.1规范的主要设计者Roy Fielding在他的博士论文《Architectural Styles and the Design Of Network-basedS of tware Architectures》(中文版名为《架构风格与基于网络的软件架构设计》)中,系统地阐述了REST这种架构风格的推导过程和详细理念。
架构风格这个术语,对于国内的软件开发者来说,感觉非常陌生。架构风格与某种具体的架构相比,是一个更加抽象的概念,它其实是一种研究和评价软件架构设计的方法。我来做个类比:在建筑学中也存在很多种类的架构风格,每一种架构风格会对建筑的具体样式(架构)产生很多约束。建造一座建筑,一定要考虑与所处环境的架构风格相融合,而不是相冲突。试想一下,假如在苏州著名的拙政园(代表样式为小桥流水、移步换景的窗户,表达出天人合一的理念)旁边建造一座西方哥特式(代表样式为直刺天空的尖顶,表达出人定胜天的理念)的大教堂,看起来将会是何等的突兀。假如在苏州园林周围建造了大量与该地的传统架构风格完全冲突的新式建筑,估计不会有人再有兴趣到苏州去游玩了。
大致了解了建筑学中的架构风格,我们再来看看计算机软件应用中的架构风格,特别是分布式应用的架构风格。
除了REST之外,另外两种常见的分布式应用架构风格为DO(分布式对象)和RPC(远程过程调用)。这两种架构风格在企业应用的开发中得到了广泛的应用,然而,Web架构的设计者们却有意避免采用这两种架构风格。主要的原因是运行Web应用的互联网环境,与运行企业应用的企业内网环境有很大的差别。那么,互联网环境有哪些独有的特点呢?
(1)可伸缩性要求难以预测和无法控制:一个Web应用的并发访问量是开发者难以预测和无法控制的。
(2)安全性要求难以预测和无法控制:一个Web应用所接受的请求格式是开发者难以预测和无法控制的,有可能出现大量恶意构造的请求格式。
(3)松耦合至关重要:因为存在着大量异构的系统,必须要追求最大限度的松耦合。
(4)简单性至关重要:不可引入复杂的编程模型,必须降低开发者开发Web应用的门槛。
软件应用所处的运行环境会对其架构设计产生巨大影响。设计软件应用的架构,一定要深入考虑软件所处的运行环境。脱离软件所处的运行环境来比较不同架构之间的优劣是没有意义的。
REST这种架构风格正是为面向互联网的Web应用量身定制的。它由一组架构约束组成:
(1)客户-服务器
(2)无状态
(3)缓存
(4)统一接口
(5)分层系统
(6)按需代码(可选)
这些架构约束正是互联网环境对于分布式应用架构设计所产生的外在约束。对于这些架构约束的详细描述,读者可以参考Fielding的博土论文的中文版。
Web取得了巨大的成功,其原因是多方面的:技术层面、社会层面、经济层面、文化层面等等。早在十几年前,有一群人想要总结清楚Web取得了巨大成功,技术层面的原因究竟是什么?
经过深入细致的分与析之后,,他们将Web取得成功在技术层面的原因总结为一种崭新的分布式应用架构风格(architectural style)——REST(表述性状态转移)。简单来说,Web的架构风格就是REST,所有希望在Web生态系统中繁荣发展的技术,都应该符合REST这种架构风格的要求。
事实上,HTTP 1.1规范正是基于REST架构风格的指导原理来设计的,其目标是实现符合REST风格的分布式应用架构。HTTP 1.1规范(RFC 2616)在1999年6月正式发布。次年(2000年),HTTP 1.1规范的主要设计者Roy Fielding在他的博士论文《Architectural Styles and the Design Of Network-basedS of tware Architectures》(中文版名为《架构风格与基于网络的软件架构设计》)中,系统地阐述了REST这种架构风格的推导过程和详细理念。
架构风格这个术语,对于国内的软件开发者来说,感觉非常陌生。架构风格与某种具体的架构相比,是一个更加抽象的概念,它其实是一种研究和评价软件架构设计的方法。我来做个类比:在建筑学中也存在很多种类的架构风格,每一种架构风格会对建筑的具体样式(架构)产生很多约束。建造一座建筑,一定要考虑与所处环境的架构风格相融合,而不是相冲突。试想一下,假如在苏州著名的拙政园(代表样式为小桥流水、移步换景的窗户,表达出天人合一的理念)旁边建造一座西方哥特式(代表样式为直刺天空的尖顶,表达出人定胜天的理念)的大教堂,看起来将会是何等的突兀。假如在苏州园林周围建造了大量与该地的传统架构风格完全冲突的新式建筑,估计不会有人再有兴趣到苏州去游玩了。
大致了解了建筑学中的架构风格,我们再来看看计算机软件应用中的架构风格,特别是分布式应用的架构风格。
除了REST之外,另外两种常见的分布式应用架构风格为DO(分布式对象)和RPC(远程过程调用)。这两种架构风格在企业应用的开发中得到了广泛的应用,然而,Web架构的设计者们却有意避免采用这两种架构风格。主要的原因是运行Web应用的互联网环境,与运行企业应用的企业内网环境有很大的差别。那么,互联网环境有哪些独有的特点呢?
(1)可伸缩性要求难以预测和无法控制:一个Web应用的并发访问量是开发者难以预测和无法控制的。
(2)安全性要求难以预测和无法控制:一个Web应用所接受的请求格式是开发者难以预测和无法控制的,有可能出现大量恶意构造的请求格式。
(3)松耦合至关重要:因为存在着大量异构的系统,必须要追求最大限度的松耦合。
(4)简单性至关重要:不可引入复杂的编程模型,必须降低开发者开发Web应用的门槛。
软件应用所处的运行环境会对其架构设计产生巨大影响。设计软件应用的架构,一定要深入考虑软件所处的运行环境。脱离软件所处的运行环境来比较不同架构之间的优劣是没有意义的。
REST这种架构风格正是为面向互联网的Web应用量身定制的。它由一组架构约束组成:
(1)客户-服务器
(2)无状态
(3)缓存
(4)统一接口
(5)分层系统
(6)按需代码(可选)
这些架构约束正是互联网环境对于分布式应用架构设计所产生的外在约束。对于这些架构约束的详细描述,读者可以参考Fielding的博土论文的中文版。
前言回到顶部↑
Web已经彻底变革了我们访问和共享信息的方式。仅仅在20年中,Web就成为了交付和消费各种服务的全球化平台。
Web的巨大渗透力和普遍存在,来源于它将架构的简单性和一小组被广泛接受的技术组合在一起的方式。Web为那些拥抱它的简单信条的系统提供了可伸缩性、安全性和可靠性,而它仅仅使用一些日常的工具和平台就实现了这些目标。
我们写这本书的目的有两个部分:揭开Web作为一个应用平台的神秘面纱,以及展示如何将Web架构应用于常见的企业计算问题。贯穿本书的章节,我们特别重视展示不仅在企业边界之外,而且在企业边界之内服务也能够利用Web的架构。我们的愿景是:建造一个可以由其他系统使用的开放的信息平台,它避开集成(integration),而支持组成(composition),然而仍然实现了有价值的业务行为。这是一个分布式的、超媒体驱动的应用平台。
为了理解本书,你并不需要很清楚REST或HTTP的细节。我们将带你从简单的集成一直到复杂的业务协议,所有内容都有详细的代码范例,你能够根据自己的需要加以改写。我是否应该阅读这本书?
就像我们中的大多数人,你可能已经建造了一些应用,而这些应用已经成为了Web的一部分,并且你可能已经使用过了一些看起来相当有用的Web开发工具和模式。然后你转去处理典型的企业问题,想知道为何它不能变得像Web应用一样令人感到愉悦。
你已经看到了Web的好处,并且你开始质疑在你们的企业中使用的昂贵的中间件是否得到了很好的投资回报,或者它的可伸缩性是否足以满足你们的用户的要求。
你可能是一个想要更详细地理解Web的原理并且喜欢通过代码范例来学习的开发者。你已经听到过一些术语,例如URl、HTTP和Atom,并且想要学习更多的术语,包括你能够从这个流行的编程平台(即Web)得到的支持类型。
你可能是一个热心人,已经听说过REST,急切地想要知道它究竟说的是什么。你想要学习更多关于“超媒体”和REST架构风格的知识,这样你就能够建造面向资源的系统,并且在Web之上实现复杂的业务协议。
对于上述场景,这本书一定会有帮助。
我是否应该忽略这本书?
如果你正在寻找一本书来学习如何设计网站或者编写JavaScript应用,这本书不会给你很多帮助,尽管已经有大量有能力的AJax开发者利用了我们的方法来建造后端的服务。
如果你在寻找建造混搭应用(mashups)或者为人们所直接使用的系统,这本书可能不是为你而写的。我们将本书的内容聚焦于机器对机器的交互。实际上,这本书的内容完全是关于一台机器如何通过Web与另一台机器交互的。
我们相当喜欢这种方式。
资源
这本书有一个与之相伴的网站http://restinpractice.com。在这里你将找到本书中的代码范例、到其他资源的链接、勘误以及社区信息。我们会尽力使用新的信息持续更新这个网站。
你对本书有何感想?
我们很感兴趣于你对本书的感想,正面的或者负面的都行。你可以通过到Amazon网站上写评论来分享你的感想。O'Reilly也非常乐于听到你们的感想:
http://www.oreilly.com/catalog/978059680582//
勘误
尽管我们尽力使得本书没有错误,但我们可能还是搞错了一些事情。勘误能够让读者告知我们这本书中的打字错误、内容错误以及其他的问题。你可以在O'Reilly的本书URI上提出勘误,让我们知道。我们将会很感激:
Web的巨大渗透力和普遍存在,来源于它将架构的简单性和一小组被广泛接受的技术组合在一起的方式。Web为那些拥抱它的简单信条的系统提供了可伸缩性、安全性和可靠性,而它仅仅使用一些日常的工具和平台就实现了这些目标。
我们写这本书的目的有两个部分:揭开Web作为一个应用平台的神秘面纱,以及展示如何将Web架构应用于常见的企业计算问题。贯穿本书的章节,我们特别重视展示不仅在企业边界之外,而且在企业边界之内服务也能够利用Web的架构。我们的愿景是:建造一个可以由其他系统使用的开放的信息平台,它避开集成(integration),而支持组成(composition),然而仍然实现了有价值的业务行为。这是一个分布式的、超媒体驱动的应用平台。
为了理解本书,你并不需要很清楚REST或HTTP的细节。我们将带你从简单的集成一直到复杂的业务协议,所有内容都有详细的代码范例,你能够根据自己的需要加以改写。我是否应该阅读这本书?
就像我们中的大多数人,你可能已经建造了一些应用,而这些应用已经成为了Web的一部分,并且你可能已经使用过了一些看起来相当有用的Web开发工具和模式。然后你转去处理典型的企业问题,想知道为何它不能变得像Web应用一样令人感到愉悦。
你已经看到了Web的好处,并且你开始质疑在你们的企业中使用的昂贵的中间件是否得到了很好的投资回报,或者它的可伸缩性是否足以满足你们的用户的要求。
你可能是一个想要更详细地理解Web的原理并且喜欢通过代码范例来学习的开发者。你已经听到过一些术语,例如URl、HTTP和Atom,并且想要学习更多的术语,包括你能够从这个流行的编程平台(即Web)得到的支持类型。
你可能是一个热心人,已经听说过REST,急切地想要知道它究竟说的是什么。你想要学习更多关于“超媒体”和REST架构风格的知识,这样你就能够建造面向资源的系统,并且在Web之上实现复杂的业务协议。
对于上述场景,这本书一定会有帮助。
我是否应该忽略这本书?
如果你正在寻找一本书来学习如何设计网站或者编写JavaScript应用,这本书不会给你很多帮助,尽管已经有大量有能力的AJax开发者利用了我们的方法来建造后端的服务。
如果你在寻找建造混搭应用(mashups)或者为人们所直接使用的系统,这本书可能不是为你而写的。我们将本书的内容聚焦于机器对机器的交互。实际上,这本书的内容完全是关于一台机器如何通过Web与另一台机器交互的。
我们相当喜欢这种方式。
资源
这本书有一个与之相伴的网站http://restinpractice.com。在这里你将找到本书中的代码范例、到其他资源的链接、勘误以及社区信息。我们会尽力使用新的信息持续更新这个网站。
你对本书有何感想?
我们很感兴趣于你对本书的感想,正面的或者负面的都行。你可以通过到Amazon网站上写评论来分享你的感想。O'Reilly也非常乐于听到你们的感想:
http://www.oreilly.com/catalog/978059680582//
勘误
尽管我们尽力使得本书没有错误,但我们可能还是搞错了一些事情。勘误能够让读者告知我们这本书中的打字错误、内容错误以及其他的问题。你可以在O'Reilly的本书URI上提出勘误,让我们知道。我们将会很感激:
序言回到顶部↑
在我刚刚开始从事解决计算问题的时候,业界就有很多人有一个愿望:将系统设计为能够被自由组合的组件。互联网(Internet)无远弗届的广泛连接为这个愿望推波助澜,并且增加了一个新的愿望:使得组件在引入了延迟和不可靠性的网络之上也能正常工作。人们尝试了这个世界上的很多系统,其中的许多系统都失败了——通常伴随着悲伤的啜泣。
一个伟大的成功案例是WWW(WorldWideWeb,万维网)。它的成功既渗透进了商业运转之中,也渗透进了流行文化之中。它为人们提供了一个机会:在全球范围内以几乎任意预先安排的协作方式从很多来源获取信息。
正如我们现在所知道的,Web并非是计算问题的全部或者终极的解决方案,但是有很多人相信Web给我们上了重要的一课,即如何构造一个由网络化的组件组成的系统。很多人利用了Web的协议——HTTP来连接系统。但是有一些人认为我们应该更进一步,不仅仅将HTTP作为一种便于使用的数据通道,而是拥抱Web本身正常工作的方式,将其作为系统协作的基础。
这种思想集合在“REST”这个名字下,它所指的是RoyFielding的博士论文,这篇论文被提及的次数远远超过了它真正被阅读的次数。追随REST的原理成为了日益增长的共识,它为网络化的组件正常工作开辟了一条硕果累累的大路,而这条大路正建立在Web自身的巨大成功之上。
这个愿景是很有吸引力的,但是为了达到目标还需要做很多事情。我们必须理解REST的原理,并且思考如何将其应用到系统集成每天所要解决的问题之上。这就是本书的作者所承担的任务:将REST从一个有吸引力的愿景变成一个已经实现的系统。他们已经做了很多,教会了我如何从资源的角度思考,如何使用HTTP的惯用语(idiom),以及超媒体控件(hypermediacontr01)的重要性。作为阅读的结果,本书将为你应用REST思想的核心元素打下坚实的基础。
我们同样需要知道,REST并不是所有问题的答案。有很多场合REST是合适的方法,但是也有很多场合REST并不是合适的方法。在使用REST风格来解决集成问题的早期,我们非常谨慎,不敢跨越这些适用/不适用场合的边界。但是为了正确地探索这些边界,对于REST的内涵有一个正确的理解是极为重要的,否则你就很容易冒风险尝试伪REST(pseudo-REST)的做法,并且作出错误的决策,事倍功半。这本书能够帮助你避免这种厄运。
——MartinFowler
2010年8月
一个伟大的成功案例是WWW(WorldWideWeb,万维网)。它的成功既渗透进了商业运转之中,也渗透进了流行文化之中。它为人们提供了一个机会:在全球范围内以几乎任意预先安排的协作方式从很多来源获取信息。
正如我们现在所知道的,Web并非是计算问题的全部或者终极的解决方案,但是有很多人相信Web给我们上了重要的一课,即如何构造一个由网络化的组件组成的系统。很多人利用了Web的协议——HTTP来连接系统。但是有一些人认为我们应该更进一步,不仅仅将HTTP作为一种便于使用的数据通道,而是拥抱Web本身正常工作的方式,将其作为系统协作的基础。
这种思想集合在“REST”这个名字下,它所指的是RoyFielding的博士论文,这篇论文被提及的次数远远超过了它真正被阅读的次数。追随REST的原理成为了日益增长的共识,它为网络化的组件正常工作开辟了一条硕果累累的大路,而这条大路正建立在Web自身的巨大成功之上。
这个愿景是很有吸引力的,但是为了达到目标还需要做很多事情。我们必须理解REST的原理,并且思考如何将其应用到系统集成每天所要解决的问题之上。这就是本书的作者所承担的任务:将REST从一个有吸引力的愿景变成一个已经实现的系统。他们已经做了很多,教会了我如何从资源的角度思考,如何使用HTTP的惯用语(idiom),以及超媒体控件(hypermediacontr01)的重要性。作为阅读的结果,本书将为你应用REST思想的核心元素打下坚实的基础。
我们同样需要知道,REST并不是所有问题的答案。有很多场合REST是合适的方法,但是也有很多场合REST并不是合适的方法。在使用REST风格来解决集成问题的早期,我们非常谨慎,不敢跨越这些适用/不适用场合的边界。但是为了正确地探索这些边界,对于REST的内涵有一个正确的理解是极为重要的,否则你就很容易冒风险尝试伪REST(pseudo-REST)的做法,并且作出错误的决策,事倍功半。这本书能够帮助你避免这种厄运。
——MartinFowler
2010年8月
媒体评论回到顶部↑
“《REST实战》结合了一个稳定可靠、注重实用的方法,来建造真实世界中的服务。在这个过程中,对于高层次的抽象概念进行了水晶般清晰的解释。其结果是本书既教会了你如何开发,也教会了你为何要开发具有灵活的、可协商的、可发现的接口的服务。”
——Michael T. Nygard,《Release It!》的作者
——Michael T. Nygard,《Release It!》的作者








点击看大图





加载中...
