部落格引用於:
對於客戶端和服務端的資料傳輸通常會有以下幾點考慮:
1.網路資料大小——占用頻寬,傳輸效率:雖然對單個使用者來說,資料量傳輸很小,但是對於伺服器端要承受眾多的高併發資料傳輸,必須要考慮到資料占用頻寬,盡量不要有冗餘資料,這樣才能夠少占用頻寬,少占用資源,少網路io,提高傳輸效率;
2.網路資料安全性——敏感資料的網路安全:對於相關業務的部分資料傳輸都是敏感資料,所以必須考慮對部分傳輸資料進行加密;
3. 編碼複雜度——序列化和反序列化複雜度,效率,資料結構的可擴充套件性,可維護性:對於平台相關業務的**實現也需要考慮到資料傳送方和資料接收方資料處理的複雜度和資料結構的可擴充套件性,可維護性,人力成本和實施複雜度也必須考慮在內;
4.以下我們通過幾種不同類別的協議資料型別進行比較:
自定義二進位制
優點:資訊體積小,對應以上」1「
缺點:編碼複雜度高(自己定義訊息格式,自己編寫序列化和反序列化方法,自己進行容錯處理,可擴充套件性不強,比如新增個字段,就必須改兩端的邏輯處理),對應以上」3「;
提供序列化和反序列化庫的開源協議 比如
protocol buffers,
json,
thrift
優點:是一種流行的通用資料格式,擴充套件相當方便,序列化和反序列化相當方便(有相應庫),錯誤處理方便(庫支援);
文字化協議
比如xml,json
優點:序列化,反序列化容易(庫支援),除錯方便,視覺化強
缺點:相對於二進位制儲存占用體積大
如果是你,你會選擇哪種協議?
我會選擇json,因為他是「提供序列化和反序列化庫的開源協議還是文字化的協議」,原因如下:
1.自定義二進位制格式進行傳輸的工作,整個過程在定義訊息,write,read的過程過於複雜,還很容易出錯,對於很多資料互動的程式,會花費大量的時間在上面;
2.自定義二進位制格式不便於擴充套件,但json可以很好地解決這種問題;
3.雖然相比較二進位制,json的占用空間稍大,但是我們可以通過網路資料壓縮來解決,況且json本身也是輕量級的,傳輸效率也很高;
4.去看《unix程式設計藝術》吧,第5章--文字化,好協議產生好實踐;第6章--透明性:來點兒光 會告訴你使用文字化協議的好處;
JSON的資料格式
1.json是一種輕量級的資料互動格式。2.json的語法有三種型別的值 簡單值 不包含undefined 物件,陣列 3.json不支援變數,函式或物件例項 4.json字串必須使用雙引號 單引號會導致語法錯誤 5.json和js物件的區別 a 沒有宣告變數 json中沒有變數的概念 b 沒有末尾...
LAS的資料格式
從本質上來說,las格式是一種二進位制檔案格式。其目的是提供一種開放的格式標準,允許不同的硬體和軟體提供商輸出可互操作的統一格式。現在las格式檔案已成為lidar資料的工業標準格式。las檔案按每條掃瞄線排列方式存放資料,包括雷射點的三維座標 多次回波資訊 強度資訊 掃瞄角度 分類資訊 飛行航帶資...
Json資料格式
在web 系統開發中,經常會碰到客戶端和伺服器端互動的問題,比如說客戶端傳送乙個 ajax 請求,然後在伺服器端進行計算,計算後返回結果,客戶端接收到這個響應結果並對它進行處理。那麼這個結果以一種什麼資料結構返回,客戶端才能比較容易和較好的處理呢?通過幾個專案的實踐,我發現 json 格式的資料是一...