我的java天地

          各數據交換的協議優劣比較

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

          如何選擇數據交換協議

            選擇什么樣的協議跟我們的應用場景有很大的關系。我們需要考慮我們開發是否方便、接口是否容易發布、是否需要考慮帶寬占用成本、序列化和反序列化的性能、接口協議的擴展性等等。下面我們看下幾個比較常用的交換協議實現。

          協議 實現 跨語言 性能 傳輸量 RPC
          xml 廣泛 幾乎所有 很大 N(可實現)
          json 廣泛 大量 一般 一般 N(可實現)
          php serialize PHPRPC 大量 一般 一般 Y
          hessian hessian 大量 一般 Y
          thrift thrift 大量 Y
          protobuf protobuf 大量 N(可實現)
          ice ice 大量 Y
          avro Apache Avro 少量 Y
          messagepack messagepack 大量 Y

            上面表格列出了一些常用數據交換協議的一些特性的比較。這里并沒有比較好壞,只是想說明不同數據交換協議是有區別的,所以我們需要在我們的應用場景中進行選擇。

           messagepack相關資料

          http://pluto418.iteye.com/blog/1108457
          優勢:
          1.序列化和反序列化所需要的時間少。通過30000條的記錄來測試,msgpack序列化的時間比使用jason來序列化JSON的時間要少三分之一;而反序列化的時間則要少一半。
          2.生成的文件體積小。同樣也是基于30000條記錄來測試,msgpack序列化后生成的二進制文件比用jason序列化出來的時間要少一半。

          劣勢:
          1.msgpack對復雜的數據類型(List、Map)支持的不夠,序列化沒有問題,但是反序列化回來就很麻煩,尤其是對于java開發人員。
          2.在上面也提到過,msgpack是通過value的順序來定位屬性的,那么需要在不同的語言中都要維護同樣的模型以及模型中屬性的順序。這個會讓開發人員很困擾。
          3.msgpack無法支持在模型中包含和嵌套其他自定義的模型(如weibo模型中包含comment的列表)。

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

          posted on 2011-12-26 10:57 tobyxiong 閱讀(18798) 評論(0)  編輯  收藏 所屬分類: java

          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 贞丰县| 弥渡县| 辽阳市| 东丽区| 临湘市| 左贡县| 临泽县| 噶尔县| 曲麻莱县| 互助| 长阳| 电白县| 临泽县| 许昌县| 来凤县| 辽宁省| 库伦旗| 马山县| 清水河县| 克什克腾旗| 苗栗市| 昌乐县| 湟中县| 诸暨市| 泸定县| 霞浦县| 华池县| 新昌县| 寻乌县| 邵阳县| 台山市| 台北县| 清徐县| 安国市| 财经| 新和县| 曲水县| 盈江县| 钟祥市| 慈利县| 双城市|