我的程序会生成一些数字结果,这些结果放在一个类中:
[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/数据库),我有一些疑问:
- 我需要其他语言(主要是 Python)的脚本可以访问序列化数据,所以我不会使用二进制序列化,而是使用 XmlSerialization;
- 不支持多维数据,所以我不得不将
[,]
数组转换为[][]
数组,这对我来说看起来有点“脏”(不过,如果这是唯一的问题,那也没什么大不了的); - 生成的 XML 有点太大(每个文件 2Mb),而我在 python 中使用 quick'n'dirty 二进制格式得到的结果要小得多(例如,将双精度数组保存为长字符串,将行和列放入文件名本身,然后在反序列化期间对其进行解析和重塑:也不太漂亮!)。
由于我是序列化领域的完全初学者,我想问:“将此类序列化和反序列化到磁盘是一种可取的策略/策略?” 主要要求是:
- 可以用其他语言阅读;
- 紧凑的文件大小;
- 尊重 C#/.NET 的良好实践和惯用语;
谢谢阅读!