首页 > 解决方案 > 将多个流序列化为一个流

问题描述

我有一个场景,我需要备份数千个相当小的 (1-3KB) 文件(在 Azure blob 存储中,但这不是重点),我将这些文件作为这些模型的列表(我没有的源代码)拥有 - 它是 Azure SDK):

class Model {
  public string Name {get;set;}
  public Stream Data {get;}
  //bunch of other things I'd like to ignore
}

我最好的尝试(从性能的角度来看)现在使用来自 Json.NET 的 JsonTextWriter 将它们全部合并到一个文件中,但显然我在这里不需要文本格式,它会引入很多开销。我想知道是否有任何可用的(二进制?)序列化程序,它不需要我用一些特定的属性来装饰现有模型,并且还会有一个不错的 API,包括类似的东西

var writer = new MagicWriterThatImLookingFor();
foreach(var model in models){
  writer.WriteString(model.Name);
  writer.WriteByteArray(model.Data.ToArray());
}

与相应的反序列化?

标签: c#performanceserialization

解决方案


推荐阅读