Bạn có chắc chắn muốn sử dụng ProtoBuf không? Bạn có thể sử dụng Json lúc đầu, và sau đó chuyển sang Bson hoặc MessagePack dưới dạng định dạng nhị phân.
Kết hợp Json/Bson có lợi thế là bạn có thể sử dụng cùng một thư viện (Json.net) cho họ. Tôi tin rằng Bson là một chút lớn hơn ProtoBuf mặc dù.
Hoặc bạn có thể sử dụng Json/MessagePack. Về mặt kỹ thuật MessagePack là một định dạng nhị phân tốt hơn so với Bson/ProtoBuf IMO. Nhưng sự hỗ trợ công cụ là tồi tệ hơn, và bạn sẽ cần một thư viện riêng biệt cho Json và MessagePack. Nó hỗ trợ tất cả mọi thứ Json và nhiều hơn nữa (đặc biệt nó có thể sử dụng cả hai chuỗi và các phím số nguyên trong từ điển).
so sánh nhanh của MsgPack và Protobuf:
- Kết quả kích thước dữ liệu nếu cấu trúc tương tự được sử dụng có vẻ là có thể so sánh.
- Hiệu suất mã hóa/giải mã phần lớn phụ thuộc vào việc triển khai, nhưng tôi cho rằng nó có độ lớn tương tự
- MsgPack tự mô tả nhiều hơn. . Trong ProtoBuf bạn thậm chí không nhìn thấy nếu một cái gì đó là một submessage hoặc một blob.
- MsgPack hỗ trợ các phím không phải nguyên trong từ điển. Một điều này cho phép lưu trữ các thuộc tính theo tên khi bạn không quan tâm đến kích thước và chuyển sang các số nguyên trong đó các mức tăng lớn.
- MsgPack lưu trữ số phần tử thay vì kích thước cho mảng/từ điển. Điều này có lợi thế là bạn không cần phải quay trở lại đầu ra và phù hợp với kích thước tất cả các thời gian, làm cho việc viết một serializer dễ dàng hơn và có thể cho tốc độ ghi nhanh hơn. Mặt khác, bạn không thể dễ dàng bỏ qua một phần tử vì bạn không biết kích thước của nó.
- MsgPack tự nhiên hỗ trợ một phần lớn của Json, vì vậy bạn có thể di chuyển từ Json dễ dàng.
- Hỗ trợ công cụ, tài liệu và mức độ phổ biến tốt hơn nhiều với ProtoBuf. Đặc biệt ProtoBuf.net trông đẹp hơn mã C# có sẵn cho MsgPack.
Cảm ơn! Điều này sẽ làm, vì nó là tạm thời. Tôi không cần tính di động và khả năng tương thích lâu dài tại thời điểm này, và tôi sẽ viết một trình soạn thảo sau này nếu cần thiết. – Gnurfos