我开始我的第一个商业项目(.NET),并试图遵循 DDD 原则。是否有组织源代码和命名空间的准则或通用模式?
例如,您的域对象是否进入命名空间MyProject.Domain
或其他什么?你会把具体的实现和接口分开吗?在不同的命名空间中?不同的文件夹?不同的解决方案?
我知道这其中很多是主观的,并且取决于项目规模,但是对于开始一个相对较小但可扩展的 n 层项目的一些指示或建议会很有用。
我开始我的第一个商业项目(.NET),并试图遵循 DDD 原则。是否有组织源代码和命名空间的准则或通用模式?
例如,您的域对象是否进入命名空间MyProject.Domain
或其他什么?你会把具体的实现和接口分开吗?在不同的命名空间中?不同的文件夹?不同的解决方案?
我知道这其中很多是主观的,并且取决于项目规模,但是对于开始一个相对较小但可扩展的 n 层项目的一些指示或建议会很有用。
有许多正确的方法来组织 DDD 应用程序的解决方案,所以要对实验持开放态度。我几次更改了我的个人解决方案布局。我认为细节取决于您使用的技术,但整体组织保持不变。
看看我的DDDSample.Net项目。它包含针对同一问题的许多 DDD 解决方案的变体。我刚刚描述了最典型的简单的一种,但还有更复杂的,具体来说:
希望有帮助。
我也是这方面的新手,但这就是我所做的。
我们项目组织的根源是我们的公司名称,叫它公司。项目安排如下:
Company.Core 有几个命名空间:
.Data 为我们的 DAL 定义接口
.Repository 为我们的存储库定义基本接口
Company.Data 是 DAL 的具体实现
Company.Domain 是域对象和定义存储库接口的位置
Company.Repository 是存储库的具体实现
Company.Tests 有很多命名空间:
.Data 测试 DAL,.Data.Mock 模拟它
.Repository 测试存储库, .Repository.Mock 模拟它们
.Domain 使用模拟存储库测试域对象
这一切都与 AutoFac 连接在一起