繁体   English   中英

如何在C#中使用MessagePack?

[英]How to use MessagePack in C#?

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

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

类(例如没有BoxingPackerCompiledPackerObjectPacker官方文件中所提及)在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-cliCreate方法与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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM