1

我的程序会生成一些数字结果,这些结果放在一个类中:

[Serializable]
public class Examination
{

    public string _examiner { get; set; }
    public string _interpretation { get; set; }
    DateTime _examination_date { get; set; }

    // two following properties about 100x100 in size
    public Point3D[,] _surface_coordinates { get; set; }
    public double [,] _mapa_curvatura { get; set; }

    public Point3DCollection _symmetry_line { get; set; }
}

现在我想使用序列化来坚持这个(原则上不需要 ORM/数据库),我有一些疑问:

  1. 我需要其他语言(主要是 Python)的脚本可以访问序列化数据,所以我不会使用二进制序列化,而是使用 XmlSerialization;
  2. 不支持多维数据,所以我不得不将[,]数组转换为[][]数组,这对我来说看起来有点“脏”(不过,如果这是唯一的问题,那也没什么大不了的);
  3. 生成的 XML 有点太大(每个文件 2Mb),而我在 python 中使用 quick'n'dirty 二进制格式得到的结果要小得多(例如,将双精度数组保存为长字符串,将行和列放入文件名本身,然后在反序列化期间对其进行解析和重塑:也不太漂亮!)。

由于我是序列化领域的完全初学者,我想问:“将此类序列化和反序列化到磁盘是一种可取的策略/策略?” 主要要求是:

  • 可以用其他语言阅读;
  • 紧凑的文件大小;
  • 尊重 C#/.NET 的良好实践和惯用语;

谢谢阅读!

4

1 回答 1

2

可以用其他语言阅读

这是设计 XML 的原因之一,我个人会坚持使用它。

紧凑的文件大小

您是否考虑将其存储为压缩文件?例如 MyXml.zip。

尊重 C#/.NET 的良好实践和常用习语

只要坚持文档,你应该没问题。

于 2013-10-07T18:08:55.600 回答