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 でクイックアンドダーティ バイナリ形式を使用すると結果がはるかに小さくなります (たとえば、double の配列を長い文字列に保存し、行と列をファイル名自体、それを解析し、逆シリアル化中に再形成します: あまりにもきれいではありません!)。

私はシリアライゼーション分野の完全な初心者なので、「このクラスをディスクにシリアライズおよびデシリアライズするための推奨できる戦略/戦術はどれですか?」と尋ねたいと思います。主な要件は次のとおりです。

  • 他の言語で読むことができます。
  • コンパクトなファイル サイズ。
  • C#/.NET の優れた慣行と一般的なイディオムを尊重する。

読んでくれてありがとう!

4

1 に答える 1

2

他の言語で読める

これが XML が設計された理由の 1 つであり、個人的にはそれを使い続けるつもりです。

コンパクトなファイルサイズ

圧縮ファイルとして保存することを検討しましたか? 例: MyXml.zip。

C#/.NET のグッド プラクティスと一般的なイディオムを尊重する

ドキュメントに固執するだけで大​​丈夫です。

于 2013-10-07T18:08:55.600 に答える