「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 以下の様な様々なシリアライザも存在するが、
ココでは、BinaryFormatter?のバイナリシリアライズのみ取り扱う。
- System.Runtime.Serialization名前空間のBinaryFormatter?クラスと共に使用する。
詳細 †
使用例 †
BinaryFormatter?のバイナリシリアライズを使用すると、以下のような処理を実装できる。
オブジェクト ⇔ バイト変換 †
- オブジェクトをバイトに変換できる。
- オブジェクトをバイトから復元できる。
オブジェクトのセーブ&ロードや転送 †
- ファイルにセーブ&ロードできる。
- ネットワーク経由で転送できる。
参考 †
様々なシリアライザ †
以下の様なシリアライザも存在する。
バイナリ †
XML †
- XmlSerializer?
- DataContractSerializer?
JSON †
- 純正
- DataContractJsonSerializer?
- JsonSerializer? - System.Text.Json
- その他
- JsonSerializer? - JSON.NET
- JsonSerializer? - JSON.NET BSON
※ JSONのparseを色々試してみた。
相互運用性 †
相互運用性あり
相互運用性あり(ポインタだけ注意)
net, netcoreapp †
以下の検証コードで検証した結果、基本的に相互運用性はありそう。
- net ⇔ netcoreapp
Windows上であれば動作する。
- netcoreapp(on Windows) ⇔ netcoreapp(on Linux)
netcoreapp同士であれば動作する。
- net ⇔ netcoreapp(on Linux)
netcoreapp(on Linux) → netの場合に限り動作しないケースがあった。
(デシリアライズしたDictionaryにIConvertibleが無いとかそういう例外)。
パフォーマンス †
- ゲーム業界では、MessagePackなどの、
POCOシリアライズに特化した高速なシリアライザが開発されている。
セキュリティ †
最近、問題視されてきている模様
(オープンなサービスなどで、不特定多数ユーザから
バイナリデータをインジェクションされるのが脅威)。
参考 †
パフォーマンス †
セキュリティ †
詳細はコチラ
実装 †
相互運用性検証 †
- 双方とも、JSONのバイナリ版(CBOR)みたいなものだが、
- Googleによって開発され、主に、gRPCで使用される。
- serialize/deserializeの速度とデータ長の圧縮をアドバンテージとしている。
- IDLが無いので、クロスプラットフォームが保証されない部分がある模様。
- なんとなく、CBOR的(CBORから参照されている)で、
IETF標準化が提案されたが、下位互換を重視するため
標準化を拒否した等の、開発のポリシーが読み取れる。
(開発者がビッグデータ界隈の出身である事を考えると解り易い)。
microsoft.com †
Tags: :プログラミング, :.NET開発