14

私はprotobuf-netについて読んでいますが、それは素晴らしいです!

使用できるチュートリアルはありますか? (より具体的にはDictionary<TKey,TValue>、ジェネリック医薬品の契約)

それに関連するヒントはありますか?

現在のコードベースに単純にプラグインできますか、それとも何か変更が必要ですか?

4

2 に答える 2

14

Dictionary<TKey,TValue>大部分はうまくいくはずです(少なくとも「v1」では。「v2」についてはまだ書いていません)。

ドキュメントが...まばらであることは完全に認めます。頭に浮かぶこと:

  • はじめに (Wiki には他にもいくつかのページがあります)
  • トランクにはたくさんのものがあります。「例」プロジェクトは単体テストを兼ねているため、役立つ場合があります
  • 私のブログ

私は現在、多くのことが起こっています (転職したばかりなど) が、私の優先事項は次のとおりです。

  • 安定した「v2」ベータ版がリリースされ、少なくともコア機能セットがリリースされます
  • ドキュメントを改善する

時間は私の最大の敵です。ただし、特定のシナリオがある場合は、遠慮なく私に連絡してください。できるだけ早くご連絡いたします。

「簡単に差し込めますか」について。それはあなたのコードに依存します;-p

シリアル化する各メンバーの一意の番号を特定する何らかの方法が必要です。これを行う最も簡単な方法は、属性を使用することです。[XmlElement(Order=n)][DataMember(Order=n)]またはのいずれかをサポートします[ProtoMember(n)]。これらの少なくとも 1 つ (LINQ-to-SQL includes[DataMember]など) が既にある場合は、単に機能する可能性があります。

数値を自動的に推測するオプションがありますが、これは脆弱であり、お勧めできませ。これ以上メンバーを追加する必要がないことがわかっている場合にのみ、これを使用してください(アルファベット順に並べられるため、新しいメンバーを追加AardvarkCountするとすべてが壊れます)。

"v2" (未リリースですが動作します) では、タイプに関係なくメタデータを処理できるようになりました。つまり、属性のないタイプの POCO で protobuf-net を使用できます。コンストラクターなどをバイパスすることもできます (WCF スタイル)。必要に応じて、はるかに柔軟です。もちろん、属性アプローチもサポートされています。

于 2010-05-23T20:27:11.900 に答える
2

おかしなことに、 protobuf-netへのリンクを含む別の質問に回答しました。

比較的簡単に行うことができ、マークは電子メールで非常に反応が良い. (ふふっ、質問を連発するよう誘ってる人がいたらごめんなさい!)

ドキュメントについては、少しまばらだと言いました。しかし、ここに私がそれを使用していたものがあります:

少し冗長すぎる XML ベースのメッセージング システムを使用していました。そこで、メッセージを、同じ情報をよりコンパクトにエンコードするものに置き換えたいと考えました。Protobuf-net はこれに最適であることが判明し、xmlserialzer ベースのモジュールを proto ベースのモジュールに置き換えていません。

とてもシンプルでした。[XmlInclude] と同様の属性を [ProtoInclude] に置き換えてプロジェクトを進め、もちろん xml シリアライザーを proto シリアライザーに置き換えました。シリアル化できる型に関する 1 つまたは 2 つの問題は、Marc の助けを借りて解決されましたが、コードのリファクタリングはそれほど多くありませんでした。

于 2010-05-23T14:29:21.347 に答える