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

如何度量應(yīng)用的RESTful成熟度?

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

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

  Martin這么說(shuō):

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

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

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

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

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

  不過(guò),有一評(píng)論指出:

事實(shí)上,如果你漏掉“任何”該[成熟度模型]的級(jí)別,最后都不是REST(不過(guò)我喜歡將“HTTP動(dòng)詞”替換成“一組預(yù)定義的,廣泛認(rèn)可的動(dòng)詞”)。可是從實(shí)現(xiàn)的角度看,你不能跳過(guò)第一級(jí)就達(dá)到第三級(jí),所以,我認(rèn)為這個(gè)次序是能說(shuō)的過(guò)去的。

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

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

  這篇博文引起了一組有趣的來(lái)來(lái)回回的評(píng)論。比如,Mike Amundsen說(shuō):

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

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

  Subbu這樣回應(yīng)的Mike最初的評(píng)論:

評(píng)判需要有一個(gè)上下文語(yǔ)境,而質(zhì)量屬性提供了這一語(yǔ)境。只圍繞REST限制作評(píng)判可能會(huì)導(dǎo)致差勁的/有問(wèn)題的決策。[……]不存在放之四海皆準(zhǔn)的好壞標(biāo)準(zhǔn)。

  Mike回應(yīng):

我理解你的觀點(diǎn)了。你所談的是實(shí)現(xiàn)的早期行為:“今天,我要構(gòu)建一個(gè)Web應(yīng)用;這些是我要用的限制(因?yàn)镕ielding這么說(shuō)……)”,在以上例子中,以滿足一組“限制”為核心是不正確的。因?yàn)槟憧梢哉f(shuō),早期的工作應(yīng)該集中在應(yīng)用應(yīng)該支持的“質(zhì)量”上。我猜你還仍然會(huì)贊同:在確定了質(zhì)量屬性之后,在實(shí)現(xiàn)中選擇正確的限制來(lái)支持這些屬性是有意義的(就像Fielding的做法)。

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

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

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

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

  這一個(gè)5步方法更好么?它解決了Subbu等人所談?wù)摰挠嘘P(guān)最初的模型不應(yīng)該盲目使用的擔(dān)心么?或者有沒(méi)有更好的解決方法呢?

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

it知識(shí)庫(kù)如何度量應(yīng)用的RESTful成熟度?,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 亚洲伊人久久大香线蕉在观 | 国产美女激情视频 | 日韩精品中文字幕一区三区 | www.国产.com| 伊人久久国产 | 天天干天天舔 | 日本高清在线精品一区二区三区 | 欧美在线tv | 韩国资源视频一区二区三区 | 激性欧美在线播激性欧美 | 成人亚洲国产综合精品91 | 五月网址| 精品国产免费一区二区 | 在线国产视频 | 亚洲国产精品成人午夜在线观看 | 综合久久久久综合 | 激情图片激情小说 | 国产精品久久亚洲不卡4k岛国 | 国外成人免费视频 | 久久免费99精品国产自在现线 | 女人张腿让男桶免费视频网站 | 唐人社电亚洲一区二区三区 | 国产成人久久精品激情 | 在线播放色 | 不卡一区二区三区四区 | 2021久久精品99精品久久 | 久久国产精品久久精 | 亚洲一区二区免费看 | 久久亚洲成a人片 | 国产在线视频一区 | 一级寡妇乱色毛片全18 | 国产黄色91 | 精品国产夜色在线 | 在线视频亚洲欧美 | 夜夜爽天天狠狠九月婷婷 | 国产成人精品高清在线观看99 | 亚洲十欧美十日韩十国产 | 另类在线视频 | 91麻豆精品国产综合久久久 | 久久情 | 欧美日韩一区二区三区久久 |