我阅读了msgpack-cli 快速入门文档。
我还获得了 C# (CLI) NuGet 包 (v0.3)。
NuGet 包 (!!) 中不存在官方文档中提到的类(例如BoxingPacker
,CompiledPacker
或ObjectPacker
)。我假设文档已被孤立。
那么有没有人有示例如何在 C# 中序列化/反序列化到 MessagePack 或从 MessagePack 序列化/反序列化?我正在尝试为一个对象执行此操作,并且对序列化程序的二进制性质感兴趣。
我阅读了msgpack-cli 快速入门文档。
我还获得了 C# (CLI) NuGet 包 (v0.3)。
NuGet 包 (!!) 中不存在官方文档中提到的类(例如BoxingPacker
,CompiledPacker
或ObjectPacker
)。我假设文档已被孤立。
那么有没有人有示例如何在 C# 中序列化/反序列化到 MessagePack 或从 MessagePack 序列化/反序列化?我正在尝试为一个对象执行此操作,并且对序列化程序的二进制性质感兴趣。
致未来的读者:根据这些结果,我会选择 Avro 或 Protocol Buffers 甚至 Thrift over MessagePack ...
为了具体问题,关键部分是:
public byte[] Serialize<T>(T thisObj)
{
var serializer = MessagePackSerializer.Create<T>();
using (var byteStream = new MemoryStream())
{
serializer.Pack(byteStream, thisObj);
return byteStream.ToArray();
}
}
public T Deserialize<T>(byte[] bytes)
{
var serializer = MessagePackSerializer.Create<T>();
using (var byteStream = new MemoryStream(bytes))
{
return serializer.Unpack(byteStream);
}
}
整个研发类型的项目,结果在https://github.com/sidshetye/SerializersCompare,具体的函数调用在这里。
我很惊讶,没有人理解用户的要求。msgpack 有很多 nuget 包,使用哪个以及如何包含在项目中确实令人困惑。我假设用户想知道如何像我一样将 msgpack 包含在 .net 项目中。
Install MessagePack for CLI from Nuget packages
然后像这样包含
using MsgPack.Serialization;
我在以下位置找到了一个示例: 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
如 inMessagePackSerializer.Create<T>();
被标记为已过时。
项目的github 页面中给出的示例用法可能是:
// Creates serializer.
var serializer = SerializationContext.Default.GetSerializer<T>();
// Pack obj to stream.
serializer.Pack(stream, obj);
// Unpack from stream.
var unpackedObject = serializer.Unpack(stream);
从 NuGet 安装名为 MsgPack 的包。看这里的图片: