В целом, похоже, что Protocol Buffers хорошо подходит для того, что вы хотите сделать. Многие люди используют его именно для того, что вы описали. Я слышал о некоторых других, использующих простой JSON для этого, но он определенно менее эффективен.
Protocol Buffers - это быстрый, переносимый, зрелый и хорошо документированный. Он разработан и поддерживается Google. Одной из отличительных особенностей буферов протокола является возможность прозрачного расширения существующих записей новыми полями. Например, вы можете расширить существующий формат записи, включив в него некоторые другие поля, не преобразовывая существующие данные или не изменяя программное обеспечение, работающее со старыми полями (так как оно будет молча отбрасывать неизвестные поля).
По поводу вашего вопроса о том, может ли клиент работать с сериализованным форматом (если я правильно понял вопрос). Если клиент поддерживает буфер протоколов и имеет файлы «.proto», описывающие формат данных, он сможет работать с ним так же, как и вы. Если клиент не может работать с буфером протокола, есть некоторые сторонние библиотеки [1], которые могут конвертировать между форматами Protobuf, JSON и XML (я сам не пробовал их использовать).
Возможно, вы также захотите проверить некоторые альтернативы буферам протоколов, такие как Message Pack [2] и Avro. Они утверждают, что быстрее / компактнее / поддерживают динамическую печать.
[1], например, http://code.google.com/p/protobuf-java-format/
[2] http://msgpack.org/