<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件是對(duì)質(zhì)量的不懈追求

    [李琨]REST的主要優(yōu)勢(shì)到底是什么?

    在JavaEye論壇上回答網(wǎng)友joyjiang的疑問(wèn):“REST的優(yōu)勢(shì)到底是什么?開(kāi)發(fā)效率?文檔的管理?url的直觀?還是其它的什么優(yōu)勢(shì)呢?”

    REST的主要優(yōu)勢(shì)在我看來(lái)其實(shí)在于它是一種對(duì)于服務(wù)器的更加有效的抽象方式。

    對(duì)于基于網(wǎng)絡(luò)的應(yīng)用來(lái)說(shuō),你怎么樣看待服務(wù)器,就會(huì)產(chǎn)生什么樣的架構(gòu)風(fēng)格,隨之產(chǎn)生與該架構(gòu)風(fēng)格相關(guān)的交互模式。

    RPC架構(gòu)風(fēng)格將服務(wù)器看作是由一些過(guò)程組成,客戶端調(diào)用這些過(guò)程來(lái)執(zhí)行特定的任務(wù)。SOAP就是RPC風(fēng)格的一種架構(gòu)。過(guò)程是動(dòng)詞性的(做某件事),因此RPC建模是以動(dòng)詞為中心的。

    分布式對(duì)象架構(gòu)風(fēng)格認(rèn) 為服務(wù)器是由一些對(duì)象和對(duì)象上的方法組成,客戶端通過(guò)調(diào)用這些對(duì)象上的方法來(lái)執(zhí)行特定的任務(wù)。并且客戶端調(diào)用這些對(duì)象上的方法應(yīng)該就像是調(diào)用本地對(duì)象上的 方法一樣,這樣開(kāi)發(fā)就可以完全按照統(tǒng)一的面向?qū)ο蠓椒▉?lái)做。但是很可惜,這樣的抽象并不是很有效,因?yàn)榉植际綄?duì)象與本地對(duì)象存在著巨大的本質(zhì)差別,想要掩 蓋這些差別很多時(shí)候甚至是有害無(wú)益的。

    REST架構(gòu)風(fēng)格并 沒(méi)有試圖掩蓋這些差別,而是將服務(wù)器抽象為一組離散資源的集合。資源是一個(gè)抽象的概念,而不是代表某個(gè)具體的東西。注意:要真正理解REST,就一定要增 強(qiáng)自己的抽象思維能力,充分理解到資源是抽象的。如果完全不具有抽象思維的能力,一定要將資源與數(shù)據(jù)庫(kù)中的一張表或服務(wù)器端的一個(gè)文件(HTML、 Servlet、JSP、etc.)一一掛起鉤來(lái),就無(wú)法真正理解REST了。資源是名詞性的,因此REST建模是以名詞為中心的。

    上述 是目前基于網(wǎng)絡(luò)的應(yīng)用的主要的三種抽象方式。這三種不同的抽象方式會(huì)嚴(yán)重影響客戶端與服務(wù)器的交互模式,而不同交互模式的交互效率差別相當(dāng)大。分布式對(duì)象 的交互模式很多時(shí)候效率很低,因?yàn)檠谏w了分布式對(duì)象與本地對(duì)象的差別,很多時(shí)候都會(huì)導(dǎo)致細(xì)粒度的API(需要一再?gòu)?qiáng)調(diào)才能讓一些不明就里的架構(gòu)初哥按照正 確的方式來(lái)做設(shè)計(jì))。實(shí)踐已經(jīng)證明,與RPC和分布式對(duì)象相比,REST是一種對(duì)于服務(wù)器更加有效的抽象方式,將會(huì)帶來(lái)粒度更大和更有效率的交互模式。這 樣的效果與Fielding設(shè)計(jì)REST的初衷是吻合的,REST就是專門為交互的性能和可伸縮性進(jìn)行過(guò)優(yōu)化的一種架構(gòu)風(fēng)格。而SOAP在設(shè)計(jì)的時(shí)候優(yōu)先 考慮的從來(lái)不是性能和可伸縮性,而是互操作性。除非出現(xiàn)奇跡,否則你種什么,就應(yīng)該長(zhǎng)出來(lái)什么。你種的是瓜,長(zhǎng)出來(lái)的就是瓜;你種的是豆,長(zhǎng)出來(lái)的就是 豆。

    Fielding寫到:“REST提供了一組架構(gòu)約束,當(dāng)作為一個(gè)整體來(lái)應(yīng)用時(shí),強(qiáng)調(diào)組件交互的可伸縮性、接口的通用性、組件的獨(dú)立部署、以及用來(lái)減少交互延遲、增強(qiáng)安全性、封裝遺留系統(tǒng)的中間組件。

    有 人認(rèn)為REST不是面向?qū)ο蟮模鋵?shí)REST雖然沒(méi)有分布式對(duì)象那么面向?qū)ο螅谖铱磥?lái)至少比RPC更加面向?qū)ο蟆0凑铡镀髽I(yè)應(yīng)用架構(gòu)模式》,以動(dòng)詞為中 心建模是什么?是不是就是事務(wù)腳本?以名詞為中心建模是什么?是不是就是領(lǐng)域模型?這就扯遠(yuǎn)了,網(wǎng)絡(luò)通信是否一定需要實(shí)現(xiàn)為面向?qū)ο蟮男问剑艺J(rèn)為是不需 要的。

    “REST的主要優(yōu)勢(shì)在我看來(lái)其實(shí)在于它是一種對(duì)于服務(wù)器的更加有效的抽象方式。”
    這句話等于是,我先把一個(gè)骨架放在這里,還沒(méi)有用血肉來(lái)充實(shí)它,也就是還沒(méi)有舉出具體的實(shí)例來(lái)。具體的實(shí)例以后我們還需要來(lái)詳細(xì)討論。REST是非常簡(jiǎn)練的,同時(shí)又是一種非常強(qiáng)大的抽象方式,在我看來(lái)就是從根本上簡(jiǎn)化Web開(kāi)發(fā)的一味良藥。

    posted on 2010-02-05 10:57 BlakeSu 閱讀(237) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 1024免费福利永久观看网站| 伊人久久国产免费观看视频| 三年片在线观看免费观看大全一 | 在线观看日本亚洲一区| 少妇无码一区二区三区免费| 久久精品国产亚洲AV麻豆~| 日本卡1卡2卡三卡免费| 亚洲人成电影福利在线播放| 精品国产麻豆免费人成网站| 久久亚洲国产午夜精品理论片 | 亚洲欧美aⅴ在线资源| 野花高清在线电影观看免费视频 | 亚洲女女女同性video| 成年人免费网站在线观看| 亚洲人AV在线无码影院观看| 国产福利免费观看| 黄网站色视频免费观看45分钟| 四虎影库久免费视频| GOGOGO免费观看国语| 亚洲第一区香蕉_国产a| 国产在线观看片a免费观看| 亚洲中文无码mv| 免费国产综合视频在线看| eeuss影院免费直达入口| 婷婷亚洲综合五月天小说| 30岁的女人韩剧免费观看| 久久精品国产亚洲av麻豆图片 | 国产成人久久精品亚洲小说| 亚洲区日韩区无码区| 日本高清高色视频免费| 国产成人精品日本亚洲专一区| 最新69国产成人精品免费视频动漫| 日韩电影免费在线观看网址| 国产精品亚洲片在线观看不卡| 免费看h片的网站| 国产精品亚洲五月天高清| 亚洲精品乱码久久久久久按摩| 亚州免费一级毛片| 在线亚洲v日韩v| 亚洲高清视频在线观看| 免费毛片在线看片免费丝瓜视频|