我工作的公司最近决定将 .NET 和 Java 结合用于所有未来的开发工作。我们一直在尝试标准化将代码组织到命名空间 (.NET) 和包 (Java) 中的方式,并且没有人真正有尝试为涉及多个平台的多个产品组织命名空间的经验。
最近,我参与了一个使用 Java 前端(在黑莓设备上运行)和 .NET 后端(允许 Java 前端与我们的旧版 VB6/COM 代码通信的消息代理)的新产品,因为我们没有想要在 Java 端处理 COM,并且很容易使 .NET 与我们现有的 VB6 代码一起工作)。现在我只关注.NET 方面的事情。
我创建了一个新的.NET 解决方案,CompanyName.ProductName.Broker
名为与 RabbitMQ 消息队列服务器一起在服务器上)。Core
BrokerConsole
现在,这两个项目都在命名空间的子CompanyName.ProductName.Broker
命名空间中。问题是,这有意义吗?
一方面,该BrokerConsole
项目与项目非常紧密耦合Core
,但另一方面,该项目BrokerConsole
编译为独立的 EXE。我认为将项目放入单独的根命名空间可能更有意义BrokerConsole
,可能类似于CompanyName.Apps.ProductName
,因为它实际上是一个前端CompanyName.ProductName.Broker.Core.dll
并且是一个应用程序而不是一个库。
我创建一个全新的CompanyName.Apps
根命名空间的理由是,通常当您创建应用程序时,您将其放入与您所引用的库不同的命名空间中(即您不会将 Web 服务器应用程序放入System.Web
命名空间中)。我的想法是一样的,只是引用的库恰好是公司开发的库。
这是一个好主意,还是我应该尝试将与“产品”(营销术语)相关的所有内容保存在一个公共CompanyName.ProductName
命名空间下?是否有更好的方法来管理共同构成一个产品的多个项目?