Protobuf (c++/.net) explains in detail