We have the need to send data between very different software components (from embedded devices to Web services). For various reasons (the fact that we got Mosquitto to compile on the most problematic platform not being the least of them), we decided to use the MQTT message brokering protocol. It's a rather lightweight protocol which provides an application-defined payload for messages to be published. We now need to find a way to specify the data in that payload.
The current idea is to use some existing IDL that brings the ability to access the data from at least C++ and Java, ideally also Python and others languages. If this would come with encoding/decoding APIs for these platforms which can be used to serialize the data into, and deserialize it out of, the MQTT protocol's payload, this would be ideal.
Is there anything like this available?
Note:
- There's to be a lot of data. In fact, we will likely need to cut it down from the current specifications in order to avoid network congestion. An XML format might be too talkative for this.
- The format should be easy to encode and decode, since on embedded platforms CPU shares are valuable. (That might be another reason to not so send XML over the wire.)
- If any of the components needed for this (IDL compiler etc.) is not cross-platform, it should run on Windows.
- I'm not a networking expert. If IDLs are a thing of the last decade, the technology has moved on, and there's better ways to move data between platforms over a network, go ahead and suggest it.