Для данных, которые производятся Protobuf 2.5.X, безопасно ли их прочитать Protobuf версии 3.0.X?Чтение данных по новым версиям protobuf
ответ
Проволочный формат Protobuf предназначен для обратной и прямой совместимости. Итак, generally it is safe, если только вы не стреляли в ногу с помощью одной конкретной функции v2: custom default values. Значения по умолчанию: constant in v3. В частности, значение enum по умолчанию - это первая запись и it must be zero. Таким образом, ваши пользовательские значения v2 будут потеряны. Поля значения по умолчанию вообще не отображаются на проводе, поэтому получатель не знает, не было ли установлено или установлено значение по умолчанию. Имейте в виду, что в v3 все поля: optional
(не более required
), поэтому любое поле может быть юридически отсутствует.
Если вы не использовали пользовательские значения по умолчанию в v2 или ненулевое значение для первой записи перечисления, v3 должен читать ее просто отлично.
- 1. Являются ли сообщения protobuf совместимыми по версиям protobuf
- 2. Использование File.applicationStorageDirectory по версиям
- 3. Перенос данных по нескольким версиям приложений
- 4. Перенаправление по версиям браузера
- 5. .msi совместимость по версиям Windows
- 6. Чтение Protobuf сообщения в C#
- 7. Чтение данных по ссылке
- 8. черепаха svn журналы фильтрации по версиям
- 9. ElasticSearch - сохранить исходную временную метку по версиям
- 10. источник compatibilty (* .pas & * .dfm) по версиям Delphi
- 11. Различные результаты сортировки по разным версиям CLR
- 12. Значения по умолчанию Protobuf
- 13. Чтение и чтение повторяющихся расширенных полей в Protobuf
- 14. Использование модели данных Protobuf
- 15. Серийный преобразователь данных Protobuf
- 16. protobuf-net по потоку TCP?
- 17. Чтение текстового файла по блоку
- 18. Декодирование данных protobuf от plCrashReporter
- 19. Лучшая практика для сериализации и десериализации объектов .net по версиям
- 20. Как применить настройки приложения GAE к версиям не по умолчанию
- 21. Записывание сообщений C++ Protobuf и чтение в Java
- 22. Отправка двоичных данных Protobuf-net
- 23. Какой формат хранения данных protobuf?
- 24. Чтение нескольких ограниченных сообщений protobuf из файла в Windows
- 25. Учебники по Core netty и Protobuf
- 26. Руководство по новым возможностям Vista
- 27. protobuf-net [de] сериализация по границам сборки
- 28. Чтение объектов Protobuf с использованием boost :: asio :: read_async
- 29. DSS не может подключиться к различным версиям базы данных Oracle
- 30. Приложение Java, обращающееся к нескольким версиям библиотеки
Чтобы уточнить, даже если вы использовали значения по умолчанию в v2, вы все равно можете читать сообщения в v3 - это просто, что значения по умолчанию теперь равны нулю. Поэтому, если поле не было установлено отправителем, тогда его значение будет равно нулю на принимающей стороне. И нет никакого способа отличить это от поля, которое было явно задано отправителем, потому что (как я понимаю) «аксессоры» были удалены. –
Что делать, если я использую синтаксис proto2 в обоих случаях? только обновить банки, но используя старый синтаксис? – litov