やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

C#でシリアライズ

この前仕事でシリアライズについていろいろ調べてみたんですが、今後も使うことは多いと思うのでメモ
内容的には、画面で入力された情報を保持しておき、変更があれば確認メッセージボックスを出力して入力内容を破棄するかどうかを選択するというもの。
WPFアプリケーションでViewModelの内容をシリアライズして記録する、という仕組みで作りました。

シリアライズの種類

さて、シリアライズと言っても幾つか種類が存在します。
調べた限り、以下の3つがあります。

  1. BinaryFormatter
  2. XmlSerializer
  3. DataContractSerializer

どの方法でシリアライズするかはケースバイケースですが、調べた結果以下の方向性で使用するのが妥当かと思います。

  • パフォーマンスを重視したい、とにかく高速に

 ⇒BinaryFormatter

  • ファイルへの入出力、デバッグの容易さ重視

 ⇒XmlSerializer

 ⇒DataContractSerializer

私の印象なんで実際は少し異なると思いますが、概ねこの概念です。
以下のページでそれぞれのシリアライザの特徴が挙げられています。
stackoverflow.com
一覧はこちら↓↓↓
f:id:iyemon018:20151223161347p:plain

このようにシリアライザにも一長一短がありますので、開発でベストな選択ができるといいですね。

ちなみに、私が関わった開発ではXmlSerializerを使用しました。
単純にデバッグがし易いというのが1番の目的でした。
画面数が多く、ファイルの比較を実施した際に本当に正しいのかどうかその判定基準を明確にするにはXmlSerializerが妥当だと思ったからです。

さて、次回以降にそれぞれのシリアライザについての記事を書いていこうと思います。
ただ、シリアライザについてのブログなんて山程あります。
そんなもの見てももう知っているよという人が多いはずなので、すこし趣向を凝らした内容にしたいと画策中です。(やるとは言っていない)