深圳市磐創網絡科技有限公司
電(diàn) 話(huà):0755-89232086
郵 箱:sz@cecom.cn
網 址:www.panchuangai.net
地 址:深圳市龍崗區龍崗路10号
電(diàn)子商(shāng)務港矽谷動力1210
目前,除了一(yī)些特别簡單非聯網類應用(比如計算器、鬧鍾等),幾乎所有的應用均是聯網應用(比如新聞客戶端,微信等等),這些app客戶端基本都隻是負責用戶的交互與數據收集與展示,真正的數據和服務均存儲在雲端。
那移動端究竟如何和後台來交換數據并展示呢?我(wǒ)們打個比喻,其實整個過程跟去(qù)燒烤店(diàn)兒撸串一(yī)樣一(yī)樣的。
拿任意一(yī)個新聞客戶端舉例,當用戶刷新的那一(yī)刻(你萌生(shēng)了吃燒烤的想法),客戶端開(kāi)始組織數據請求(你開(kāi)始穿衣洗臉打扮,并思考該去(qù)哪一(yī)家吃呢),當用戶界面開(kāi)始展示loading的時候(這個時候你正走在“馬大(dà)姐燒烤店(diàn)”的路上),經過幾百毫秒的時間,這個時候請求數據已經到了服務器(你已經坐在了馬大(dà)姐燒烤店(diàn)的桌子上),服務器開(kāi)始查看客戶端想要請求哪方面的數據,是請求财經頻(pín)道的,還是請求汽車(chē)頻(pín)道的數據(服務員(yuán)遞來了菜單,問你想吃啥),服務器看懂了客戶端的想法開(kāi)始準備數據(你點了20個肉串,10個大(dà)腰子),服務器看到你請求的是汽車(chē)頻(pín)道和财經頻(pín)道的數據(光着膀子的烤串師傅開(kāi)始烤這20個串和10個大(dà)腰子),并給回到服務員(yuán),服務員(yuán)一(yī)路小(xiǎo)跑,将你要的串和腰子遞到你的面前,這個時候相當于數據已經傳回到了客戶端,客戶端loading消失,你看到了最新的兩個頻(pín)道的數據。
那客戶端和服務器之間傳輸數據的格式是怎麽樣的呢?
現在流行的做法通常有兩種,一(yī)種是類似于PB(Protocol Buffer,Google定義的一(yī)個數據傳輸協議,以簡潔,省流,易用出名)的二進制數據(二進制數據的意思就是你打開(kāi)這個文件你隻能看到0和1組成的數字串,是沒辦法和你生(shēng)活中(zhōng)任何認識的字母聯系在一(yī)起的)傳輸,這種格式的好處是包小(xiǎo),重複的字段會被節省。另一(yī)種是JSON(JavaScriptObject Notation),這也是一(yī)種輕量級的數據傳輸格式,就是用一(yī)堆中(zhōng)括号把數據組織起來,不像二進制,這種格式是人可讀的,并且比較輕巧,所以也有大(dà)量的應用場景。下(xià)面這段數據就是JSON格式,簡單解讀一(yī)下(xià),就是people對應了三個人,三個人分(fēn)别是中(zhōng)括号間的三個花括号中(zhōng)的人。
總結起來,十分(fēn)簡單,移動端提出需求,服務器按要求組織好數據發給你,針對不同的格式,移動端自己解析,展示,完活兒。其實,不止移動端,前端網頁和後台,後台和後台之間也是這個道理。至于在傳輸的過程中(zhōng)都經曆了什麽,我(wǒ)們找機會再細聊。