1

通常、ネットワークベースの作業を行っているときは、Protobufを使用して、データ/構成されたオブジェクトを他のシステムから移動するために構築されているシステム用にモデル化されたカスタムオブジェクトをネットワーク内で移動しています。

私は現在、データとエンティティスペースのシリアル化(、|、[]表記)にテキストを主に使用する独自のテキストベースのプロトコルをデータアクセス層として使用しているプロジェクトの強化に携わっています。

私が尋ねている質問は、Entityspacesオブジェクトからのデータの「ロード」から入力されるProtobufネットワークオブジェクトを提供するオブジェクトの別のレイヤーを作成するか、または必要なprotobufタグをEntityspacesオブジェクトのオブジェクトに追加するかです(それらはデータベースから自動生成され、現在はそれを持っていません)

4

1 に答える 1

0

どちらにでも行くことができます。protobufデータをテキスト形式にエンコードする必要がある場合:base-64を使用します。これは、 |//を使用しないので便利です。[]

現在属性が設定されていないオブジェクトをprotobufでエンコードする場合は、それを行う方法もあります。データベースの型がpartialクラスとして生成される場合は、最も簡単な方法で(別のコードファイルで)実行できます。

namespace The.Same.Namespace {
    [ProtoContract]
    [ProtoPartialMember(1, "Foo")]
    [ProtoPartialMember(2, "Bar")]
    ...
    partial class SomeEntity {}
}

シリアル化するメンバーはどこにFooありBarますか。または、実行時にモデル全体を構成することもできます。

RuntimeTypeModel.Default.Add(typeof(SomeEntity), false).Add("Foo", "Bar");

(これは非常に基本的な構成です。はるかに微妙なオプションが利用可能です)

于 2012-12-14T08:02:14.683 に答える