Описание тега protocol-buffers
Буферы протокола - это гибкий, эффективный, автоматизированный механизм для сериализации структурированных данных - подумайте об XML, но меньше, быстрее и проще. Вы определяете, как вы хотите, чтобы ваши данные были структурированы один раз, затем вы можете использовать специальный сгенерированный исходный код, чтобы легко записывать и считывать структурированные данные в различные потоки данных и из них с использованием множества языков. Вы даже можете обновить структуру данных, не нарушая развернутые программы, которые скомпилированы по "старому" формату.
Компиляторы буферов протоколов способны обрабатывать широкий спектр синтаксиса языков, включая C, C++, Java, Objective C, Python и PHP. Это означает, что сообщения, определенные в прото-файлах, могут быть преобразованы в эквивалентные свойства или переменные в исходных файлах, принадлежащих этим языкам, и многие другие.
Определение образца:
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
Больше информации на официальном сайте protobuf. Последняя версия API - proto3, которая в значительной степени похожа на proto2, но имеет некоторые отличия.