如何在C#中使用MessagePack?
我阅读了msgpack-cli快速入门文档。
我还得到了C#(CLI)NuGet包(v0.3)。
NuGet包(!!)中没有官方文档中提到的类(例如BoxingPacker
, CompiledPacker
或BoxingPacker
)。 我假设文档已经成为孤儿。
那么有没有人举例说明如何在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-cli
, Create
方法与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的包。 看到这里的图片: