ION - IAP Object Notation
When exchanging data between nodes in a distributed system it is beneficial to encode that data using a fast, compact and versatile data format.
A fast data format is faster to read and write (deserialize and serialize) for the communicating nodes. ION can even be traversed in its binary form if you need maximum speed.
A compact data format requires less bytes to represent the encoded data. Fewer bytes requires less network bandwidth and can thus be transferred faster across the network. A compact data format is also an advantage when reading and writing it.
A versatile data format is a data format that can be used for as many use cases as possible. This minimizes your need for finding or inventing other data formats.
ION was designed with exactly these goals in mind. In fact, we had several other design goals for ION. These are described in the text ION Design Goals.
ION in IAP
IAP is a message oriented network protocol designed with about the same requirements as ION. It has to be a fast, compact and versatile network protocol that should be able to support a wide variety of use cases. We designed ION especially as a data format for IAP. Thus, all IAP messages are encoded using ION. In fact, ION is short for IAP Object Notation.
To read more about IAP go to the IAP Specification.
ION Outside IAP
Being a data format ION can be used independently of IAP. You can use ION as a data format in data files, log files, as data format for binary messages transmitted over HTTP etc.
ION can contain binary data so you can also embed other formats inside ION when necessary. For instance, an MP3 file, ZIP file, JPG file etc.
ION is a Binary Format
ION uses a binary encoding to make it faster to read and write, more compact, and to make it possible to embed binary data. ION's encoding is described in the text ION Encoding.
ION vs. Other Data Formats
ION is a data format which is similar to a binary version of JSON. In that respect ION is similar to MessagePack, CBOR and Amazon's ION but with a few minor, beneficial differences.
By the way, we published our ION format about a year before Amazon published their ION format. We did not choose the name ION because of its similarity to Amazon's ION. We did not discover the similarities until after we had designed our ION format.
We have a more detailed description of how ION compares to other data formats in the text ION vs. Other Formats.
Since ION is similar in encoding to MessagePack, CBOR and Amazon's ION, we expect the read and write speeds to be comparable to that of these formats. We have made some comparisons already with Jackson's MessagePack and CBOR implementations and they confirm this expectation. You can see the results of this comparison in the text ION Performance Benchmarks.