日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈几种序列化协议

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈几种序列化协议 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
工作中用過幾種知名的序列化協(xié)議,說說自己的感受吧,先獨立講各自的概念,然后比較下他們的優(yōu)缺點。
JSON(Javascript Object Notation)官方網(wǎng)站是這樣敘述的:一種輕量級的資料交換語言。易于人閱讀和編寫。同時也易于機器解析和生成。json有兩種結構:1.名稱/值,例如:{
??"name"??: "xiaoming",
??"age"??:????12
}
你也可以再嵌套一層,例如:{
??"name":
??{
????"first_name" : "xiao",
????"last_name" : "ming"
??},
??"age" :12
}
2.值的有序列表,例如:{
??"week":
??[
????"monday",
????"tuesday"
??]
}
也可以這樣,例如{
??"week":
??[????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????{"english""monday",??"chinese""星期一"},
????{"english""tuesday", "chinese""星期二"}
??]
}
怎么樣,是不是很直觀,組合方式也很自由。所以很多文檔型數(shù)據(jù)庫都采用json作為存儲結構;
json提供對多種編程語言的支持,詳見官網(wǎng)http://www.json.org, 我使用過c++的libjson,注意操作時加上異常處理,否則約定錯誤時解析會導致程序崩潰, javascript更簡單,直接加進json.js即可。
XML:(Extensible Markup Language)大名鼎鼎的xml語言,對于他只講講解析方式吧!
第一類是基于XML文檔樹結構的解析,如DOM(Document Object Model);第二類是基于流式的解析,如SAX(Simple API for XML)、StAX(Stream API for XML)和XPP(XML Pull Parser);第三類是基于非提取式的解析,例如VTD-XML(Virtual Token Description for XML)。
這里有篇詳細介紹這幾種解析方式概念和適用場景的文章,講述的很好,希望大家參閱http://blog.csdn.net/liuhuang007/article/details/6252569
protobuf:google提供的一個開源序列化框架,官網(wǎng)是這樣解釋的“Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.”
總結一下特點:是基于二進制的,開發(fā)人員按照它提供的語法規(guī)則定義好消息格式,然后利用它提供好的編譯工具自動生成相關的類,就可以很輕松的通過調(diào)用相關方法完成消息的序列化與反序列化。具體如何使用請大家參考官方文檔http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html
結合自己的實踐(c++語言)比較下三者:
序列化和反序列化的效率:protobuf高于json,json高于xml;
可讀性:xml和json我覺得難分伯仲,但是他們都好于protobuf的二進制格式;
編碼復雜度:xml高于json和protobuf,至于json和protobuf,流程上protobuf要復雜些,json只要引入相應的庫就行了,而protobuf首先要按規(guī)則寫消息結構,然后編譯成相應的類。
適用場景:我認為xml比較適合與本地存儲配置文件,而json和protobuf適合于進程間消息通訊或網(wǎng)絡間消息通訊(注:soap是基于xml的,也許當時人們普遍認為xml是銀彈吧)


總結

以上是生活随笔為你收集整理的浅谈几种序列化协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。