【FFH】OpenHarmony啃論文成長(zhǎng)計(jì)劃---JSON-RPC
原創(chuàng)??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??
大家好! 我是來(lái)自深圳技術(shù)大學(xué)FSR實(shí)驗(yàn)室的同學(xué),標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開(kāi)源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。
參考文獻(xiàn)
JSON-RPC協(xié)議分析、擴(kuò)展及其應(yīng)用–《中國(guó)科技論文在線》2008年02期 (cnki.com.cn)
Web-Based Service Optimization with JSON-RPC Platform in Java and PHP | Haji | International Conference on Engineering and Technology Development (ICETD) (ubl.ac.id)
引言
最近在看JSON相關(guān)的文獻(xiàn)和資料,前面我也寫了兩篇JSON相關(guān)的文章(有興趣的同學(xué)可以去看看):
- OpenHarmony啃論文成長(zhǎng)計(jì)劃—為什么JSON將逐漸取代XML?
- OpenHarmony啃論文成長(zhǎng)計(jì)劃—幾種常見(jiàn)的JSON解析器比較
像我這種有一點(diǎn)小程序或者web開(kāi)發(fā)經(jīng)驗(yàn)的會(huì)對(duì)JSON很熟悉,因?yàn)槲覀兦岸私?jīng)常把信息格式化為JSON,再調(diào)用后端的API進(jìn)行數(shù)據(jù)傳遞,我們也清楚的知道web服務(wù)那一套基本都是基于HTTP協(xié)議的,偶爾使用的是socket進(jìn)行通信。但是最近在學(xué)習(xí)手機(jī)APP的開(kāi)發(fā),并且接觸到了一些分布式的系統(tǒng),發(fā)現(xiàn)JSON也可以通過(guò)RPC作為分布式系統(tǒng)的數(shù)據(jù)交換格式,也是這篇文章將要敘述的,稱為JSON-RPC.
RPC
先來(lái)了解一下什么是RPC,相信大家會(huì)混淆RPC和HTTP,其實(shí)他們兩個(gè)并不是同一層級(jí)的概念,RPC : Remote Procedure Call ,其實(shí)是一個(gè)很寬泛的概念名稱,翻譯過(guò)來(lái)就是遠(yuǎn)程過(guò)程調(diào)用,說(shuō)白了就是一個(gè)機(jī)器遠(yuǎn)程調(diào)用并執(zhí)行另一個(gè)機(jī)器上的函數(shù)。而HTTP是一種協(xié)議,HTTP是屬于一種RPC的實(shí)現(xiàn)方式。
在HarmonyOS有很多地方都用到了RPC方式通信,比如跨設(shè)備調(diào)用,遠(yuǎn)程拉起FA,F(xiàn)A的遷移流轉(zhuǎn)等等。
JSON-RPC
摘要
一般應(yīng)用程序需要本地以外的其他方提供信息。但是這些應(yīng)用程序可能使用的是不同的系統(tǒng)或者平臺(tái)上。web開(kāi)發(fā)上有一種技術(shù)可以使用,通常稱為web service。而在應(yīng)用程序中,JSON-RPC是web service的替代方案之一。比如有兩個(gè)信息互通的應(yīng)用程序,在信息傳遞過(guò)程中,應(yīng)用程序可以執(zhí)行來(lái)自遠(yuǎn)程后端服務(wù)器的業(yè)務(wù),以實(shí)現(xiàn)兩個(gè)程序直接的通信,即通過(guò)使用JSON-RPC來(lái)實(shí)現(xiàn)web服務(wù)。原理如圖:
什么是JSON-RPC?
RPC是一個(gè)簡(jiǎn)單的協(xié)議框架,所以可以用來(lái)構(gòu)建一個(gè)基于web的服務(wù)的新協(xié)議。RPC允許一個(gè)應(yīng)用程序調(diào)用遠(yuǎn)程另外一個(gè)處于不同系統(tǒng)的程序的子進(jìn)程,RPC在傳遞數(shù)據(jù)過(guò)程中使用一種特定的數(shù)據(jù)交換格式,如XML或JSON,作為系統(tǒng)之間的粘合劑。傳輸中數(shù)據(jù)交換格式為JSON格式的RPC 協(xié)議就稱為JSON-RPC。
官方的定義是:JSON-RPC 是一個(gè)無(wú)狀態(tài)的輕量級(jí)的 RPC 協(xié)議。就是說(shuō)JSON-RPC 是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議。通常的處理機(jī)制是在兩個(gè)通信實(shí)體之間建立點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)連接,在連接的生命周期內(nèi),一方可能調(diào)用另一方提供的方法,客戶端發(fā)送一個(gè)請(qǐng)求,而服務(wù)器端給出與之相對(duì)應(yīng)的響應(yīng)。其原理如圖所示:
JSON-RPC的數(shù)據(jù)結(jié)構(gòu)
比如現(xiàn)在我們需要實(shí)現(xiàn)一個(gè)減法的功能,服務(wù)器和本地相互傳遞的數(shù)據(jù)結(jié)構(gòu)很簡(jiǎn)單,如下:
從本質(zhì)上講,請(qǐng)求是通過(guò)方法名、參數(shù)和唯一id發(fā)送的。id很重要,尤其是當(dāng)分布式系統(tǒng)處理來(lái)自多個(gè)源的多個(gè)請(qǐng)求時(shí),因?yàn)樗嬖V被請(qǐng)求系統(tǒng)請(qǐng)求來(lái)自何處,這樣才能使響應(yīng)結(jié)果給到正確的請(qǐng)求者。
JSON-RPC與HTTP的區(qū)別
先看HTTP,http服務(wù)你需要給出對(duì)應(yīng)的接口地址,需要定義http method等等
但是JSON-RPC不需要,因?yàn)樵谡{(diào)用JSON-RPC的時(shí)候客戶端已經(jīng)傳遞了方法名字,還有請(qǐng)求者的id,還是上面的例子:
所以rpc更像是熟人之間的日常交流,而http像是的陌生人之間的約定,RPC(包括JSON-RPC)調(diào)用時(shí),已經(jīng)知道你是誰(shuí),長(zhǎng)什么樣,東西放在哪,也知道你允許他使用上面東西,你直接用就完事了。而http就是你需要事先跟陌生人溝通,商量好怎么借和使用別人的東西,才可以使用上。
??想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??