什么是rpc?
遠(yuǎn)程過程調(diào)用(英語(yǔ):Remote Procedure Call漓踢,縮寫為 RPC)是一個(gè)計(jì)算機(jī)通信協(xié)議。該協(xié)議允許運(yùn)行于一臺(tái)計(jì)算機(jī)的程序調(diào)用另一臺(tái)計(jì)算機(jī)的子程序裆悄,而程序員無需額外地為這個(gè)交互作用編程。如果涉及的軟件采用面向?qū)ο缶幊?/a>,那么遠(yuǎn)程過程調(diào)用亦可稱作遠(yuǎn)程調(diào)用或遠(yuǎn)程方法調(diào)用.
rpc需要考慮哪些點(diǎn)?
- 傳遞:參數(shù)(值類型)
- 傳遞:參數(shù)(引用類型)
復(fù)制所有值
規(guī)定好協(xié)議(序列化寞埠?xml,json?)
大端小端編碼
- 通信協(xié)議:(tcp/ip?)
- 其他:安全焊夸,效率仁连,異步回調(diào)等
requestid,存儲(chǔ)request和回調(diào)函數(shù)的對(duì)應(yīng)關(guān)系
rpc vs http?
如果你想只記住一點(diǎn),那么就請(qǐng)記住 RPC是以動(dòng)詞為中心的, REST是以名詞為中
心的, 此處的 動(dòng)詞指的是一些方法, 名詞是指資源.
你會(huì)發(fā)現(xiàn),以動(dòng)詞為中心,意味著,當(dāng)你要需要加入新功能時(shí),你必須要添加更多的動(dòng)詞,
這時(shí)候服務(wù)器端需要實(shí)現(xiàn) 相應(yīng)的動(dòng)詞(方法), 客戶端需要知道這個(gè)新的動(dòng)詞并進(jìn)行調(diào)
用.
而以名詞為中心, 假使我請(qǐng)求的是 hostname/friends/, 無論這個(gè)URI對(duì)應(yīng)的服務(wù)怎么
變化,客戶端是無需 關(guān)注和更新的,而這種變化對(duì)客戶端也是透明的.
至于其它的區(qū)別,如對(duì)實(shí)現(xiàn)語(yǔ)言的依賴, 耦合性等,這些都是上面提到的這個(gè)根本區(qū)別所衍生的.