相关疑难解决方法(0)

Protobuf-net是否具有用于序列化的内置压缩?

我正在BinaryFormatter和Protobuf-net序列化器进行一些比较,并对我发现的内容非常满意,但奇怪的是,Protobuf-net设法将对象序列化为比我刚写入值时更小的字节数组.将每个属性转换为没有任何元数据的字节数组.

我知道如果设置AsReference为Protobuf-net支持字符串实习true,但在这种情况下我不是这样做的,那么Protobuf-net默认提供一些压缩吗?

以下是您可以运行以查看的一些代码:

var simpleObject = new SimpleObject
                       {
                           Id = 10,
                           Name = "Yan",
                           Address = "Planet Earth",
                           Scores = Enumerable.Range(1, 10).ToList()
                       };

using (var memStream = new MemoryStream())
{
    var binaryWriter = new BinaryWriter(memStream);
    // 4 bytes for int
    binaryWriter.Write(simpleObject.Id);      
    // 3 bytes + 1 more for string termination
    binaryWriter.Write(simpleObject.Name);    
    // 12  bytes + 1 more for string termination
    binaryWriter.Write(simpleObject.Address); 
    // 40 bytes for 10 ints
    simpleObject.Scores.ForEach(binaryWriter.Write); 

    // 61 bytes, …
Run Code Online (Sandbox Code Playgroud)

serialization protobuf-net binary-serialization

25
推荐指数
1
解决办法
2万
查看次数