There is also MessagePackwhich claims to be faster than Protocol Buffers and have more features than Thrift.
I would look at REST as a first option because it is ubiquitous and no-nonsense.
If performance and representation really needs to be compact, I have heard good things about Apache AVRO and my fingers are twitching to try it out in anger.
There also seems to be ICE: which uses Google Protocol Buffers for RPC.