新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)php中rpc框架的作用是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

什么是遠(yuǎn)程調(diào)用?
通常我們調(diào)用一個(gè)php中的方法,比如這樣一個(gè)函數(shù)方法:localAdd(10,20),localAdd方法的具體實(shí)現(xiàn)要么是用戶自己定義的,要么是php庫函數(shù)中自帶的,也就說在localAdd方法的代碼實(shí)現(xiàn)在本地,它是一個(gè)本地調(diào)用!遠(yuǎn)程調(diào)用意思就是:被調(diào)用方法的具體實(shí)現(xiàn)不在程序運(yùn)行本地,而是在別的某個(gè)遠(yuǎn)程地方。
遠(yuǎn)程調(diào)用原理
比如A(client)調(diào)用B(server)提供的remoteAdd方法:
首先A與B之間建立一個(gè)TCP連接;
然后A把需要調(diào)用的方法名(這里是remoteAdd)以及方法參數(shù)(10,20)序列化成字節(jié)流發(fā)送出去;
B接受A發(fā)送過來的字節(jié)流,然后反序列化得到目標(biāo)方法名,方法參數(shù),接著執(zhí)行相應(yīng)的方法調(diào)用(可能是localAdd)并把結(jié)果30返回;
A接受遠(yuǎn)程調(diào)用結(jié)果,輸出30。
RPC框架就是把我剛才說的這幾點(diǎn)些細(xì)節(jié)給封裝起來,給用戶暴露簡單友好的API使用。
遠(yuǎn)程調(diào)用的好處
解耦:當(dāng)server需要對方法內(nèi)實(shí)現(xiàn)修改時(shí),client完全感知不到,不用做任何變更;這種方式在跨部門,跨公司合作的時(shí)候經(jīng)常用到,并且方法的提供者我們通常稱為:服務(wù)的暴露。
RPC與Socket有什么區(qū)別?
通過上面的簡單闡述,好像RPC與Socket好像啊。都是調(diào)用遠(yuǎn)程的方法,都是client/server模式,我之前也寫了一篇文章:細(xì)說socket那他們有啥區(qū)別呢?
RPC(遠(yuǎn)程過程調(diào)用)采用客戶機(jī)/服務(wù)器模式實(shí)現(xiàn)兩個(gè)進(jìn)程之間相互通信。socket是RPC經(jīng)常采用的通信手段之一,RPC是在Socket的基礎(chǔ)上實(shí)現(xiàn)的,它比socket需要更多的網(wǎng)絡(luò)和系統(tǒng)資源。除了Socket,RPC還有其他的通信方法,比如:http、操作系統(tǒng)自帶的管道等技術(shù)來實(shí)現(xiàn)對于遠(yuǎn)程程序的調(diào)用。微軟的Windows系統(tǒng)中,RPC就是采用命名管道進(jìn)行通信。
RPC與REST有什么區(qū)別?
通過了解RPC后,我們知道是RPC是client/server模式的,調(diào)用遠(yuǎn)程的方法,REST也是我們熟悉的一套API調(diào)用協(xié)議方法,它也是基于client/server模式的,調(diào)用遠(yuǎn)程的方法的,那他倆又有啥區(qū)別呢?
RESTAPI和RPC都是在Server端把一個(gè)個(gè)函數(shù)封裝成接口暴露出去,以供Client端調(diào)用,不過RESTAPI是基于HTTP協(xié)議的,REST致力于通過http協(xié)議中的POST/GET/PUT/DELETE等方法和一個(gè)可讀性強(qiáng)的URL來提供一個(gè)http請求。而RPC則可以不基于HTTP協(xié)議
因此,如果是后端兩種語言互相調(diào)用,用RPC可以獲得更好的性能(省去了HTTP報(bào)頭等一系列東西),應(yīng)該也更容易配置。如果是前端通過AJAX調(diào)用后端,那么用RESTAPI的形式比較好(因?yàn)闊o論如何也避不開HTTP這道坎)。
關(guān)于php中rpc框架的作用是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章名稱:php中rpc框架的作用是什么-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.dlmjj.cn/article/depjsh.html


咨詢
建站咨詢
