一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

如何度量應用的RESTful成熟度?

  過去幾年間,你很難去忽視使用RESTFul方法構建企業(yè)級應用變得越來越普及的事實?,F(xiàn)在,人們似乎不再爭論REST還是WS-*呢?,也不再談論REST和SOA是否互補,而是轉向討論基于REST實現(xiàn)的成熟度了。不幸的是,即便是這一話題,也可能引起人們的迷惑、不同意見和爭論。當談及REST成熟度時,一些人常常會引用Richardson成熟度模型(Maturity Model),并視之為正確的度量方法。譬如,Martin Fowler在其最新的博文里就談到了這一模型的幾個級別。

  • 第一級:在架構中引入資源(Resource)的概念。
  • 第二級:支持HTTP動詞。
  • 第三級:HATEOAS。

  Martin這么說:

我還要強調,雖然[Richardson成熟度模型]是思考REST各種元素時很好的方法,但它卻不能作為區(qū)別REST級別的定義。Roy Fielding已經清晰地做了定義——[Richardson成熟度模型]的第三級才是REST的先決條件。

  Martin繼續(xù)引用他與Ian Robinson的一次談話,這此談話使得雙方在某些層面上達成一致:

[Ian]說他發(fā)現(xiàn)了這一模型里一些有意思的地方[……]即它與通用的設計技術的關系。
  • 第一級通過分治法(divide and conquer)解決復雜性問題,它將較大的服務端點分解成多個資源(Resource)。
  • 第二級引入一組標準的動詞,這樣我們就可以用相似的方法來處理類似的問題,這消除了不必要的不確定性。
  • 第三級引入可查找性,提供了使這一協(xié)議體現(xiàn)自描述性的手段。
其結果就是這樣一個模型,它有助于我們思考我們要提供的HTTP服務,也有助于我們約束他們的使用者的期望。

  雖然該模型看上去有一些支持者,但是REST社區(qū)中持反對意見者也不在少數(shù)。比如,在這篇同樣引用了Roy關于怎樣才稱為RESTful系統(tǒng)的論文的文章中,作者說:

因此,根據(jù)Roy的嚴格規(guī)定,超媒體(hypermedia)是REST的先決條件。任何其他東西不應該自我標榜為REST。如此,該成熟度模型看起來應該是這樣的:
  • 第一級:非REST
  • 第二級:非REST
  • 第三級:REST

  不過,有一評論指出:

事實上,如果你漏掉“任何”該[成熟度模型]的級別,最后都不是REST(不過我喜歡將“HTTP動詞”替換成“一組預定義的,廣泛認可的動詞”)??墒菑膶崿F(xiàn)的角度看,你不能跳過第一級就達到第三級,所以,我認為這個次序是能說的過去的。

  如今,《RESTful Web Services Cookbook》一書的作者Subbu Allamaraju也加入了這一論戰(zhàn),他最近寫了一篇有關使用Richardson成熟度模型的博文。事實上,他開篇就說不能使用該模型作為判斷應用的RESTful成熟度的尺度。他說:

根據(jù)應用所支持的REST限制,而非它有沒有選擇正確的限制來滿足其應該的質量屬性,這種判斷是毫無意義的。就好比一個應用選擇RDBMS而非NoSQL存儲,在沒有弄清作出這一選擇所基于的原因之前就貿然地批評它一樣。認為應用一旦使用了超文本限制,它獲得了“REST的優(yōu)點”,同樣很傻。真正重要的是它是否實現(xiàn)了該應用應該達到的質量屬性。

  這篇博文引起了一組有趣的來來回回的評論。比如,Mike Amundsen說:

雖然我同意你的觀點——“一旦應用的實現(xiàn)遵循了Fielding的REST限制就自動變成了某項工作的正確做法”——這一判斷是錯誤的,然而,我不同意你的“評判一個實現(xiàn)是否符合一些限制(就REST,C2等來說)”是“毫無意義的”或者是“傻事”[……]你想表達的思想是?換言之,為什么不需要評判合規(guī)性?你認為重要的東西,那一樣不能從評判中得到呢?從評判中得到的東西那一樣又是不重要的呢?從評判中得到的東西會產生誤解么?評判中隱藏了一些可能導致危險、誤導或無用的前提假設么?

  此后,Mike就判斷應用的RESful程度與實現(xiàn)REST風格的應用的好處二者之間的差別單獨寫了一篇博文

  Subbu這樣回應的Mike最初的評論:

評判需要有一個上下文語境,而質量屬性提供了這一語境。只圍繞REST限制作評判可能會導致差勁的/有問題的決策。[……]不存在放之四海皆準的好壞標準。

  Mike回應:

我理解你的觀點了。你所談的是實現(xiàn)的早期行為:“今天,我要構建一個Web應用;這些是我要用的限制(因為Fielding這么說……)”,在以上例子中,以滿足一組“限制”為核心是不正確的。因為你可以說,早期的工作應該集中在應用應該支持的“質量”上。我猜你還仍然會贊同:在確定了質量屬性之后,在實現(xiàn)中選擇正確的限制來支持這些屬性是有意義的(就像Fielding的做法)。

  Ian Robinson后來也加入了論戰(zhàn),他贊同盲目使用Richardson的模型是不明智的:

[……]Leonard最初創(chuàng)建這一啟發(fā)式模型的目的是幫助開發(fā)者理解REST——僅此而已。他通過將通用的、類似的軟件開發(fā)實踐(例如,分治;用同樣古老的方法解決同樣古老的事情)和Web應用(任何東西都有一個地址;使用HTTP來寫協(xié)調表象傳輸)做類比而得出這一模型的。

  而于此同時,Restfulie的作者|Guilherme Silveira在別處嘗試堅持并擴展Richardson模型,創(chuàng)立了一套5步法通往REST架構的成熟度模型,不同于Richardson的是,這一模型不限定基于HTTP。

  • 第一步:明確并使用統(tǒng)一的接口。
  • 第二步:將數(shù)據(jù)鏈接起來,讓用戶可以通過資源的狀態(tài)和關系進行導航。
  • 第三步:給鏈接添加語義“內容”。
  • 第四步:創(chuàng)建客戶端“僅根據(jù)資源表象關系和對媒體類型的理解做決策”。
  • 第五步:“通過應變能力強的代碼去指導用戶如何應對特定的從未遇見過的媒體類型,比如新出現(xiàn)的媒體類型定義。”

  這一個5步方法更好么?它解決了Subbu等人所談論的有關最初的模型不應該盲目使用的擔心么?或者有沒有更好的解決方法呢?

  查看英文原文:How do you measure the RESTful-ness of an application?

it知識庫如何度量應用的RESTful成熟度?,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产欧美亚洲精品 | 亚色在线观看 | 另类视频第一页 | 国产精品视频一区牛牛视频 | 岛国免费视频 | 五月天网站最新永久网址 | 国产精品自拍亚洲 | 中文字幕一区二区三区视频在线 | 成人在线观看网址 | 91高清视频 | 国内精品伊人久久大香线焦 | 日韩小视频在线播放 | 国产精品免费αv视频 | 夜夜未满十八勿进的爽爽影院 | 人人干国产| 国产亚洲精品成人a在线 | www.色网| 婷婷性 | 九一在线| 成人免费观看完整视频 | 小说区图片区视频区 | 美女扒开下面无遮挡免费视频 | 激性欧美激情在线aa | 巨大乳欧美 | 一二三区免费视频 | 欧美日日| 国产乱子伦一区二区三区 | 不卡一区二区三区四区 | 四虎影视永久在线 | 亚洲丝袜中文字幕 | 婷婷亚洲国产成人精品性色 | 草草草网站 | 亚洲国产高清一区二区三区 | 国产精品精品 | 韩国一大片a毛片女同 | 欧美ww| 国产第8页 | 久久精品视频8 | 欧美色成人 | 伊人手机在线视频 | 精品国精品国产自在久国产不卡 |