Компания, в которой я работаю, недавно решила использовать комбинацию .NET и Java для всех будущих разработок. Мы пытались стандартизировать порядок организации нашего кода в пространствах имен (.NET) и пакетах (Java), и никто на самом деле не пытался организовать пространства имен для нескольких продуктов, использующих несколько платформ.
Недавно я связался с новым продуктом, в котором используется внешний интерфейс Java (он работает на устройствах Blackberry) с внутренним интерфейсом .NET (брокер сообщений, позволяющий интерфейсу Java взаимодействовать с нашим унаследованным кодом VB6 / COM, потому что мы Я не хотел иметь дело с COM на стороне Java, и было легко заставить работать .NET с нашим существующим кодом VB6). Прямо сейчас я просто фокусируюсь на стороне .NET.
Я создал новое решение .NET под названием CompanyName.ProductName.Broker
и получил два подпроекта: проект библиотеки классов Core
, который реализует большую часть кода брокера, и консольный проект BrokerConsole
, который позволяет брокеру запуск и остановка из командной строки (брокер будет работать на сервере вместе с сервером очереди сообщений RabbitMQ).
В данный момент оба проекта находятся в подпространствах пространства имен CompanyName.ProductName.Broker
. Вопрос в том, имеет ли это смысл?
С одной стороны, проект BrokerConsole
довольно тесно связан с проектом Core
, но, с другой стороны, BrokerConsole
компилируется в автономный EXE-файл. Я подумал, что было бы более разумно поместить проект BrokerConsole
в отдельное корневое пространство имен, возможно, что-то вроде CompanyName.Apps.ProductName
, потому что это действительно интерфейс для CompanyName.ProductName.Broker.Core.dll
и является приложением, а не библиотекой.
Мое обоснование для создания совершенно нового корневого пространства имен CompanyName.Apps
заключается в том, что обычно при создании приложения вы помещаете его в отдельное пространство имен из библиотек, на которые ссылаетесь в любом случае (т. Е. Вы не будете помещать приложение веб-сервера в System.Web
пространство имен). Я думаю в том же духе, за исключением того, что указанные библиотеки являются библиотеками, разработанными компанией.
Это хорошая идея, или я должен попытаться сохранить все, что связано с «продуктом» (в терминах маркетинга), в общем пространстве имен CompanyName.ProductName
? Существуют ли более эффективные способы управления несколькими проектами, которые вместе составляют один продукт?