Heim >Backend-Entwicklung >C#.Net-Tutorial >C# Protobuf-Net-Serialisierung
Quellcode-Speicherort: protobuf-net
1. Installieren Sie Nuget :
Tools – Erweiterungsmanager
Nach Abschluss der Installation starten Sie Microsoft Visual Studio 2010 neu. Sie sehen das folgende Bild:
Kleiner Hinweis:
Erst wenn die Lösung das Projekt geöffnet hat, sehen Sie die folgenden zwei Elemente:
2. Installieren Sie protobuf_net (suchen Sie protobuf-net in Nuget, installieren Sie es und wählen Sie das Projekt aus, das abgeschlossen werden soll)
3. Kapseln Sie einfache Operationsklassen (führen Sie ProtoBuf in das Projekt ein; Sie können verwenden). es direkt)
<pre class="csharp"> /// <summary> /// Protobuf_net /// </summary> public class ProtobufSerializer { /// <summary> /// 序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public static string Serialize<T>(T t) { using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize<T>(ms, t); return Encoding.Unicode.GetString(ms.ToArray()); } } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="content"></param> /// <returns></returns> public static T DeSerialize<T>(string content) { using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(content))) { T t = Serializer.Deserialize<T>(ms); return t; } } }
Bei Verwendung der UTF8-Deserialisierung tritt der folgende Fehler auf:
--------------------------- --------------------------- System.IO.EndOfStreamException: 尝试读取超出流末尾的内容。 在 ProtoBuf.ProtoReader.Ensure(Int32 count, Boolean strict) 位置 c:\Dev\protobuf-net\protobuf-net\ProtoReader.cs:行号 257 在 ProtoBuf.ProtoReader.ReadString() 位置 c:\Dev\protobuf-net\protobuf-net\ProtoReader.cs:行号 494 在 proto_2(Object , ProtoReader ) 在 ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read(Object value, ProtoReader source) 位置 c:\Dev\protobuf-net\protobuf-net\Serializers\CompiledSerializer.cs:行号 57 在 ProtoBuf.Meta.RuntimeTypeModel.Deserialize(Int32 key, Object value, ProtoReader source) 位置 c:\Dev\protobuf-net\protobuf-net\Meta\RuntimeTypeModel.cs:行号 775 在 ProtoBuf.Meta.TypeModel.DeserializeCore(ProtoReader reader, Type type, Object value, Boolean noAutoCreate) 位置 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:行号 700 在 ProtoBuf.Meta.TypeModel.Deserialize(Stream source, Object value, Type type, SerializationContext context) 位置 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:行号 589 在 ProtoBuf.Meta.TypeModel.Deserialize(Stream source, Object value, Type type) 位置 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:行号 566 在 ProtoBuf.Serializer.Deserialize[T](Stream source) 位置 c:\Dev\protobuf-net\protobuf-net\Serializer.cs:行号 77 在 Serialize.ProtobufSerializer.DeSerialize[T](String content) 位置 E:\WorkSpace\WorkSpaceTest\CompressTest\Serialize\ProtobufSerializer.cs:行号 40 在 Serialize.Form1.button1_Click(Object sender, EventArgs e) 位置 E:\WorkSpace\WorkSpaceTest\CompressTest\Serialize\Form1.cs:行号 44 --------------------------- 确定 ---------------------------
Der Unterschied zwischen Encoding.Unicode und Encoding.UTF8 in C#
Kleiner Hinweis:
Referenz für diesen Artikel:
Protobuf-Net, der Meister der Serialisierung, praktische Erfahrung
8 Möglichkeiten zur Verbesserung der Leistung der ASP.NET-Web-API
Im Vergleich zu XML und binären Serialisierungsmethoden ist Protobuf effizienter und unterstützt größere Datenmengen
Die Größe der Protobuf-Serialisierung beträgt 1/10 von JSON, 1/20 von XML-Format und 1/10 von Binärserialisierung
Das Obige ist der Inhalt der C#-Protobuf-Net-Serialisierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!