當前位置:編程學習大全網 - 編程語言 - 如何選擇傳輸協議及格式

如何選擇傳輸協議及格式

網絡傳輸數據格式的選擇

對於客戶端和服務端的數據傳輸通常會有以下幾點考慮:

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章--透明性:來點兒光 會告訴妳使用文本化協議的好處;

  • 上一篇:用C語言求正弦值?
  • 下一篇:淘寶網為什麽是用PHP程序開發
  • copyright 2024編程學習大全網