私はジョンの主張に同意します。複数の環境でコーディングしている場合、彼のバージョンは他の「コア」実装と同様のAPIを提供します。protobuf-netは、ほとんどの.NETシリアライザーの実装方法に非常に似ているため、.NET開発者にはより馴染みがあります(IMO)。Jonが指摘しているように、後で必要になった場合に別のAPIで再実装できるように、生のバイナリ出力は同一である必要があります。
この実装に固有のいくつかのポイントはprotobuf-netです。
- 既存のタイプで動作します(.protoから生成されたタイプだけではありません)
- WCFやmemcachedなどで動作します
ISerializable
既存のタイプの実装に使用できます
- 継承*およびシリアル化コールバックメソッドをサポート
- 次のような一般的なパターンをサポートします
ShouldSerialize[name]
- 既存の装飾されたタイプ(
XmlType
/XmlElement
またはDataContract
/ DataMember
)で動作します-(たとえば)LINQ-to-SQLモデルがすぐにシリアル化されることを意味します(DBMLでシリアル化が有効になっている場合)
- v2では、属性のないPOCOタイプで機能します
- v2では、.NET 1.1(これが巨大な販売機能であるかどうかはわかりません)および他のほとんどのフレームワーク(モノタッチを含む-やった!)で動作します
- おそらく(まだ実装されていません)v2は(ツリーのシリアル化だけでなく)完全グラフ*のシリアル化をサポートする可能性があります
(* =これらの機能は100%有効なprotobufバイナリを使用しますが、他の言語からは利用するのが難しい場合があります)