一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Restful 和 RPC 是什么關(guān)系與區(qū)別

lhl545545 ? 來源:電子發(fā)燒友網(wǎng) ? 2018-02-07 15:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Restful 和 RPC 是什么關(guān)系

這兩個不是互斥的,HTTP是不是RPC完全取決于client的具體形式。傳統(tǒng)的RPC一般是基于二進制協(xié)議的,client發(fā)個二進制包過來(然后阻塞),server處理完回復一個包,client收到后醒來。在二進制協(xié)議中一般可以在包中加個id來指明回復和請求的對應關(guān)系,這樣我們就能在一個tcp連接上同時發(fā)起多個請求和回復。HTTP這種文本協(xié)議也可以加id,但由于一些原因(Content-Length可能缺失),即使加了id也做不到一個連接上同時傳多個HTTP消息,所以HTTP協(xié)議一般會和server保持多個連接,每個連接上同時最多只有一個HTTP消息。此種”連接池“方式即為HTTP中的”Keep-alive“。所以即使在HTTP上(或任何協(xié)議上),我們?nèi)匀豢梢宰龅礁咝У匕l(fā)送一個請求過去,阻塞,等待server處理完后,再醒來。這不就是RPC么。所以這兒的選擇更多是平衡功能和性能。一般來說,面向終端用戶的盡量用Restful HTTP。原因是認知廣,直觀,編程語言都支持HTTP(包括shell,這樣調(diào)試起來方便),性能不是那么重要,方便用戶share鏈接。而面向內(nèi)部系統(tǒng)的話如果機器不多也可以考慮用Restful HTTP,如果機器很多還是盡量用二進制的RPC吧,畢竟性能差距還是很大的。

 Restful 和 RPC 是什么關(guān)系與區(qū)別

restful架構(gòu)與rpc區(qū)別

RPC

RPC 即遠程過程調(diào)用, 很簡單的概念, 像調(diào)用本地服務(方法)一樣調(diào)用服務器的服務(方法)。

通常的實現(xiàn)有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是傳輸數(shù)據(jù)的格式。

(如果你已經(jīng)習慣于XML繁重的尖括號,你不妨可以嘗試下更加輕型,高效,傳輸效率高的 JSON.)

一個簡單的通信過程通常為:

Request

<?xml version=“1.0”?>

member.get_username_by_id

Response

<?xml version=“1.0”?>

Zhu Tao

向服務器發(fā)送一個過程調(diào)用的方法及其參數(shù), 得到服務器返回的方法執(zhí)行的結(jié)果。

REST

REST 不是一種協(xié)議,它是一種架構(gòu), 一種 Web Service 能夠如果滿足 REST 的幾個條件, 通常就稱這個系統(tǒng)是 Restful 的。

這里提到的條件包括:

C/S結(jié)構(gòu) (這是Internet服務的一個基本特征)

無狀態(tài) (很熟悉吧,呵呵)

可以cache (想起了瀏覽器?)

分層系統(tǒng) (想起了無數(shù)的架構(gòu)?)

統(tǒng)一的接口 (如果這是可能的,程序員有福了, :D)

code on demand(可選, 其實是一種擴展性的要求)

看了這幾個特征后,你想起了什么?

你可能會破口而出: HTTP.

我答: You got it!

HTTP是WWW的最核心的協(xié)議, 它將簡單的分布于世界各個角落的資源都統(tǒng)一起來, 統(tǒng)一的地址, 簡單的方法, 和一定數(shù)量的表達方式。(你可能對這三點描述很模糊,請go ahead)。

REST 的三個要素是 唯一的資源標識, 簡單的方法 (此處的方法是個抽象的概念), 一定的表達方式。

REST 是以 資源 為中心, 名詞即資源的地址, 動詞即施加于名詞上的一些有限操作, 表達是對各種資源形態(tài)的抽象。

以HTTP為例, 名詞即為URI(統(tǒng)一資源標識), 動詞包括POST, GET, PUT, DELETE等(還有其它不常用的2個,所以 整個動詞集合是有限的), 資源的形態(tài)(如text, html, image, pdf等)

Restful 和 RPC 是什么關(guān)系與區(qū)別

RPC與REST的區(qū)別

如果你想只記住一點,那么就請記住 RPC是以動詞為中心的, REST是以名詞為中心的, 此處的 動詞指的是一些方法, 名詞是指資源。

你會發(fā)現(xiàn),以動詞為中心,意味著,當你要需要加入新功能時,你必須要添加更多的動詞, 這時候服務器端需要實現(xiàn) 相應的動詞(方法), 客戶端需要知道這個新的動詞并進行調(diào)用。

而以名詞為中心, 假使我請求的是 hostname/friends/, 無論這個URI對應的服務怎么變化,客戶端是無需 關(guān)注和更新的,而這種變化對客戶端也是透明的。

至于其它的區(qū)別,如對實現(xiàn)語言的依賴, 耦合性等,這些都是上面提到的這個根本區(qū)別所衍生的。

讓我們回到引入部分的2個問題。 當你每天使用HTTP沖浪時,你都在使用 REST 與遠程的服務器進行親密接觸。 當你使用Gtalk和同事朋友溝通時,你則是在享受著 RPC 的便利.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11887
  • Restful
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    3694
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    什么是STM32? STM32與ARM有什么關(guān)系? STM32能做什么?

    什么是STM32 具體用于什么方面較多?? STM32與ARM有什么關(guān)系 STM32能做什么,簡單的比如調(diào)節(jié)協(xié)議,為什么那么久的產(chǎn)品到現(xiàn)在還是主流?
    發(fā)表于 06-23 17:34

    請問計算ADS6442的實際功耗和哪些因素有關(guān),和采樣時鐘什么關(guān)系

    請問計算ADS6442的實際功耗和哪些因素有關(guān),和采樣時鐘什么關(guān)系?如何能降低功耗呢
    發(fā)表于 02-14 06:00

    噪聲與ADC的范圍和位數(shù)是什么關(guān)系呢?怎樣選用和匹配?

    以上三者是什么關(guān)系呢?怎樣選用和匹配?ADC的動態(tài)輸入范圍一般都有多大的?謝謝
    發(fā)表于 02-08 07:14

    TLV5613和TLC5613什么關(guān)系?

    請問一下,在看TLV5613 datasheet的時候, 發(fā)現(xiàn)芯片是20腳的,為什么后面給的封裝信息都是14腳或者16腳的。 另外,TLV5613和TLC5613什么關(guān)系,我手頭有14腳的TLC5613,卻找不到相關(guān)資料。
    發(fā)表于 02-06 06:54

    請問ADC的采樣速率,轉(zhuǎn)換時間,數(shù)字接口之間的讀寫速率之間有什么關(guān)系沒有?

    請問ADC的采樣速率,轉(zhuǎn)換時間,數(shù)字接口之間的讀寫速率之間有什么關(guān)系沒有? 謝謝!
    發(fā)表于 01-23 08:17

    關(guān)系型數(shù)據(jù)庫和非關(guān)系區(qū)別

    關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫在多個方面存在顯著差異,主機推薦小編為您整理發(fā)布關(guān)系型數(shù)據(jù)庫和非關(guān)系區(qū)別,以下是它們的主要
    的頭像 發(fā)表于 01-10 09:58 ?685次閱讀

    ADS1282的SPI時鐘SCLK和芯片主時鐘MCLK有什么關(guān)系嗎?

    ADS1282的SPI時鐘SCLK和芯片主時鐘MCLK有什么關(guān)系嗎? SCLK頻率太高會不會影響ADS1282配置或讀數(shù)失敗?
    發(fā)表于 01-01 08:34

    請問ADC的采樣率和提供的工作頻率是什么關(guān)系

    請問ADC的采樣率和提供的工作頻率是什么關(guān)系?奈奎斯特采樣定理是不是指的采樣頻率?
    發(fā)表于 12-06 06:13

    ADS7869輸入電壓與轉(zhuǎn)換數(shù)據(jù)之間是什么關(guān)系

    ADS7869輸入電壓與轉(zhuǎn)換數(shù)據(jù)之間是什么關(guān)系,芯片手冊上沒有寫,是輸入電壓0V對應輸出2048嗎?輸入達到電壓參考值,輸出是4095?輸入是負的電壓參考值,輸出是0嗎?
    發(fā)表于 11-27 07:05

    EEPROM燒寫與DFU燒寫有什么區(qū)別?

    您好,我想請問一下EEPROM燒寫與DFU燒寫有啥區(qū)別嗎,還有就是我想問一下配置minidsp界面上IADC與IDAC是什么意思,抽取因子跟它是什么關(guān)系?謝謝!
    發(fā)表于 10-31 06:30

    TLV320AIC3254內(nèi)部中的ADC處理模塊和minidsp到底是什么關(guān)系?

    我想請問一下幾個問題: 1.3254內(nèi)部中的ADC處理模塊和minidsp到底是什么關(guān)系,是并列的還是串行關(guān)系?還是ADC處理模塊就是minidsp特殊情況下的部分? 2.minidsp的抽取因子該怎么理解,到底怎么使用?
    發(fā)表于 10-31 06:02

    鉗位能力與電流和負載具體是什么關(guān)系,應該怎么考慮?

    記得錢一段時間請教過這個電路,但是一直也沒弄明白。我想知道鉗位能力與電流和負載具體是什么關(guān)系,應該怎么考慮?為什么要用一個強的源?負載重是啥意思,電流消耗大?在實際應用中使用電源芯片,輸出端也常被負載拉低,這樣說是不是也是鉗位能力不行?鉗位能力怎么理解呢?求教,或者推薦一些資料我自己學,謝謝您了
    發(fā)表于 09-23 08:27

    運放的失真度和總諧波失真有什么關(guān)系,單位都是什么?

    運放的失真度和總諧波失真有什么關(guān)系,單位都是什么?怎么換算?
    發(fā)表于 09-19 08:25

    Dubbo源碼淺析(一)—RPC框架與Dubbo

    時,就像調(diào)用本地過程一樣方便。 1.2 RPC與Http的關(guān)系 用一句話來總結(jié)就是: RPC是一種概念,http是一種協(xié)議,可以認
    的頭像 發(fā)表于 08-16 15:18 ?1159次閱讀
    Dubbo源碼淺析(一)—<b class='flag-5'>RPC</b>框架與Dubbo

    圖像處理器與計算機視覺有什么關(guān)系區(qū)別

    圖像處理器與計算機視覺是兩個在圖像處理領(lǐng)域緊密相連但又有所區(qū)別的概念。它們之間的關(guān)系區(qū)別可以從多個維度進行探討。
    的頭像 發(fā)表于 08-14 09:36 ?1048次閱讀