出版时间:2011-10 出版社:东南大学出版社 作者:Jim Webber,Savas Parastatidis,Ian Robinson 页数:388 译者:李锟,俞黎敏,马钧,崔毅
Tag标签:无
内容概要
为何典型的企业项目无法像你为Web所开发的项目那样运行得如此平滑?对于建造分布式和企业级的应用来说,REST架构风格真地提供了一个可行的替代选择吗?
在《REST实战》这本富有洞察力的书中,三位SOA专家对于REST进行了讲求实际的解释,并且通过将Web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业逐渐成长为全球化的企业,使用这些Web技术和模式来解决这家公司在成长过程中产生的各种需求。本书由Jim
Webber等著。
作者简介
Jim
Webber,ThoughtWorks公司的一位技术主管,工作于可信赖的分布式系统。 Savas
Parastatidis,微软公司的一位架构师,工作于大规模的数据密集型和计算密集型应用。 Ian
Robinson,ThoughtWorks公司的首席咨询顾问,帮助客户从奠基阶段到运营阶段创建可持续的面向服务开发能力。
书籍目录
序言
前言
第1章 将Web作为建造分布式系统的平台
Web的架构
从资源的角度思考
从Web架构到REST架构风格
Web作为一个应用平台
Web的友好性和Richardson的成熟度模型
起航
第2章介绍 Restbucks:如何以Web风格获得一杯咖啡
Restbucks:一家有着全球抱负的小咖啡店
Web现身了
第3章 基础的Web集成
减肥的感觉真好!
一个简单的咖啡订购系统
URI模板
URI隧道技术
POX:基于HTTP之上的普通老式XML
开始行动
第4章 CRUD式Web服务
将Orcler(订单)建模为资源
建造CRUD式服务
消费CRUD式服务
通过WADL自动消费服务
CRuD虽好,但还可以更好
第5章 超媒体服务
超媒体原则
超媒体格式
契约
超媒体协议
实现超媒体服务
用Java建造订购服务
在.NET中建造订购服务
Ready、Set和Action
第6章 向外扩展
回到基础
创建可缓存的内容
在.NET中实现缓存
保持新鲜
第7章 Atom联合格式
格式
将Atom用于事件驱动系统
用Java建造Atom服务
在.NET中创建Atom服务
Atom无处不在?
反思
第8章 Atom发布协议
Atom发布协议
使用AtomPub实现订单履行
在.NET中实现AtomPub
一个多功能的协议
第9章 Web安全
HTTP安全要点
身份标识和OpenID协议
0Auth协议
服务的黑客攻击和防御
最后的思考
第10章 语义
语法vs.语义
信息的结构和表述
语义网
微格式
链接数据和Web
指导
第1 章 Web和WS-*协议栈
Wleb Services是邪恶的?
SOAP:全部真相
wsDL:不过是另一种对象接口定义语言(Object IDL)
两个错误叠加无法得到正确结果
安全的,可靠的,事务性的
Web services的安魂曲?
第12章 为Web建造案例
更多的银弹是不存在的
建造并运行基于Web的服务
没有度量就没有架构
推销Web
出发去建造
章节摘录
版权页: 插图: 安全性和幂等性 我们在第3章中了解到,GET请求很特殊,因为它具有既安全又幂等的特性。PUT请求和DEL ETE请求都是幂等的,但是它们都不安全,POST请求则是既不安全也不幂等。只有GET请求在重复调用时能返回相同的结果,并且不会产生需要消费者负责的副作用。 对于GET请求,重复发送失败的请求不会改变应用的整体行为。例如,如果分布式应用的某个部分在GET操作过程中崩溃了,或者在收到对GET的响应之前网络中断了,那么客户只要重新发出同样的请求,并不会改变它与服务器交互的语义。 笼统来讲,PUT和DELETE请求也同样如此。对某个资源的状态进行一次绝对更新或者彻底将它删除,无论该操作是进行一次还是多次,结果将都是一样的。如果PUT和DELETE请求的失败是因为瞬时的网络或者服务器出错(如503响应),那么该操作就可以安全地重复。 然而,由于PUT和DELETE请求会有副作用(因为它们不是安全的),如果服务器一开始就拒绝了某个操作,可能就不能随时重复该操作了。例如,我们已经见过当消费者和服务看到的资源状态不一致时如何产生409响应的(仅仅重复执行相同的交互是没有用的)。不过,HTTP提供了其他有用的特性,当状态发生变化的时候,对我们会很有帮助。 校正资源状态 在分布式应用中,经常会出现多个消费者与同一个资源交互的情况,每一位消费者都不理会其他人所做的修改。除了这些由消费者驱动的变化,内部的服务行为也会导致资源状态发生消费者所不知道的变化。在这两种情况下,消费者对资源状态的了解可能会变得与服务的资源状态不一致。除了预期有些不一致之外,如果消费者对资源状态的了解没有及时更新,它发出的变更请求就会得到不符合预期的结果,无论是重复计算代价昂贵的请求,还是覆盖以及丢失其他消费者的变更,都是如此。 HTTP提供了一种简单但强大的机制,可以按照实体标签(entity tag)与条件请求头信息(conditional request header)的形式,对所期待的资源状态进行校正(并防止产生竞争)。一个实体标签值或者说ETag,就是一个不透明的字符串令牌,使服务器与资源关联起来,以便在资源的生命周期中唯一标识其状态。当资源发生变化时,如果其头信息中有一个或者多个发生变化,或者其实体消息体发生变化,实体标签就会相应地发生变化,表明该状态已经被修改。 ETag用于将实体与同一个资源进行对比。通过在条件请求头信息(如If—Match或者If—None—Match请求头信息)中提供一个实体标签值,消费者就可以告诉服务器在应用请求中提供的方法之前,应该先测试一下与当前资源状态有关的先决条件。
编辑推荐
《REST实战:超媒体和系统架构(中文版)》由东南大学出版社出版。
图书封面
图书标签Tags
无
评论、评分、阅读与下载