出版時間:2011-10 出版社:東南大學出版社 作者:Jim Webber,Savas Parastatidis,Ian Robinson 頁數:388 譯者:李錕,俞黎敏,馬鈞,崔毅
Tag標簽:無
內容概要
為何典型的企業(yè)項目無法像你為Web所開發(fā)的項目那樣運行得如此平滑?對于建造分布式和企業(yè)級的應用來說,REST架構風格真地提供了一個可行的替代選擇嗎?
在《REST實戰(zhàn)》這本富有洞察力的書中,三位SOA專家對于REST進行了講求實際的解釋,并且通過將Web的指導原理應用到普通的企業(yè)計算問題中,向你展示了如何開發(fā)簡單的、優(yōu)雅的分布式超媒體系統(tǒng)。你將會學習到很多技術,并且隨著一家典型的公司從最初的小企業(yè)逐漸成長為全球化的企業(yè),使用這些Web技術和模式來解決這家公司在成長過程中產生的各種需求。本書由Jim
Webber等著。
作者簡介
Jim
Webber,ThoughtWorks公司的一位技術主管,工作于可信賴的分布式系統(tǒng)。 Savas
Parastatidis,微軟公司的一位架構師,工作于大規(guī)模的數據密集型和計算密集型應用。 Ian
Robinson,ThoughtWorks公司的首席咨詢顧問,幫助客戶從奠基階段到運營階段創(chuàng)建可持續(xù)的面向服務開發(fā)能力。
書籍目錄
序言
前言
第1章 將Web作為建造分布式系統(tǒng)的平臺
Web的架構
從資源的角度思考
從Web架構到REST架構風格
Web作為一個應用平臺
Web的友好性和Richardson的成熟度模型
起航
第2章介紹 Restbucks:如何以Web風格獲得一杯咖啡
Restbucks:一家有著全球抱負的小咖啡店
Web現(xiàn)身了
第3章 基礎的Web集成
減肥的感覺真好!
一個簡單的咖啡訂購系統(tǒng)
URI模板
URI隧道技術
POX:基于HTTP之上的普通老式XML
開始行動
第4章 CRUD式Web服務
將Orcler(訂單)建模為資源
建造CRUD式服務
消費CRUD式服務
通過WADL自動消費服務
CRuD雖好,但還可以更好
第5章 超媒體服務
超媒體原則
超媒體格式
契約
超媒體協(xié)議
實現(xiàn)超媒體服務
用Java建造訂購服務
在.NET中建造訂購服務
Ready、Set和Action
第6章 向外擴展
回到基礎
創(chuàng)建可緩存的內容
在.NET中實現(xiàn)緩存
保持新鮮
第7章 Atom聯(lián)合格式
格式
將Atom用于事件驅動系統(tǒng)
用Java建造Atom服務
在.NET中創(chuàng)建Atom服務
Atom無處不在?
反思
第8章 Atom發(fā)布協(xié)議
Atom發(fā)布協(xié)議
使用AtomPub實現(xiàn)訂單履行
在.NET中實現(xiàn)AtomPub
一個多功能的協(xié)議
第9章 Web安全
HTTP安全要點
身份標識和OpenID協(xié)議
0Auth協(xié)議
服務的黑客攻擊和防御
最后的思考
第10章 語義
語法vs.語義
信息的結構和表述
語義網
微格式
鏈接數據和Web
指導
第1 章 Web和WS-*協(xié)議棧
Wleb Services是邪惡的?
SOAP:全部真相
wsDL:不過是另一種對象接口定義語言(Object IDL)
兩個錯誤疊加無法得到正確結果
安全的,可靠的,事務性的
Web services的安魂曲?
第12章 為Web建造案例
更多的銀彈是不存在的
建造并運行基于Web的服務
沒有度量就沒有架構
推銷Web
出發(fā)去建造
章節(jié)摘錄
版權頁: 插圖: 安全性和冪等性 我們在第3章中了解到,GET請求很特殊,因為它具有既安全又冪等的特性。PUT請求和DEL ETE請求都是冪等的,但是它們都不安全,POST請求則是既不安全也不冪等。只有GET請求在重復調用時能返回相同的結果,并且不會產生需要消費者負責的副作用。 對于GET請求,重復發(fā)送失敗的請求不會改變應用的整體行為。例如,如果分布式應用的某個部分在GET操作過程中崩潰了,或者在收到對GET的響應之前網絡中斷了,那么客戶只要重新發(fā)出同樣的請求,并不會改變它與服務器交互的語義。 籠統(tǒng)來講,PUT和DELETE請求也同樣如此。對某個資源的狀態(tài)進行一次絕對更新或者徹底將它刪除,無論該操作是進行一次還是多次,結果將都是一樣的。如果PUT和DELETE請求的失敗是因為瞬時的網絡或者服務器出錯(如503響應),那么該操作就可以安全地重復。 然而,由于PUT和DELETE請求會有副作用(因為它們不是安全的),如果服務器一開始就拒絕了某個操作,可能就不能隨時重復該操作了。例如,我們已經見過當消費者和服務看到的資源狀態(tài)不一致時如何產生409響應的(僅僅重復執(zhí)行相同的交互是沒有用的)。不過,HTTP提供了其他有用的特性,當狀態(tài)發(fā)生變化的時候,對我們會很有幫助。 校正資源狀態(tài) 在分布式應用中,經常會出現(xiàn)多個消費者與同一個資源交互的情況,每一位消費者都不理會其他人所做的修改。除了這些由消費者驅動的變化,內部的服務行為也會導致資源狀態(tài)發(fā)生消費者所不知道的變化。在這兩種情況下,消費者對資源狀態(tài)的了解可能會變得與服務的資源狀態(tài)不一致。除了預期有些不一致之外,如果消費者對資源狀態(tài)的了解沒有及時更新,它發(fā)出的變更請求就會得到不符合預期的結果,無論是重復計算代價昂貴的請求,還是覆蓋以及丟失其他消費者的變更,都是如此。 HTTP提供了一種簡單但強大的機制,可以按照實體標簽(entity tag)與條件請求頭信息(conditional request header)的形式,對所期待的資源狀態(tài)進行校正(并防止產生競爭)。一個實體標簽值或者說ETag,就是一個不透明的字符串令牌,使服務器與資源關聯(lián)起來,以便在資源的生命周期中唯一標識其狀態(tài)。當資源發(fā)生變化時,如果其頭信息中有一個或者多個發(fā)生變化,或者其實體消息體發(fā)生變化,實體標簽就會相應地發(fā)生變化,表明該狀態(tài)已經被修改。 ETag用于將實體與同一個資源進行對比。通過在條件請求頭信息(如If—Match或者If—None—Match請求頭信息)中提供一個實體標簽值,消費者就可以告訴服務器在應用請求中提供的方法之前,應該先測試一下與當前資源狀態(tài)有關的先決條件。
編輯推薦
《REST實戰(zhàn):超媒體和系統(tǒng)架構(中文版)》由東南大學出版社出版。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載