如何在C#中使用MessagePack?

我阅读了msgpack-cli快速入门文档。

我还得到了C#(CLI)NuGet包(v0.3)。

NuGet包(!!)中没有官方文档中提到的类(例如BoxingPackerCompiledPackerBoxingPacker )。 我假设文档已经成为孤儿。

那么有没有人举例说明如何在C#中对MessagePack进行序列化/反序列化? 我正在尝试为对象执行此操作,并且对序列化程序的二进制特性感兴趣。

对于未来的读者: 基于这些结果,我会使用Avro或Protocol Buffers甚至是基于MessagePack的Thrift ……

为了具体问题,关键部分是:

 public byte[] Serialize(T thisObj) { var serializer = MessagePackSerializer.Create(); using (var byteStream = new MemoryStream()) { serializer.Pack(byteStream, thisObj); return byteStream.ToArray(); } } public T Deserialize(byte[] bytes) { var serializer = MessagePackSerializer.Create(); using (var byteStream = new MemoryStream(bytes)) { return serializer.Unpack(byteStream); } } 

整个研发类型的项目,结果在https://github.com/sidshetye/SerializersCompare ,具体的函数调用在这里 。

我很惊讶,没有人理解用户的要求。 msgpack有很多nuget包,它真的让人困惑,要使用哪一个以及如何包含在项目中。 我假设用户想知道如何像我一样在.net项目中包含msgpack。

 Install MessagePack for CLI from Nuget packages 

然后像这样包括

 using MsgPack.Serialization; 

我在以下url找到了一个例子: http : //www.irisclasson.com/2012/12/17/serializing-and-deserializing-packingunpacking-to-a-file-andor-memorystream-with-messagepack-in-c/我测试它在我的代码中,并通过zmq将Byte []数据发送到另一台主机。 有用。

在最新版本的msgpack-cliCreate方法与MessagePackSerializer.Create(); 被标记为已过时。

项目的github页面中给出的示例用法可能是:

 // Creates serializer. var serializer = SerializationContext.Default.GetSerializer(); // Pack obj to stream. serializer.Pack(stream, obj); // Unpack from stream. var unpackedObject = serializer.Unpack(stream); 

从NuGet安装名为MsgPack的包。 看到这里的图片:

在此处输入图像描述