what’s protocal buffer, pb

Protocol Buffers are a method of serializing structured data. As such, they are useful in developing programs to communicate with each other over a wire or for storing data. The method involves an interface description language that describes the structure of some data and a program that generates from that description source code in various programming languages for generating or parsing a stream of bytes that represents the structured data.

Google developed Protocol Buffers for use internally and has made protocol compilers for C++Java and Python available to the public under a free softwareopen source license. Various other language implementations are also available.

The design goals for Protocol Buffers emphasized simplicity and performance. In particular, it was designed to be smaller and faster than XML.

Protocol Buffers are widely used at Google for storing and interchanging all kinds of structured information. Protocol Buffers serve as a basis for a custom remote procedure call (RPC) system that is used for nearly all inter-machine communication at Google.

Protocol Buffers are very similar to the Apache Thrift protocol (used by Facebook for example), except it does not include a concrete RPC protocol stack to use for defined services.

An engineer defines data structures (called messages) and services in a proto definition file (.proto) and compiles that with protoc. This compilation generates code that can be invoked by a sender or recipient of these data structures. For example, example.proto will produce example.pb.cc and example.pb.h which will define C++ classes for each message and service example.proto defines.

Canonically, Protocol Buffers are serialized into a binary wire format which is compact, forwards-compatible, backwards-compatible, but not self-describing (that is, there is no way to tell the names, meaning, or full datatypes of fields, without having an external specification.) There is no defined way to include or refer to such an external specification (schema) within a Protocol Buffer file. The officially supported implementation includes an ASCII serialization format, but this format — though self-describing — loses the forwards-and-backwards-compatibility behavior, and is thus not a good choice for applications other than debugging.

Though the primary purpose of Protocol Buffers is to facilitate network communication, its simplicity and speed make Protocol Buffers an alternative to data-centric C++ classes and structs, especially where interoperability with other languages or systems might be needed in the future.

more information: 1: https://developers.google.com/protocol-buffers/?hl=zh-CN

2: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/?ca=drs-tp4608
3: http://www.kuqin.com/networkprog/20121007/331889.html
参考 1: http://en.wikipedia.org/wiki/Protocol_Buffers


电子邮件地址不会被公开。 必填项已用 * 标注


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>