国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【SimpleMsgPack.NET】發(fā)布一個(gè)msgpack協(xié)議C#版本的解析開源庫

2019-11-17 02:42:17
字體:
供稿:網(wǎng)友

【SimpleMsgPack.NET】發(fā)布一個(gè)msgpack協(xié)議C#版本的解析開源庫

這兩年一直都關(guān)注這IOCP在網(wǎng)絡(luò)通信這方面的應(yīng)用,當(dāng)然數(shù)據(jù)的傳遞是經(jīng)常需要的。今年接觸了MsgPack格式,發(fā)現(xiàn)他用來做傳輸時(shí)數(shù)據(jù)打包真是太爽了。因?yàn)樗梢灾苯哟虬M(jìn)制數(shù)據(jù),不需要任何的轉(zhuǎn)換。有人會(huì)說自己打包也不是什么難事,是的,沒錯(cuò)。但是有標(biāo)準(zhǔn)的格式協(xié)議,為什么不直接使用。看了下msgpack的協(xié)議格式,壓縮基本上做到了最大化。http://msgpack.org可以了解下它的協(xié)議格式。

我的主要工作是Delphi進(jìn)行開發(fā),Delphi里面有qmsgpack.自己也寫了一個(gè)simpleMsgPack用起來都非常舒服,這陣子晚上想看看C#,畢竟C#用來做客戶端也是不錯(cuò)的。用了下C#版本的MsgPack 解析,實(shí)在是不太習(xí)慣,可能我是一個(gè)Delphier。后來決定自己寫一個(gè)SimpleMsgPack的NET版本。現(xiàn)在基本成型。后續(xù)還會(huì)繼續(xù)添加一些新的東西。可以上git上面直接下載,也可以NuGet中查找到輸入SimpleMsgPack可以進(jìn)行下載。源碼請(qǐng)到github上面下載。如果有什么bug,請(qǐng)一定要聯(lián)系我,我會(huì)盡快安排修復(fù)。

編譯環(huán)境:

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

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

寫了點(diǎn)簡(jiǎn)單的測(cè)試代碼。應(yīng)該大家都看的明白。

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();

輸出的結(jié)果:

image

看看是不是適合你。目前還是在測(cè)試當(dāng)中,當(dāng)然也沒有用到具體的項(xiàng)目中。不過后面會(huì)慢慢用起來,我準(zhǔn)備用來做通信時(shí)的數(shù)據(jù)打包。如果你發(fā)現(xiàn)bug,請(qǐng)聯(lián)系我。

QQ:185511468, email:ymofen@diocp.org 也可以進(jìn)群[程序員之家 146605007]@我


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瓮安县| 梅河口市| 诸暨市| 介休市| 金溪县| 辰溪县| 庆云县| 赫章县| 雷波县| 深水埗区| 广州市| 吴川市| 常宁市| 田阳县| 炉霍县| 永仁县| 旅游| 木兰县| 沅陵县| 务川| 广安市| 玉环县| 克什克腾旗| 乐平市| 汪清县| 广丰县| 石城县| 汉寿县| 南汇区| 大埔县| 万年县| 宝山区| 夏津县| 静乐县| 崇礼县| 资兴市| 沁阳市| 玉门市| 佳木斯市| 江孜县| 永吉县|