protobuf-netのProtoBuf.SerializerとProtoBuf.Meta.TypeModelの違いは何ですか?

Mykhailo Seniutovych

最近発見したように、protobuf-netで2つのクラスProtoBuf.Serializerを使用してシリアル化/逆シリアル化できProtoBuf.Meta.TypeModelます。たとえば、シリアル化/逆シリアル化するカスタムクラスがあるとします。

[ProtoContract]
public class Person
{
    [ProtoMember(1)]
    public string Name { get; set; }
    [ProtoMember(2)]
    public int Age { get; set; }
}

私たちは2つの方法でそれを行うことができます:

1)使用 TypeModel

TypeModel typeModel = RuntimeTypeModel.Default;
var person1 = new Person
{
    Name = "John",
    Age = 23
};

using (var stream = new MemoryStream())
{
    typeModel.Serialize(stream, person1);
    stream.Position = 0;
    var pesrson2 = typeModel.Deserialize(stream, null, typeof(Person));
}

2)使用Serializer(これは私が見たほとんどのチュートリアルで選択された方法です)

var person1 = new Person
{
    Name = "John",
    Age = 23
};
using (var stream = new MemoryStream())
{
    Serializer.Serialize(stream, person1);
    stream.Position = 0;
    var pesrson2 = Serializer.Deserialize<Person>(stream);
}

これら2つのアプローチの違いは何ですか。これら2つの中から選択する方法は?そして、何であるTypeModelRuntimeTypeModel最初の場所で?

マーク・グラヴェル

すべてのSerializer.*メソッドは、通常、の便利なプロキシRuntimeTypeModel.Default.*です。おそらくいくつかのマイナーな例外があります-モデルにまったく触れないもの(たとえば、「varint」の処理)

基本的に、1。* APIでは、モデル1つしかありませんでしたv2は、同じタイプを記述する並行/並列モデルを持つ機能を追加TypeModelし、通常の実装がである、はるかに豊富なランタイム構成システム(これらすべてがカプセル化されていRuntimeTypeModelます)を追加しましたプリベイクされた実装を含むアセンブリをロードすることできるTypeModelため、すべてTypeModelがであるとは限らないことに注意してくださいRuntimeTypeModel

そう; 属性を持つ単純な型を使用している場合:を使用しても問題ありませんSerializer.*ランタイム構成と複数のモデルを使用してより高度なことを行う必要があるTypeModel場合は、さまざまなインスタンスを追跡して、どのインスタンスを使用するかを把握する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JsonHttpClientと同等のProtobuf?

分類Dev

Where is Serializer on .net core ProtoBuf?

分類Dev

ProtoBufのGolang解析

分類Dev

.netコアProtoBufのSerializerはどこにありますか?

分類Dev

protocとprotobuf(プロトコルバッファ)の違いは何ですか

分類Dev

protocとprotobuf(プロトコルバッファ)の違いは何ですか

分類Dev

protobuf-netの動的protobufメッセージ

分類Dev

gRPCでのProtoBuf-netの使用

分類Dev

libprotobuf-devlibprotoc-devまたはprotobuf-compilerの違いは何ですか

分類Dev

Hyperledger Sawtoothのprotobufのエンコード関数と作成関数の違いは何ですか?

分類Dev

protobuf3の単数形とオプションの違いは何ですか

分類Dev

AmazonIoTでのprotobufの使用

分類Dev

protobufの構造体とマップ

分類Dev

protobufとgRPC

分類Dev

MessagePack、Protobuf、JSONの違いは何ですか?誰がいつ使用するか教えてもらえますか

分類Dev

Protobufマップの順序

分類Dev

辞書のProtobufリスト

分類Dev

ProtobufはNanoPBと通信できますか

分類Dev

Protobuf-netでのVARIANTの実装について

分類Dev

Protobufのデフォルトの列挙値は何ですか?

分類Dev

protobufメッセージの区切り文字は何ですか?

分類Dev

Open EmbeddedCoreとmeta-openembeddedの違いは何ですか

分類Dev

.NET4.6プロジェクトでのGoogle.Protobufの使用

分類Dev

C#protobuf-net-デフォルト値はprotobufデータの値を上書きします

分類Dev

コピーコンストラクタとしてのProtobuf-Net

分類Dev

Protobuf.net Anyデータ型の使用方法は?

分類Dev

Protobuf-net:メッセージの名前を変更する

分類Dev

protobuf-netを使用してConcurrentDictionaryの配列をシリアル化することは可能ですか?

分類Dev

Google Protobuf ByteStringとByte []

Related 関連記事

  1. 1

    JsonHttpClientと同等のProtobuf?

  2. 2

    Where is Serializer on .net core ProtoBuf?

  3. 3

    ProtoBufのGolang解析

  4. 4

    .netコアProtoBufのSerializerはどこにありますか?

  5. 5

    protocとprotobuf(プロトコルバッファ)の違いは何ですか

  6. 6

    protocとprotobuf(プロトコルバッファ)の違いは何ですか

  7. 7

    protobuf-netの動的protobufメッセージ

  8. 8

    gRPCでのProtoBuf-netの使用

  9. 9

    libprotobuf-devlibprotoc-devまたはprotobuf-compilerの違いは何ですか

  10. 10

    Hyperledger Sawtoothのprotobufのエンコード関数と作成関数の違いは何ですか?

  11. 11

    protobuf3の単数形とオプションの違いは何ですか

  12. 12

    AmazonIoTでのprotobufの使用

  13. 13

    protobufの構造体とマップ

  14. 14

    protobufとgRPC

  15. 15

    MessagePack、Protobuf、JSONの違いは何ですか?誰がいつ使用するか教えてもらえますか

  16. 16

    Protobufマップの順序

  17. 17

    辞書のProtobufリスト

  18. 18

    ProtobufはNanoPBと通信できますか

  19. 19

    Protobuf-netでのVARIANTの実装について

  20. 20

    Protobufのデフォルトの列挙値は何ですか?

  21. 21

    protobufメッセージの区切り文字は何ですか?

  22. 22

    Open EmbeddedCoreとmeta-openembeddedの違いは何ですか

  23. 23

    .NET4.6プロジェクトでのGoogle.Protobufの使用

  24. 24

    C#protobuf-net-デフォルト値はprotobufデータの値を上書きします

  25. 25

    コピーコンストラクタとしてのProtobuf-Net

  26. 26

    Protobuf.net Anyデータ型の使用方法は?

  27. 27

    Protobuf-net:メッセージの名前を変更する

  28. 28

    protobuf-netを使用してConcurrentDictionaryの配列をシリアル化することは可能ですか?

  29. 29

    Google Protobuf ByteStringとByte []

ホットタグ

アーカイブ