Использовать буфер протокола как общий объект данных?
Мы вводим буферы протокола в качестве нового транспорта для некоторых RPC-сервисов. Поскольку существует сопротивление ручному перемещению данных между различными типами похожих объектов, я могу предвидеть, что экземпляры Buffer протокола передаются в стек немного выше, чем только для интерфейса сервера RPC.
Это то, чего я должен стараться избегать? Безопасно ли обрабатывать объект буфера протокола, например, простой держатель данных, с удобным удобством, чтобы он мог быстро и эффективно преобразовываться в двоичный файл и из него?
Другая причина, по которой я считаю, что это хороший способ создания объектов данных, заключается в том, что понятие обязательных/необязательных полей и автоматически созданный интерфейс построителя.
Ответы
Ответ 1
Ну, они не очень удобны в использовании, так как они неизменяемы - вы можете передать строителей, но это приводит к довольно длинным именам типов. Это также означает, что вы ограничены типами данных, поддерживаемыми буферами протоколов (и вашими собственными сообщениями).
Это безопасно для этого, но это не всегда создает лучшие проекты. С другой стороны, иногда это именно то, что доктор заказал:)
Я предлагаю вам экспериментировать - здесь нет "одного размера".
Ответ 2
В общем, я проектирую слои своих систем, чтобы детали реализации из одного слоя не просачивались друг в друга. У меня нет прямого опыта использования буферов протокола Google, но похоже, что вы хотите использовать одно и то же представление для транспорта и на более высоких уровнях вашей системы.
Если вы решили, что хотите запретить использование протокольных буферов в качестве транспортного представления, насколько легко было бы использовать что-то еще?