3

私は、さまざまなメッセージング形式を実装するために protobuf-net を検討しています。プロト コンパイラをいじる必要がないため、コントラクト ベースのアプローチが特に気に入っています。私が情報を見つけることができなかったのは、これによりクロスプラットフォームでの作業が難しくなるのでしょうか? PB データを解析できる必要がある C++ アプリがいくつかあります。protobuf-net が PB 標準形式にシリアル化されることは理解していますが、プロト ファイルではなくコントラクト アプローチを使用すると、C++ 側はどのように解析するのでしょうか。データ?

C++ がデータを理解する必要がある (非常に少数の) ケースのために、別の proto ファイルを作成できますか (すべきですか?) もしそうなら、proto ファイルから生成された C++ クラスが no-proto ファイルの C# 側からのデータと一致することをどのように正確に知ることができますか?

4

1 に答える 1

1

はい、理論上は少なくともバイナリ レベルで一致する必要がありますが、単純に ".proto" にマップされる型に制限することをお勧めします。そのためDateTime、継承 ( [ProtoInclude]) などは避けてください。使用できるはずです:

string proto = Serializer.GetProto<YourType>();

.proto を取得します。( GetProto) は 100% ではありませんが、基本的な型では機能します。しかし最終的には、答えは「テストと微調整」です。おそらく、最初から相互運用性を考慮して設計します。つまり、これを早期にテストします。

于 2009-12-28T19:09:55.730 に答える