私はprotobuf-netについて読んでいますが、それは素晴らしいです!
使用できるチュートリアルはありますか? (より具体的にはDictionary<TKey,TValue>
、ジェネリック医薬品の契約)
それに関連するヒントはありますか?
現在のコードベースに単純にプラグインできますか、それとも何か変更が必要ですか?
私はprotobuf-netについて読んでいますが、それは素晴らしいです!
使用できるチュートリアルはありますか? (より具体的にはDictionary<TKey,TValue>
、ジェネリック医薬品の契約)
それに関連するヒントはありますか?
現在のコードベースに単純にプラグインできますか、それとも何か変更が必要ですか?
Dictionary<TKey,TValue>
大部分はうまくいくはずです(少なくとも「v1」では。「v2」についてはまだ書いていません)。
ドキュメントが...まばらであることは完全に認めます。頭に浮かぶこと:
私は現在、多くのことが起こっています (転職したばかりなど) が、私の優先事項は次のとおりです。
時間は私の最大の敵です。ただし、特定のシナリオがある場合は、遠慮なく私に連絡してください。できるだけ早くご連絡いたします。
「簡単に差し込めますか」について。それはあなたのコードに依存します;-p
シリアル化する各メンバーの一意の番号を特定する何らかの方法が必要です。これを行う最も簡単な方法は、属性を使用することです。[XmlElement(Order=n)]
、[DataMember(Order=n)]
またはのいずれかをサポートします[ProtoMember(n)]
。これらの少なくとも 1 つ (LINQ-to-SQL includes[DataMember]
など) が既にある場合は、単に機能する可能性があります。
数値を自動的に推測するオプションがありますが、これは脆弱であり、お勧めできません。これ以上メンバーを追加する必要がないことがわかっている場合にのみ、これを使用してください(アルファベット順に並べられるため、新しいメンバーを追加AardvarkCount
するとすべてが壊れます)。
"v2" (未リリースですが動作します) では、タイプに関係なくメタデータを処理できるようになりました。つまり、属性のないタイプの POCO で protobuf-net を使用できます。コンストラクターなどをバイパスすることもできます (WCF スタイル)。必要に応じて、はるかに柔軟です。もちろん、属性アプローチもサポートされています。
おかしなことに、 protobuf-netへのリンクを含む別の質問に回答しました。
比較的簡単に行うことができ、マークは電子メールで非常に反応が良い. (ふふっ、質問を連発するよう誘ってる人がいたらごめんなさい!)
ドキュメントについては、少しまばらだと言いました。しかし、ここに私がそれを使用していたものがあります:
少し冗長すぎる XML ベースのメッセージング システムを使用していました。そこで、メッセージを、同じ情報をよりコンパクトにエンコードするものに置き換えたいと考えました。Protobuf-net はこれに最適であることが判明し、xmlserialzer ベースのモジュールを proto ベースのモジュールに置き換えていません。
とてもシンプルでした。[XmlInclude] と同様の属性を [ProtoInclude] に置き換えてプロジェクトを進め、もちろん xml シリアライザーを proto シリアライザーに置き換えました。シリアル化できる型に関する 1 つまたは 2 つの問題は、Marc の助けを借りて解決されましたが、コードのリファクタリングはそれほど多くありませんでした。