我开始着手我的第一个商业项目 (.NET),并试图遵循 DDD 原则。是否有组织源代码和命名空间的指南或通用模式?
例如,您的域对象是否位于命名空间 MyProject.Domain
或其他 namespace 中?你会把具体的实现和接口(interface)分开吗?在不同的命名空间?不同的文件夹?不同的解决方案?
我知道这在很大程度上是主观的并且取决于项目规模,但是一些指示或建议对于开始一个相对较小但可扩展的 n 层项目会很有用。
最佳答案
组织 DDD 应用程序解决方案的正确方法有很多,因此请接受实验。我几次更改了我的个人解决方案布局。我认为细节取决于您使用的技术,但整体组织保持不变。
- 每个限界上下文一个解决方案
- 一个包含模型(实体、值对象、存储库接口(interface)等)的域项目
- 一个包含 NHibernate 映射、存储库实现和 NHibernate 特定类型的 Domain.Persistence(或 DataAccess)项目。如果您认真计划拥有多个持久层,您可以将它们命名为 Domain.Persistence..
- 一个包含应用层代码(服务)的应用项目
- 任意数量的 UI 或 Windows 服务项目
看看我的DDDSample.Net项目。它包含针对同一问题的 DDD 解决方案的许多变体。我只是描述了最典型的简单的,还有更复杂的,具体来说:
- 多层模型
- CQRS 系统
- 事件溯源 CQRS 系统
希望对您有所帮助。
关于.net - 解决方案源代码组织指南(OO/DDD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912550/