buffer這種輕便的序列化反序列化工具?
原因很簡單:
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 等文本協議;