Использовать буфер протокола как общий объект данных?

Мы вводим буферы протокола в качестве нового транспорта для некоторых RPC-сервисов. Поскольку существует сопротивление ручному перемещению данных между различными типами похожих объектов, я могу предвидеть, что экземпляры Buffer протокола передаются в стек немного выше, чем только для интерфейса сервера RPC.

Это то, чего я должен стараться избегать? Безопасно ли обрабатывать объект буфера протокола, например, простой держатель данных, с удобным удобством, чтобы он мог быстро и эффективно преобразовываться в двоичный файл и из него?

Другая причина, по которой я считаю, что это хороший способ создания объектов данных, заключается в том, что понятие обязательных/необязательных полей и автоматически созданный интерфейс построителя.

Ответы

Ответ 1

Ну, они не очень удобны в использовании, так как они неизменяемы - вы можете передать строителей, но это приводит к довольно длинным именам типов. Это также означает, что вы ограничены типами данных, поддерживаемыми буферами протоколов (и вашими собственными сообщениями).

Это безопасно для этого, но это не всегда создает лучшие проекты. С другой стороны, иногда это именно то, что доктор заказал:)

Я предлагаю вам экспериментировать - здесь нет "одного размера".

Ответ 2

В общем, я проектирую слои своих систем, чтобы детали реализации из одного слоя не просачивались друг в друга. У меня нет прямого опыта использования буферов протокола Google, но похоже, что вы хотите использовать одно и то же представление для транспорта и на более высоких уровнях вашей системы.

Если вы решили, что хотите запретить использование протокольных буферов в качестве транспортного представления, насколько легко было бы использовать что-то еще?