"MessagePack is a computer data interchange format. It is a binary form for representing simple data structures like arrays and associative arrays.
MessagePack aims to be as compact and simple as possible. The official
implementation is available in a variety of languages such as C, C++, C#, D, Erlang, Go, Haskell, Java, JavaScript, Lua, OCaml, Perl, PHP, Python, Ruby, Scala, Smalltalk, and Swift.
MessagePack is more compact than JSON,
but imposes limitations on array and integer sizes. On the other hand,
it allows binary data and non UTF-8 encoded strings. In JSON, map keys
have to be strings, but in MessagePack there is no such limitation and
any type can be a map key, including types like maps and arrays, and,
like YAML, numbers.
Compared to BSON,
MessagePack is more space-efficient. BSON is designed for fast
in-memory manipulation, whereas MessagePack is designed for efficient
transmission over the wire. For example, BSON requires null terminators
at the end of all strings and inserts string indexes for list elements,
while MessagePack doesn't. BSON represents both arrays and maps
internally as documents, which are maps, where an array is a map with
keys as decimal strings counting up from 0. MessagePack on the other
hand represents both maps and arrays as arrays, where each map key-value
pair is contiguous, making odd items keys and even items values.
The Protocol Buffers
format aims to be compact and is on par with MessagePack. However,
while JSON and MessagePack aim to serialize arbitrary data structures
with type tags, Protocol Buffers require a schema to define the data
types. Protocol Buffers compiler creates boilerplate code in target language to facilitate integration of serialization into the application code; MessagePack returns only dynamically-typed data structure and provides no automatic structure checks."
https://en.wikipedia.org/wiki/MessagePack
http://msgpack.org/
No comments:
Post a Comment