Los Protocol Buffers son mecanismos extensibles neutrales al idioma y a la plataforma para serializar datos estructurados.
Al compilar un archivo *.proto podemos elegir lenguajes como: Java, PHP, C#, Python y otros más.
Una definición de proto podría lucir así:
person.proto
message Person { optional string name = 1; optional int32 id = 2; optional string email = 3; }
Y al generarse el código, por ejemplo en Java, la definición podría emplearse de la siguiente forma:
Person juan = Person.newBuilder() .setId(1234) .setName("Juan aldama") .setEmail("juan.aldama@spgf.dev.com") .build(); output = new FileOutputStream("salida.dat"); juan.writeTo(output);
Pero... ¿cómo instalamos Protobuf?
Para Windows podemos usar Chocolatey:
$ choco install protoc
Para Windows también podemos optar por descargar:
https://github.com/google/protobuf/releases
Extraer a C:\proto3 y crear la variable de entorno usando esta dirección: C:\proto3\bin
Para Linux podemos teclear:
$ sudo apt install -y protobuf-compiler
Comprobamos la instalación:
$ protoc --version
¿Y qué con los lenguajes de programación?
Si queremos usar Python con Protobuf debemos teclear esto para instalarlo:
$ pip install protobuf
Y esto es la forma para generar código Python usando Protobuf:
$ protoc --python_out=pyi_out:output_dir
Para crear un archivo *.proto es necesario saber que existen diferentes tipos de datos: los escalares numéricos como:
int32, int64, sint32, sint64, uint32, uint64, fixed32, fixed64, sfixed32, sfixed64, float, double
Además de otros tipos:
bytes, bool, string ...
Un archivo *.proto, por así decirlo, es similar a una clase Java, C++ o C# donde se específica el nombre de la "clase" y sus "atributos".
usuario.proto
message Usuario{ string nombre = 1; optional string apellidos = 2; bool activo = 3; Direccion direccion = 4; }
Puedes usar otras definiciones proto como miembros al importarlos a otro archivo. Crear tipos y enumeraciones similar a como se hace en lenguajes como Java, C/C++ y C#. Y así crear archivos relativamente complejos con una lógica bien definida.
En próximas entregas veremos ejemplos en
Si quisieramos generar código java del archivo person.proto teclearíamos:
protoc --java_out=java proto/person.proto
Si esto funcionó correctamente, tendremos nuestro código Java generado (PersonOuterClass.java). Más ejemplos en próximas entregas.
Enlaces:
https://protobuf.dev/
Comentarios
Publicar un comentario