SlideShare a Scribd company logo
1 of 18
Трансфер данных:
есть ли жизнь за
пределами JSONa
Who am I?
https://heliumhealthcare.com/
Что такое трансфер данных?
XML, JSON, YAML, BSON, etc.
Что нужно для удачного трансфера данных?
(что нужно для того, что бы 2 объекта поняли друг-друга)
или протокол:
XML
XML означает Extensible Markup Language, с акцентом
на markup (разметка). Вы можете создавать текст и размечать его при
помощи обрамляющих тегов, превращая каждое слово, предложение или
фрагмент в идентифицируемую, сортируемую информацию.
Создаваемые вами файлы, или экземпляры документа, состоят из
элементов (тегов) и текста, причем элементы помогают правильно
понимать документ при чтении на бумаге или даже обрабатывать его в
электронном виде.
“+” “-”- избыточный синтаксис;
- размер документа больше, чем документа в других
форматах передачи текстовых данных;
- содержит метаданные, и одновременно является
языком взаимодействия открытых систем;
- для большого количества задач можно использовать
более простые решения;
- отсутствие общепринятой методологии;
- неоднозначность моделирования;
- не содержит язык поддержки для типов данных;
- сложное использование пространств имен.
- легко читается при правильном формате;
- не зависит от платформы;
- нет общепринятой методологии для моделирования
данных в XML, в то время как для реляционной
модели и объектно-ориентированной такие средства
разработаны и базируются на реляционной алгебре,
системном подходе и системном анализе;
- в результате большой гибкости языка и отсутствия
строгих ограничений, одна и та же структура может
быть представлена множеством способов.
JSON
JSON (англ. JavaScript Object Notation) — текстовый формат обмена
данными, основанный на JavaScript. Как и многие другие текстовые
форматы, JSON легко читается людьми.
“+” “-”
- нет синтаксиса для задания типа объекта;
- много синтаксического мусора.
- трудно читается и анализируется пользователем,
нет визуализации;
- меньший объем данных (по сравнению с XML);
- почти неограниченные возможности расширения;
- легко преобразовать в структуру данных для
большинства языков программирования (числа,
строки, логические переменные, массивы и так
далее);
- многие языки программирования имеют функции и
библиотеки для чтения и создания структур JSON.
YAML
YAML — человекочитаемый формат сериализации данных,
концептуально близкий к языкам разметки, но ориентированный на
удобство ввода-вывода типичных структур данных многих языков
программирования. Название YAML представляет собой рекурсивный
акроним YAML Ain't Markup Language («YAML — не язык разметки»). В
названии отражена история развития: на ранних этапах язык назывался
Yet Another Markup Language («Ещё один язык разметки») и даже
рассматривался как конкурент XML, но позже был переименован с целью
акцентировать внимание на данных, а не на разметке документов.
“+” “-”- уступает в производительности;
- при написании существуют дополнительные меры
предосторожности. Даже если вы не учители один
пробел в отступах, ваш код может перестать
работать;
- имеет менее зрелую экосистему.
- нет ограничивающих символов = легче чем XML &
JSON;
- более понятный для чтения;
- YAML - это надмножество JSON, вы можете парить
как JSON, так и YAML-код с помощью парсера (YAML
парсера).
Protocol Buffers
Protocol Buffers (a.k.a., protobuf) - протокол сериализации (передачи)
структурированных данных, предложенный Google.
По замыслу разработчиков, сначала должна быть описана структура
данных, которая затем компилируется в классы. Вместе с классами
идёт код их сериализации в компактном формате представления.
Protocol Buffers не предназначен для чтения пользователем и
представляет собой двоичный формат. Для десериализации данных
необходим отдельный .proto-файл, в котором определяется формат
сообщения.
BSON имеет аналогичную проблему с избыточными данными. Он также
включает в себя все ключи.
Что на счет бинарного JSONa?
Рассмотрим пример:
JSON: {"hello": "world"} (17 байт)
BSON: <16 00 00 00 02 h e l l o 00 06 00 00 00 w o r l d 00 00> (22 байта)
ProtoBuf vs JSON: Представьте, что вы передаете данные с помощью JSON.
Это может выглядеть примерно так: {«type»: «ping», «time»: 123456789}, что
имеет вес в 32 байта. Тут содержится 2 + 3 + 3 + 2 + 1 = 11 байта
ограничивающих символов плюс 4 + 4 + 4 = 12 байт имен строк, составляющих
23/32 байта ~ = 71% избыточных данных. ProtoBuf, с другой стороны,
эффективно сериализует данные в двоичные файлы, не теряя никакой
информации, которая, как оказалось, имеет длину 7 байт, и все еще способная
различать два сообщения разных типов: <0A 05 08 95 9A EF 3A>
Сравним?
7 байт вместо 32 это победа?
- за счет того, что protobuf определяет формат сообщения в proto-файле, нам не
нужно передавать имена полей а так же ограничивающие символы. Это делает
вес нашего сообщения гораздо меньше;
- за счет типизации полей в тех самых proto-файлах, использование protobuf
уменьшает вероятность ошибки (отправки не верных данных).
- proto-файл может так же служить документацией вашего API.
- может использоваться как схематическое отображение данных (schema).
Когда лучше НЕ использовать:
- молодые стартапы;
- большой размер пакетов;
- массивная архитектура приложения;
Когда использовать:
- большой поток данных;
- экосистема использующая несколько
различных языков;
- хочется.
Как это работает?
Client Server
Service Service
car.proto
encode
load load
decode encode decode
message
Load .proto-file
Encoding Decoding
https://developers.google.com/protocol-buffers
https://github.com/dcodeIO/ProtoBuf.js/
Thank you!

More Related Content

What's hot

базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаровDifferent_56
 
Введение в информационный поиск
Введение в информационный поискВведение в информационный поиск
Введение в информационный поискArtem Lukanin
 
Task 0 - 4 Oct 2011
Task 0 - 4 Oct 2011Task 0 - 4 Oct 2011
Task 0 - 4 Oct 2011tegia
 
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текста
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текстаMS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текста
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текстаНиколай Колдовский
 
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина GeeksLab Odessa
 
презентация Microsoft power_point
презентация Microsoft power_pointпрезентация Microsoft power_point
презентация Microsoft power_pointJane R
 

What's hot (6)

базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаров
 
Введение в информационный поиск
Введение в информационный поискВведение в информационный поиск
Введение в информационный поиск
 
Task 0 - 4 Oct 2011
Task 0 - 4 Oct 2011Task 0 - 4 Oct 2011
Task 0 - 4 Oct 2011
 
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текста
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текстаMS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текста
MS Word 2013 - от новичка до профессионала. Занятие 5. Управление потоком текста
 
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина
FOSS Sea 2014_Текстовый анализ на R: подбор рекомендаций для книжного магазина
 
презентация Microsoft power_point
презентация Microsoft power_pointпрезентация Microsoft power_point
презентация Microsoft power_point
 

Similar to Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"

C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12Vitaliy Pak
 
Design of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLDesign of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLAnton Moiseenko
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияSlach
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Ontico
 
File input/output in VHDL
File input/output in VHDLFile input/output in VHDL
File input/output in VHDLvitaliykulanov
 
F# функциональный язык "новой" волны
F# функциональный язык "новой" волныF# функциональный язык "новой" волны
F# функциональный язык "новой" волныArtem Prysyazhnuk
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.Igor Shkulipa
 
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3Vladimir Krylov
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xmlolegol
 

Similar to Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa" (20)

C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12
 
Design of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLDesign of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XML
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем хранения
 
Html лаб 2
Html лаб 2Html лаб 2
Html лаб 2
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
 
Тодуа. Сериализация и язык YAML
Тодуа. Сериализация и язык YAMLТодуа. Сериализация и язык YAML
Тодуа. Сериализация и язык YAML
 
Язык HTML
Язык HTMLЯзык HTML
Язык HTML
 
Язык HTML
Язык HTMLЯзык HTML
Язык HTML
 
File input/output in VHDL
File input/output in VHDLFile input/output in VHDL
File input/output in VHDL
 
F# функциональный язык "новой" волны
F# функциональный язык "новой" волныF# функциональный язык "новой" волны
F# функциональный язык "новой" волны
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.
 
Основы HTML
Основы HTMLОсновы HTML
Основы HTML
 
9946
99469946
9946
 
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3
 
XML
XMLXML
XML
 
Lec 15
Lec 15Lec 15
Lec 15
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xml
 

More from DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR PartnersDataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в ITDataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from insideDataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtDataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's lifeDataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real lifeDataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестированияDataArt
 
Selenoid
SelenoidSelenoid
SelenoidDataArt
 
Selenide
SelenideSelenide
SelenideDataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGDataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"

  • 1. Трансфер данных: есть ли жизнь за пределами JSONa
  • 4.
  • 5. Что такое трансфер данных? XML, JSON, YAML, BSON, etc. Что нужно для удачного трансфера данных? (что нужно для того, что бы 2 объекта поняли друг-друга) или протокол:
  • 6. XML XML означает Extensible Markup Language, с акцентом на markup (разметка). Вы можете создавать текст и размечать его при помощи обрамляющих тегов, превращая каждое слово, предложение или фрагмент в идентифицируемую, сортируемую информацию. Создаваемые вами файлы, или экземпляры документа, состоят из элементов (тегов) и текста, причем элементы помогают правильно понимать документ при чтении на бумаге или даже обрабатывать его в электронном виде. “+” “-”- избыточный синтаксис; - размер документа больше, чем документа в других форматах передачи текстовых данных; - содержит метаданные, и одновременно является языком взаимодействия открытых систем; - для большого количества задач можно использовать более простые решения; - отсутствие общепринятой методологии; - неоднозначность моделирования; - не содержит язык поддержки для типов данных; - сложное использование пространств имен. - легко читается при правильном формате; - не зависит от платформы; - нет общепринятой методологии для моделирования данных в XML, в то время как для реляционной модели и объектно-ориентированной такие средства разработаны и базируются на реляционной алгебре, системном подходе и системном анализе; - в результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов.
  • 7. JSON JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. “+” “-” - нет синтаксиса для задания типа объекта; - много синтаксического мусора. - трудно читается и анализируется пользователем, нет визуализации; - меньший объем данных (по сравнению с XML); - почти неограниченные возможности расширения; - легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее); - многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.
  • 8. YAML YAML — человекочитаемый формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования. Название YAML представляет собой рекурсивный акроним YAML Ain't Markup Language («YAML — не язык разметки»). В названии отражена история развития: на ранних этапах язык назывался Yet Another Markup Language («Ещё один язык разметки») и даже рассматривался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов. “+” “-”- уступает в производительности; - при написании существуют дополнительные меры предосторожности. Даже если вы не учители один пробел в отступах, ваш код может перестать работать; - имеет менее зрелую экосистему. - нет ограничивающих символов = легче чем XML & JSON; - более понятный для чтения; - YAML - это надмножество JSON, вы можете парить как JSON, так и YAML-код с помощью парсера (YAML парсера).
  • 9. Protocol Buffers Protocol Buffers (a.k.a., protobuf) - протокол сериализации (передачи) структурированных данных, предложенный Google. По замыслу разработчиков, сначала должна быть описана структура данных, которая затем компилируется в классы. Вместе с классами идёт код их сериализации в компактном формате представления. Protocol Buffers не предназначен для чтения пользователем и представляет собой двоичный формат. Для десериализации данных необходим отдельный .proto-файл, в котором определяется формат сообщения.
  • 10. BSON имеет аналогичную проблему с избыточными данными. Он также включает в себя все ключи. Что на счет бинарного JSONa? Рассмотрим пример: JSON: {"hello": "world"} (17 байт) BSON: <16 00 00 00 02 h e l l o 00 06 00 00 00 w o r l d 00 00> (22 байта) ProtoBuf vs JSON: Представьте, что вы передаете данные с помощью JSON. Это может выглядеть примерно так: {«type»: «ping», «time»: 123456789}, что имеет вес в 32 байта. Тут содержится 2 + 3 + 3 + 2 + 1 = 11 байта ограничивающих символов плюс 4 + 4 + 4 = 12 байт имен строк, составляющих 23/32 байта ~ = 71% избыточных данных. ProtoBuf, с другой стороны, эффективно сериализует данные в двоичные файлы, не теряя никакой информации, которая, как оказалось, имеет длину 7 байт, и все еще способная различать два сообщения разных типов: <0A 05 08 95 9A EF 3A> Сравним?
  • 11. 7 байт вместо 32 это победа? - за счет того, что protobuf определяет формат сообщения в proto-файле, нам не нужно передавать имена полей а так же ограничивающие символы. Это делает вес нашего сообщения гораздо меньше; - за счет типизации полей в тех самых proto-файлах, использование protobuf уменьшает вероятность ошибки (отправки не верных данных). - proto-файл может так же служить документацией вашего API. - может использоваться как схематическое отображение данных (schema).
  • 12. Когда лучше НЕ использовать: - молодые стартапы; - большой размер пакетов; - массивная архитектура приложения; Когда использовать: - большой поток данных; - экосистема использующая несколько различных языков; - хочется.
  • 14. Client Server Service Service car.proto encode load load decode encode decode message
  • 17.