這篇文章將為大家詳細(xì)講解有關(guān)php中rpc框架的作用是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站專注于扶余網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供扶余營(yíng)銷(xiāo)型網(wǎng)站建設(shè),扶余網(wǎng)站制作、扶余網(wǎng)頁(yè)設(shè)計(jì)、扶余網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造扶余網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供扶余網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
通常我們調(diào)用一個(gè)php中的方法,比如這樣一個(gè)函數(shù)方法:localAdd(10,20),localAdd方法的具體實(shí)現(xiàn)要么是用戶自己定義的,要么是php庫(kù)函數(shù)中自帶的,也就說(shuō)在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ā)送過(guò)來(lái)的字節(jié)流,然后反序列化得到目標(biāo)方法名,方法參數(shù),接著執(zhí)行相應(yīng)的方法調(diào)用(可能是localAdd)并把結(jié)果30返回;
A接受遠(yuǎn)程調(diào)用結(jié)果,輸出30。
RPC框架就是把我剛才說(shuō)的這幾點(diǎn)些細(xì)節(jié)給封裝起來(lái),給用戶暴露簡(jiǎn)單友好的API使用。
遠(yuǎn)程調(diào)用的好處
解耦:當(dāng)server需要對(duì)方法內(nèi)實(shí)現(xiàn)修改時(shí),client完全感知不到,不用做任何變更;這種方式在跨部門(mén),跨公司合作的時(shí)候經(jīng)常用到,并且方法的提供者我們通常稱為:服務(wù)的暴露。
通過(guò)上面的簡(jiǎn)單闡述,好像RPC與Socket好像啊。都是調(diào)用遠(yuǎn)程的方法,都是client/server模式,我之前也寫(xiě)了一篇文章:細(xì)說(shuō)socket那他們有啥區(qū)別呢?
RPC(遠(yuǎn)程過(guò)程調(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ù)來(lái)實(shí)現(xiàn)對(duì)于遠(yuǎn)程程序的調(diào)用。微軟的Windows系統(tǒng)中,RPC就是采用命名管道進(jìn)行通信。
通過(guò)了解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)用,不過(guò)RESTAPI是基于HTTP協(xié)議的,REST致力于通過(guò)http協(xié)議中的POST/GET/PUT/DELETE等方法和一個(gè)可讀性強(qiáng)的URL來(lái)提供一個(gè)http請(qǐng)求。而RPC則可以不基于HTTP協(xié)議
因此,如果是后端兩種語(yǔ)言互相調(diào)用,用RPC可以獲得更好的性能(省去了HTTP報(bào)頭等一系列東西),應(yīng)該也更容易配置。如果是前端通過(guò)AJAX調(diào)用后端,那么用RESTAPI的形式比較好(因?yàn)闊o(wú)論如何也避不開(kāi)HTTP這道坎)。
關(guān)于php中rpc框架的作用是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。