【SimpleMsgPack.NET】發布一個msgpack協議C#版本的解析開源庫

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   color   使用   sp   for   

        這兩年一直都關注這IOCP在網路通訊這方面的應用,當然資料的傳遞是經常需要的。今年接觸了MsgPack格式,發現他用來做傳輸時資料打包真是太爽了。因為他可以直接打包位元據,不需要任何的轉換。有人會說自己打包也不是什麼難事,是的,沒錯。但是有標準的格式協議,為什麼不直接使用。看了下msgpack的協議格式,壓縮基本上做到了最大化。http://msgpack.org可以瞭解下它的協議格式。

       我的主要工作是Delphi進行開發,Delphi裡面有qmsgpack.自己也寫了一個simpleMsgPack用起來都非常舒服,這陣子晚上想看看C#,畢竟C#用來做用戶端也是不錯的。用了下C#版本的MsgPack 解析,實在是不太習慣,可能我是一個Delphier。後來決定自己寫一個SimpleMsgPack的NET版本。現在基本成型。後續還會繼續添加一些新的東西。可以上git上面直接下載,也可以NuGet中尋找到輸入SimpleMsgPack可以進行下載。源碼請到github上面下載。如果有什麼bug,請一定要聯絡我,我會儘快安排修複。

 

編譯環境:

VS2013 NET Framework 4.5  (在vs2010下面也是可以編譯的, 其他版本沒做測試)

 

開源地址:https://github.com/ymofen/SimpleMsgPack.Net

 

      寫了點簡單的測試代碼。應該大家都看的明白。

MsgPack msgpack = new MsgPack();    msgpack.ForcePathObject("p.name").AsString = "張三";    msgpack.ForcePathObject("p.age").AsInteger = 25;    msgpack.ForcePathObject("p.datas").AsArray.Add(90);    msgpack.ForcePathObject("p.datas").AsArray.Add(80);    msgpack.ForcePathObject("p.datas").AsArray.Add("李四");    msgpack.ForcePathObject("p.datas").AsArray.Add(3.1415926);    // pack file    msgpack.ForcePathObject("p.filedata").LoadFileAsBytes("C:\\a.png");    // pack msgPack binary    byte[] packData = msgpack.Encode2Bytes();    MsgPack unpack_msgpack = new MsgPack();    // unpack msgpack    unpack_msgpack.DecodeFromBytes(packData);    System.Console.WriteLine("name:{0}, age:{1}",          unpack_msgpack.ForcePathObject("p.name").AsString,          unpack_msgpack.ForcePathObject("p.age").AsInteger);    Console.WriteLine("==================================");    System.Console.WriteLine("use index property, Length{0}:{1}",          unpack_msgpack.ForcePathObject("p.datas").AsArray.Length,          unpack_msgpack.ForcePathObject("p.datas").AsArray[0].AsString          );    Console.WriteLine("==================================");    Console.WriteLine("use foreach statement:");    foreach (MsgPack item in unpack_msgpack.ForcePathObject("p.datas"))    {        Console.WriteLine(item.AsString);    }    // unpack filedata     unpack_msgpack.ForcePathObject("p.filedata").SaveBytesToFile("C:\\b.png");    Console.Read();

輸出的結果:

 

看看是不是適合你。目前還是在測試當中,當然也沒有用到具體的項目中。不過後面會慢慢用起來,我準備用來做通訊時的資料打包。如果你發現bug,請聯絡我。

qq:185511468,
email:[email protected]
也可以進群[程式員之家 146605007]@我

【SimpleMsgPack.NET】發布一個msgpack協議C#版本的解析開源庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.