実際、GoogleのJava実装を使用してデータをシリアル化し、次にC#実装を使用して逆シリアル化したいですか?
より安定しているように見えるので、私はprotobuf-netを選択しました(proto#はまだv0.9であるか、私はそれを選択したでしょう)。作業を開始する前に、これを実現できることを確認したかった(Java実装を使用してデータをシリアル化し、protobuf-netを使用してデータを逆シリアル化する)。または、protobuf-netの実装に固有のメソッドのリストはありますか?
2 に答える
2
複数のプラットフォームで同じ API が必要な場合は、Jon Skeet の実装の方が適切かもしれません。違いは、protobuf-net が一般的な C# 開発パターンに基づいて設計されていることです。たとえば、生成された型を使用する必要はありません ( DataContractSerializer
、XmlSerializer
、などとまったく同じように、独自のものを使用できます)。また、一部の BCL をサポートしています。コンセプトを直接。
この 2 つはネットワーク上で 100% 互換性があるはずですが、APIの違いは次のとおりです。
DateTime
、TimeSpan
などの直接サポートGuid
(zip 内の bcl.proto のコントラクトで説明されています)- 継承のサポート (ネットワーク上でネストされたデータとしてマップ)
- 独自の型のサポート
- 可変型のサポート(ビルダー/不変のペアではなく)
- シリアル化コールバックのサポート
- (おそらく他にもいくつかあります-100%完全なリストが必要ですか?)
あなたが最も気付く可能性が高いのは継承です。簡単に言えば、相互運用を使用する予定がある場合は、これを使用しないでください。.NET 固有のトリックを使用する何かを行っている場合は、インテリセンスで非常に明示的にしようとしましたが、.proto から開始する場合はとにかくこれらを使用しません (移植に適している必要があります)。
于 2010-04-10T07:00:08.827 に答える
0
すべての Google シリアライゼーションはワイヤ互換性があり、protobuf-net は Google によって作成されたものではありませんが、ワイヤ互換性があると主張しています。
于 2010-04-09T12:51:05.890 に答える