![](/img/trans.png)
[英]How to save & append to a serialized MessagePack binary file in C#?
[英]How to use MessagePack in C#?
我阅读了msgpack-cli快速入门文档。
我还得到了C#(CLI)NuGet包(v0.3)。
类(例如没有BoxingPacker
, CompiledPacker
或ObjectPacker
官方文件中所提及)在NuGet包存在(!!)。 我假设文档已经成为孤儿。
那么有没有人举例说明如何在C#中对MessagePack进行序列化/反序列化? 我正在尝试为对象执行此操作,并且对序列化程序的二进制特性感兴趣。
对于未来的读者: 基于这些结果,我会选择Avro或Protocol Buffers甚至是基于MessagePack的Thrift ......
为了具体问题,关键部分是:
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包,它真的令人困惑,使用哪一个以及如何包含在项目中。 我假设用户想知道如何在.net项目中包含msgpack就像我一样。
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
方法与MessagePackSerializer.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的包。 看到这里的图片:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.