Experience with Protocol Buffers
jbooth: Check out Avro, too.  With both Protocol Buffers and Thrift, it's really hard to evolve schemas because you won't be able to read data written with an earlier version of the schema.  Avro has the speed of binary while being flexible enough to read older data with later versions of the schema.