Где хранить прото файлы, которые делятся между проектами? - PullRequest
1 голос
/ 16 мая 2019

У меня есть проект A и проект B. Они могут быть на разных языках программирования. Проект A предоставляет API с использованием прототипов, которые проект B будет использовать для генерации API на языке программирования, который использует проект B.

Но где хранятся прото файлы? Какой обычный способ сделать это с protobuf? Вы добавляете файлы, сгенерированные из файлов Proto Files, в систему управления версиями?

Если вы храните копию прототипов как в проекте A, так и в проекте B, то, если проект A меняет свой API, то проект B должен будет их скопировать. Этот подход не очень хорошо работает, когда многие проекты используют API, предоставляемый проектом A.

Вы можете решить вышеуказанную проблему, если у вас есть отдельный проект, проект C, содержащий общие файлы прототипов. Но тогда как генерировать прототипы файлов из проекта A и проекта B?

1 Ответ

1 голос
/ 18 мая 2019

Я бы предложил хранить файлы .proto в отдельном проекте.Это контракт между вашими двумя проектами, и они не обязательно «принадлежат» ни одному из них.Хранение их в отдельном проекте обеспечивает нейтральную почву для обоих участников проекта для согласования изменений в файлах - например, посредством процесса запроса извлечения / объединения, в котором могут быть участники из обоих проектов, выступающие в качестве рецензентов.

Что касается генерациикод из файлов прото, я бы, вероятно, сделал это в проектах, которые нуждаются в них.Таким образом, в вашем случае проект C будет содержать только файлы .proto, а проекты A и B будут извлекать файлы .proto и генерировать необходимый код.Я чувствую, что так должно быть, потому что проекты A и B потребляют сгенерированный протобуф код.Если бы код был сгенерирован в проекте C, то проекты A и B все равно должны были бы использовать сгенерированный код, чтобы иметь возможность его использовать, и, поскольку проект C технически отделен от A и B, не будет очевидно, какие языки необходимо будет использовать.генерируется - все они?Просто 2, которые нужны?

Создавая проект C, вы создаете место, которое потенциально может содержать больше .proto файлов для других проектов.Думая о будущем, у вас может быть много проектов с общими базовыми типами сообщений.Для управления архитектурой со многими взаимосвязанными проектами имеет смысл попытаться объединить определения сообщений, и это было бы трудно / невозможно, если бы каждый проект поддерживал свои собственные определения, еще хуже (как вы говорите), если были дублированные копии.Хранение их в одном месте позволяет новым проектам подбирать существующие определения и расширять их (в рамках эволюционных руководящих принципов), а также позволяет более строго управлять и поддерживать набор определений, например, набор опытных рецензентов, обеспечивающих выполнение всех задач.последовательно и разумно - будь то с точки зрения моделирования, пространства имен или управления версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...