Ответ 1
В целом, Bond имеет лучшую систему типов и поддерживает несколько протоколов.
В частности, плюсы:
- Бонд поддерживает дженерики
- Бонд имеет разные типы для представления коллекций:
vector<T>
,map<T>
,list<T>
- Связь поддерживает безопасную для типов ленивую десериализацию (
bonded<T>
) - Bond поддерживает несколько форматов (быстрый двоичный, компактный двоичный, XML, JSON) + маршалинг и транскодирование
Минусы:
- Бонд не поддерживает разные типы для фиксированной и переменной целочисленной кодировки. В Bond способ кодирования целых чисел определяется форматом вывода (быстрый или компактный), но в буферах протоколов существуют целочисленные типы, которые всегда имеют фиксированный размер:
fixed32
иfixed64
. - Связь не поддерживает типы объединения (
oneof
в буферах протокола)
Я провел несколько тестов, и оказалось, что размер простых сообщений в двоичных форматах Bond и ProtoBuf примерно одинаков. Я сравнил время сериализации и десериализации с использованием библиотеки Bond и С# ProtoBuf: в моем случае Bond работал немного лучше, вы можете найти мой исходный код на GitHub
Подводя итог, я думаю, что лучше использовать Bond, когда вы работаете с некоторыми сложными типами данных или когда вам необходимо представлять одни и те же данные в разных форматах: например, хранить как двоичные файлы, но предоставлять как JSON и т.д.