Tag: Protobuf
-
Protobuf-net Generics on Unity3D IL2CPP.
When using Protobuf-net in Unity3D, if your Proto-Contracts include generics you might run into a few issues like Unable to resolve MapDecorator constructor.
I had to work with the following contract. It was s custom collection class which had a functionality of caching removed elements in the collection.
…[ProtoContract] public class CustomCollectionBase<TCollection, TElement, TKey{ [ProtoMember(1)] protected TCollection _collection; [ProtoMember(2)] protected SortedDictionary<TKey, bool_removed; public CustomCollectionBase(TCollection collection) { _collection = collection; } } [ProtoContract] public class CustomList<TElement: CustomCollectionBase<List<TElement, TElement, int{ public CustomList() : base( new List<TElement()) { } } [ProtoContract] public class CustomIntDictionary<TElement: CustomCollectionBase<Dictionary<int,
-
JSON vs Protobuf
I did a few tests to compare the data payload sizes of different serialization methods on .NET client server communications.
The test was basically to execute a request/response 20 times.
Request
[Serializable] [ProtoContract] public class GetRatingRequest { [ProtoMember(1)] public int Rating; [ProtoMember(2)] public int Count; [ProtoMember(3)] public float A; [ProtoMember(4)] public float B; [ProtoMember(5)] public float C; [ProtoMember(6)] public float D; [ProtoMember(7)] public float E; }
Response
…[Serializable] [ProtoContract] public class GetRatingResponse { [ProtoMember(1)] public List<RatingRatings; } [Serializable] [ProtoContract] public class Rating { [ProtoMember(1)] public bool HighRating { get; set; } [ProtoMember(2)] public RatingDetail Details { get; set; }