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