我正在开始我的第一个商业项目(.NET),并且正在尝试遵循DDD原则。是否有任何指导方针或共同模式来讨论源代码和名称空间?
例如,您的域对象是否在命名空间MyProject.Domain
或其他内容中?你会分开具体的实现和接口吗?在不同的命名空间?不同文件夹?不同的解决方案?
我知道很多这是主观的,并且取决于项目规模,但是在一个相对较小但可扩展的n层项目上开始的一些指示或建议将是有用的。
答案 0 :(得分:2)
有许多正确的方法来组织DDD应用程序的解决方案,因此请接受实验。我几次改变了我的个人解决方案布局。我认为细节取决于您使用的技术,但整体组织保持不变。
看看我的DDDSample.Net项目。它包含针对同一问题的DDD解决方案的许多变体。我刚刚描述了最典型的简单,但有更复杂的,特别是:
希望有所帮助。
答案 1 :(得分:1)
我也是新手,但这就是我所做的。
我们项目组织的根源是我们的公司名称,称之为公司。这些项目的布局如下:
Company.Core有几个名称空间:
.Data定义DAL的接口
.Repository定义了我们的存储库的基本接口
Company.Data是DAL的具体实现
Company.Domain是域对象,其中定义了存储库接口
Company.Repository是存储库的具体实现
Company.Tests有许多名称空间:
.Data测试DAL,.Data.Mock嘲笑它
。存储库测试存储库,.Repository.Mock模拟它们
.Domain使用模拟存储库测试域对象
所有这些都与AutoFac连接在一起