几年前我创建了一个.NET应用程序,但没有考虑太多的文件格式:它使用soap格式化程序来序列化我们的大型对象层次结构。这很容易做,所以我没有多少考虑。如何选择文件格式?
考虑到以下问题,我现在试图想出一个更优化的文件格式: 保存文件时,它最终被转换为字节数组,并通过线路发送到数据库进行存储。这最终会成为一个大问题,因为你在内存中拥有所有对象,然后为序列化器分配更多内存,然后为字节数组分配更多内存。即使尺寸适中的对象图最终也会使用大量内存来保存文件。
我不知道如何既从一个文件格式的角度,也有可能从算法的角度来改善这种(对象 - >流 - >字节数组)
UPDATE: 我会在通过线路发送数据前,一直在压缩字节数组,所以虽然这是很好的建议,但它已经在我的应用程序中实现。
我确实从Soap转换为Binary Serialization,这产生了巨大的差异:我们的文件比以前小了大约7倍。 (当然,你的里程可能会有所不同)。