小编ilC*_*ico的帖子

对于大文件来说,ProtoBuf-net 的最佳 PrefixStyle 是什么?

我需要存储大数据(以千兆字节为单位)以使用 protobuf-net 2.4.0 进行流式传输。

目前,我使用的策略是使用 PrefixStyle.Base128 编写带有 LengthPrefix 的小标头,并使用以下代码使用标准 protobuf 序列化方法编写大主体,它的工作原理非常神奇。

private void Serialize(Stream stream)
{
    Model.SerializeWithLengthPrefix(stream, FileHeader, typeof(FileHeader), PrefixStyle.Base128, 1);

    if (FileHeader.SerializationMode == serializationType.Compressed)
    {                
        using (var gzip = new GZipStream(stream, CompressionMode.Compress, true))
        using (var bs = new BufferedStream(gzip, GZIP_BUFFER_SIZE))
        {
            Model.Serialize(bs, FileBody);
        }
    }
    else
        Model.Serialize(stream, FileBody);
}
Run Code Online (Sandbox Code Playgroud)

现在我需要将主体拆分为 2 个不同的对象,因此我也必须对它们使用 LengthPrefix 方法,但我不知道在这种情况下最好的PrefixStyle是什么。我可以继续使用Base128吗?Fix32描述中的“对兼容性有用”是什么意思?

更新

我发现这篇文章Marc Gravell 解释说可以选择使用开始标记和结束标记,但我不确定它是否可以与 LengthPrefix方法一起使用。更清楚地说,下面代码中显示的方法是否有效?

[ProtoContract]
public class FileHeader
{
    [ProtoMember(1)]
    public int Version { …
Run Code Online (Sandbox Code Playgroud)

c# protobuf-net

5
推荐指数
1
解决办法
188
查看次数

使用 devDept Eyeshot 找出两个 3D 形状之间的差异

找出devDept Eyeshot中加载的两个三维形状差异的最佳算法是什么?

我已经在 Eyeshot 中从 CAD 文件加载了两个形状,并希望突出显示形状的差异。

提前致谢。

c# 3d wpf cad eyeshot

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

标签 统计

c# ×2

3d ×1

cad ×1

eyeshot ×1

protobuf-net ×1

wpf ×1