martes, 11 de octubre de 2016

Protocol Buffers

¿Que es protocol buffers?

Es un método desarrollado por google que se centra en la serialización y deserialización de información estructurada de manera independiente al lenguaje de programación e inclusive al sistema operativo. Es útil para la comunicación entre programas o almacenamiento de datos. este método implica un lenguaje de descripción de la interfaz que describe la estructura de la información y un programa que genera el código fuente de esta descripción para poder interpretar, generar o analizar una corriente de bytes que representa la información estructurada. Esto nos ofrece una forma sencilla de crear nuestro propio protocolo de comunicaciones, adaptado a las necesidades de un problema concreto.

¿Cómo funciona?

Se especifica como es que se quiere la información a serializar en una estructura, En la cual se define los tipos de mensaje del protocol buffers en archivos de tipo .proto. Cada mensaje representa una pequeña unidad del registro de datos que contiene una serie de claves y valores (similar tal vez a JSON).

Ejemplo:
message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}
Como se puede apreciar el formato del mensaje es bastante sencillo, cada tipo de mensaje tiene uno o mas campos numerados y cada campo tiene su nombre, un tipo de dato y su correspondiente valor asignado. También es posible definir la estructura de manera jerárquica, especificar opciones por campo, campos obligatorios.

Luego de haber definido los mensajes, se ejecuta el compilador de protocol buffers para generar las clases de acceso a datos. Lo cual proporciona algunos accesorios para cada campo como por ejemplo query(), set_query(), además de métodos para serialización.

¿Por que no hacer uso de XML?

Protocol buffers es ventajoso en comparación a XML a la hora de serializar datos estructurados, podemos mencionar lo siguiente:
  • Son más sencillos
  • Son desde 3 hasta 10 veces más pequeños
  • Son desde 20 hasta 100 veces más rápidos
  • Son menos ambiguos
  • Generan accesos de datos que pueden ser fáciles desde el punto de vista de la programación

Realizando una comparación sin resaltar las ventajas de protocol buffers nos encontramos con lo siguiente:
  • Protocol buffers es menos amigables que XML, en el sentido de que no se entienden por sí sólos y es necesario definir el fichero .proto.
  • Protocol buffers es mucho más eficiente, ocupa menos espacio, tiene más rapidez de ejecución, y es más accesibles desde programación.
  • Protocol buffers es una alternativa mejor que XML en el caso de que se pueda definir el fichero .proto que defina la entidad y se quiera ganar en rapidez y facilidad de acceso.
  • Protocol buffers no se recomienda en el caso de lenguajes que requieran ser entendibles por sí solos, como puede ser XML (sin el fichero .proto, no es posible interpretar el contenido).

No hay comentarios:

Publicar un comentario