几年前我创建了一个 .NET 应用程序,并没有过多考虑文件格式:它使用一个肥皂格式化程序来序列化我们庞大的对象层次结构。做起来很简单,所以我没有多想。
考虑到以下问题,我现在正在尝试提出一种更优化的文件格式:保存文件时,它最终被转换为字节数组并通过线路发送到数据库进行存储。这最终成为一个大问题,因为您将所有对象都放在内存中,然后为序列化程序分配更多内存,然后为字节数组分配更多内存。即使是中等大小的对象图最终也会使用大量内存来保存文件。
我不确定如何从文件格式的角度以及可能从算法的角度(对象->流->字节数组)改进这一点
更新:我一直在通过网络发送字节数组之前对其进行压缩,所以虽然这是一个很好的建议,但它已经在我的应用程序中实现了。
我确实从 Soap 转换为二进制序列化,这产生了巨大的变化:我们的文件比以前小了大约 7 倍。(当然,您的里程可能会有所不同)。