<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .net自帶二進制序列化,XML序列化和ProtoBuf序列化的壓縮對比

      測試結果:
      ProtoBuf Length:115
      BinaryFormatter Length:1177
      XmlSerializer Length:814
      xml length:825
      做了一個各種序列化方案的壓縮比例測試,可以看到protobuf序列化后的大小是xml原始格式的8分之一,是xml序列化后的8分之一,是二進制序列化的10分之一,總體看來ProtoBuf的優勢還是很明顯的,不過ProtoBuf.net不是google官方提供的,也許和其它平臺不兼容,但如果做.NET服務端應用,兩邊都是.NET,還是可以適用的,即使有一邊不是.NET,反正是開源的東西,協議也有,也可以自己實現相應語言的兼容ProtoBuf.net的協議棧。
      SOAPFormatter沒有測試,一般用的不多。還有就是怪事了,為什么二進制序列化反而大呢,奇怪了。
      本次測試主要考慮協議的壓縮率的比較,不考慮序列化/解序列化的速度,官方聲明比XML解析要快幾十倍,有空看下它的實現代碼,我的SVN老下載不下來code.google的代碼,汗了。

      測試代碼如下

      internal class Program
      {
          
      private static void Main(string[] args)
          {
              MemoryStream ms 
      = null;
              Customer customer 
      = Customer.GetOneCustomer();

              
      using (ms = new MemoryStream())
              {
                  Serializer.Serialize(ms, customer);
                  Console.WriteLine(
      "ProtoBuf Length:{0}", ms.Length);
              }
              
      using (ms = new MemoryStream())
              {
                  var formater 
      = new BinaryFormatter();
                  formater.Serialize(ms, customer);
                  Console.WriteLine(
      "BinaryFormatter Length:{0}", ms.Length);
              }
              
      using (ms = new MemoryStream())
              {
                  var serializer 
      = new XmlSerializer(typeof (Customer));
                  serializer.Serialize(ms, customer);
                  Console.WriteLine(
      "XmlSerializer Length:{0}", ms.Length);
              }

              
      string xml =
                  
      @"<?xml version=""1.0"" ?>
       <Customer xmlns=""urn:Sep2003Example"">
      <CustomerID>ALFKI</CustomerID>
      <PO>9572658</PO>
      <Address>
          <Street>One Main Street</Street>
          <City>Anywhere</City>
          <State>NJ</State>
          <Zip>08080</Zip>
      </Address>
      <Order>
          <OrderID>10966</OrderID >
          <LineItem>
              <ProductID>37</ProductID>
              <UnitPrice>26.50 </UnitPrice>
              <Quantity>8</Quantity>
              <Description>Gravad lax </Description>             
          </LineItem>
          <LineItem>
              <ProductID>56 </ProductID>
              <UnitPrice>38.00</UnitPrice>
              <Quantity>12</Quantity>
              <Description>Gnocchi di nonna Alice</Description>             
          </LineItem>
      </Order>     
      </Customer>
      ";
              Console.WriteLine(
      "xml length:{0}", Encoding.UTF8.GetByteCount(xml));
              Console.ReadKey();
          }
      }


      相關數據結構如下
       

       

      [ProtoContract]
      [Serializable]
      public class Customer {
          [ProtoMember(
      1)]
          
      public string CustomerID { getset; }
          [ProtoMember(
      2)]
          
      public int PO { getset; }
          [ProtoMember(
      3)]
          
      public Address Address { getset; }
          [ProtoMember(
      4)]
          
      public Order Order { getset; }

          
      public static Customer GetOneCustomer() {
              Customer customer 
      = new Customer {
                  CustomerID 
      = "ALFKI",
                  PO 
      = 9572658,
                  Address 
      = new Address {
                      Street 
      = "One Main Street",
                      City 
      = "Anywhere",
                      State 
      = "NJ",
                      Zip 
      = 08080
                  },
                  Order 
      = new Order {
                      OrderID 
      = 10966,
                      LineItems 
      = new List<LineItem>
                          {
                              
      new LineItem
                                  {
                                      ProductID 
      = 37,
                                      UnitPrice 
      = 26.50M,
                                      Quantity 
      =8,
                                      Description 
      ="Gravad lax"
                                  },
                              
      new LineItem
                                  {
                                      ProductID 
      = 56,
                                      UnitPrice 
      = 38.00M,
                                      Quantity 
      =12,
                                      Description 
      ="Gnocchi di nonna Alice"    
                                  }
                          }
                  }
              };
              
      return customer;
          }
      }

      [ProtoContract]
      [Serializable]
      public class Address {
          [ProtoMember(
      1)]
          
      public string Street { getset; }
          [ProtoMember(
      2)]
          
      public string City { getset; }
          [ProtoMember(
      3)]
          
      public string State { getset; }
          [ProtoMember(
      4)]
          
      public int Zip { getset; }
      }

      [ProtoContract]
      [Serializable]
      public class Order {
          [ProtoMember(
      1)]
          
      public int OrderID { getset; }
          [ProtoMember(
      2)]
          
      public List<LineItem> LineItems { getset; }
      }

      [ProtoContract]
      [Serializable]
      public class LineItem {
          [ProtoMember(
      1)]
          
      public int ProductID { getset; }
          [ProtoMember(
      2)]
          
      public decimal UnitPrice { getset; }
          [ProtoMember(
      3)]
          
      public int Quantity { getset; }
          [ProtoMember(
      4)]
          
      public string Description { getset; }
      }


      相關鏈接
      Protocol Buffers 性能測試
      http://hellobmw.com/archives/protocol-buffers-performance.html
      Windows Communication Protocols (MCPP)
      http://msdn.microsoft.com/en-us/library/cc216513(PROT.10).aspx
      淺談如何使用.NET存儲XML數據
      http://developer.51cto.com/art/200905/122238.htm
      .net下二進制序列化的格式分析[轉]
      http://www.rzrgm.cn/lxinxuan/archive/2006/09/06/496340.html
      Protocol Buffers Encoding
      http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/encoding.html

      posted @ 2009-07-02 23:00  蛙蛙王子  Views(11746)  Comments(31)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕无码中字| 99re热视频这里只精品| 免费无码高H视频在线观看| 久久中精品中文字幕入口 | 亚洲色大成网站www久久九九 | 亚洲中文无码av在线| 水蜜桃av无码| 久久精品免视看国产成人| 亚洲男人的天堂av手机在线观看| 成人区人妻精品一区二蜜臀| 少妇人妻偷人偷人精品| 免费无码av片在线观看中文| 色吊丝中文字幕在线观看| 亚洲精品一区二区动漫| 沙田区| 日韩高清不卡一区二区三区| 亚洲国产欧美一区二区好看电影| 依依成人精品视频在线观看| 亚洲av一本二本三本| 午夜福利看片在线观看| 定结县| 热久在线免费观看视频| 午夜通通国产精品福利| 饥渴的熟妇张开腿呻吟视频| 欧美高清freexxxx性| 亚洲欧洲一区二区精品| 18成人片黄网站www| 久久国内精品一区二区三区 | 自拍偷自拍亚洲一区二区| 亚洲av激情久久精品人| 99RE6在线观看国产精品| 亚洲第一区二区快射影院| 激情五月天一区二区三区| 国产AV福利第一精品| 亚洲中文字幕在线二页| 欧美乱码卡一卡二卡四卡免费| 亚洲av无码乱码在线观看牲色| 亚洲人成网线在线播放VA| 北岛玲中文字幕人妻系列| 人妻在线无码一区二区三区| 荔浦县|