聊聊前端和后臺(tái)的數(shù)據(jù)交互與協(xié)議

目前,除了一些特別簡(jiǎn)單非聯(lián)網(wǎng)類應(yīng)用(比如計(jì)算器、鬧鐘等),幾乎所有的應(yīng)用均是聯(lián)網(wǎng)應(yīng)用(比如新聞客戶端,微信等等),這些 app 客戶端基本都只是負(fù)責(zé)用戶的交互與數(shù)據(jù)收集與展示,真正的數(shù)據(jù)和服務(wù)均存儲(chǔ)在云端。

那移動(dòng)端究竟如何和后臺(tái)來(lái)交換數(shù)據(jù)并展示呢?我們打個(gè)比喻,其實(shí)整個(gè)過(guò)程跟去燒烤店兒擼串一樣一樣的。

拿任意一個(gè)新聞客戶端舉例,當(dāng)用戶刷新的那一刻(你萌生了吃燒烤的想法),客戶端開(kāi)始組織數(shù)據(jù)請(qǐng)求(你開(kāi)始穿衣洗臉打扮,并思考該去哪一家吃呢),當(dāng)用戶界面開(kāi)始展示 loading 的時(shí)候(這個(gè)時(shí)候你正走在 “馬大姐燒烤店” 的路上),經(jīng)過(guò)幾百毫秒的時(shí)間,這個(gè)時(shí)候請(qǐng)求數(shù)據(jù)已經(jīng)到了服務(wù)器(你已經(jīng)坐在了馬大姐燒烤店的桌子上),服務(wù)器開(kāi)始查看客戶端想要請(qǐng)求哪方面的數(shù)據(jù),是請(qǐng)求財(cái)經(jīng)頻道的,還是請(qǐng)求汽車頻道的數(shù)據(jù)(服務(wù)員遞來(lái)了菜單,問(wèn)你想吃啥),服務(wù)器看懂了客戶端的想法開(kāi)始準(zhǔn)備數(shù)據(jù)(你點(diǎn)了 20 個(gè)肉串,10 個(gè)大腰子),服務(wù)器看到你請(qǐng)求的是汽車頻道和財(cái)經(jīng)頻道的數(shù)據(jù)(光著膀子的烤串師傅開(kāi)始烤這 20 個(gè)串和 10 個(gè)大腰子),并給回到服務(wù)員,服務(wù)員一路小跑,將你要的串和腰子遞到你的面前,這個(gè)時(shí)候相當(dāng)于數(shù)據(jù)已經(jīng)傳回到了客戶端,客戶端 loading 消失,你看到了最新的兩個(gè)頻道的數(shù)據(jù)。

那客戶端和服務(wù)器之間傳輸數(shù)據(jù)的格式是怎么樣的呢?

現(xiàn)在流行的做法通常有兩種,一種是類似于 PB(Protocol Buffer,Google 定義的一個(gè)數(shù)據(jù)傳輸協(xié)議,以簡(jiǎn)潔,省流,易用出名)的二進(jìn)制數(shù)據(jù)(二進(jìn)制數(shù)據(jù)的意思就是你打開(kāi)這個(gè)文件你只能看到 0 和 1 組成的數(shù)字串,是沒(méi)辦法和你生活中任何認(rèn)識(shí)的字母聯(lián)系在一起的)傳輸,這種格式的好處是包小,重復(fù)的字段會(huì)被節(jié)省。另一種是 JSON(JavaScriptObject Notation),這也是一種輕量級(jí)的數(shù)據(jù)傳輸格式,就是用一堆中括號(hào)把數(shù)據(jù)組織起來(lái),不像二進(jìn)制,這種格式是人可讀的,并且比較輕巧,所以也有大量的應(yīng)用場(chǎng)景。下面這段數(shù)據(jù)就是 JSON 格式,簡(jiǎn)單解讀一下,就是 people 對(duì)應(yīng)了三個(gè)人,三個(gè)人分別是中括號(hào)間的三個(gè)花括號(hào)中的人。

總結(jié)起來(lái),十分簡(jiǎn)單,移動(dòng)端提出需求,服務(wù)器按要求組織好數(shù)據(jù)發(fā)給你,針對(duì)不同的格式,移動(dòng)端自己解析,展示,完活兒。其實(shí),不止移動(dòng)端,前端網(wǎng)頁(yè)和后臺(tái),后臺(tái)和后臺(tái)之間也是這個(gè)道理。至于在傳輸?shù)倪^(guò)程中都經(jīng)歷了什么,我們找機(jī)會(huì)再細(xì)聊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容