回覆列表
-
1 # 大浪不見風
-
2 # 熙爸愛釣魚
原因很簡單:
1,json是JavaScript原生支援的,沒有外部依賴;
2,json具有人眼可讀性;
3,開發人員偷懶;
關於序列化的協議和框架,估計都可以出一本百科全書了,熱門一點的如:
xml、json、bson、Hessian、protocol buffers...
還有很多小眾冷門的,排名不分先後。
雖然有各種各樣的協議和框架,但序列化本質上可以分為兩種:
二進位制協議,如 bson、Hessian、protocol buffers等,將資料轉換為二進位制形式。文字協議,如 xml,json 等,這類協議將資料轉換為文字(字串)的形式。二進位制協議的優點是體積小效率高,例如protocol buffers可以用將資料壓縮到位(bit),序列化和反序列化的效能也很好,非常適用於各種系統通訊和介面呼叫。
但問題也在這裡,二進位制資料幾乎沒有可讀性,所以在開發和除錯程式時,對程式設計師來說就比較痛苦,尤其是頻繁變化的資料結構。
文字協議則剛好相反,資料體積大,效能差,卻能滿足可讀性要求。例如我們可以輕鬆看懂一段json,或者人肉構造資料。 對於快速開發和web開發來說,可以提高開發效率,開發人員不用過多關注協議或者框架,專注業務。
我的觀點是:
1,對於業務穩定,效能要求極高的場景,優先使用 protocol buffers 等二進位制序列化協議;
2,對於效能要求不高,業務變化頻繁的場景,優先使用 json、xml 等文字協議;
原因無非這幾個:
1.歷史遺留原因,比如歷史已有的資料,配置等,總不能給拋棄了吧
2.開發人員的使用習慣,以及歷史程式碼積累
3.開放程度與普及度
4. 在特定領域,特定環境下的優劣勢,或者說,是否有多大的必要性要去替換它?