Protocol Buffers

Protocol Buffres (protobuffers) je způsob serializace dat. Serializací je myšleno „převedení datové struktury nebo instance objektu uložené ve vnitřní paměti počítače na posloupnost bitů, kterou lze uložit na nějaké úložiště, případně přenést po síti … je třeba počítat s tím, že objekt budeme převádět zpět ze serializované do původní podoby pomocí tzv. deserializace“ (wiki: wiki).

Protocol Buffers je formát vyvinutý společností Google a je určen pro efektivní výměnu dat. Slovíčko efektivní je zde velmi důležité. Obvyklými formáty dat, pro výměnu, jsou XML a Json. Protofuffer je navržen tak, aby se dal rychle serializovat a deserializovat a byl co nejméně datově náročný. Dle stránky developers.google.com/…/overview je oproti XML:

  • jednodušší
  • 3 – 10 krát menší
  • 20 – 100 krát rychlejší
  • více jednoznačný
  • generuje datové třídy, které se jednodušeji používají.

Konkurentem protobuffers je Apačí projekt Thrift.

Protocol Buffers potřebují schéma, což je textový soubor s příponou .proto. Zde je příklad, jak takový .proto soubor může vypadat:

syntax = "proto3";

option java_package = "cz.vitfo.protobuff";
option java_outer_classname = "PbUser";

message User {
	string username = 1;
	UserProfile userProfile = 2;
}

message UserProfile {
	enum UserStatus {
		ACTIVE = 0;
		PASSIVE = 1;
		CLOSED = 2;
	}
	
	string password = 1;
	UserStatus userStatus = 2;
}

Příště si ukážeme, jak takový soubor vytvořit, zkompilovat a vysvětlíme si, co jednotlivé části znamenají.