.net - 解决方案源代码组织指南(OO/DDD)

标签 .net language-agnostic oop domain-driven-design code-organization

我开始着手我的第一个商业项目 (.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/

相关文章:

.NET 正则表达式十进制数字

python - 以平衡权重的 block 拆分列表

c# - 在 C# 中使用枚举作为整型常量

php - OOP PHP MySQL 返回多行和变量

c# - 为什么代码中的小改动不会影响 exe 文件的大小?

c# - 在我的 C# 代码中使用 .NET 4.0 元组是一个糟糕的设计决策吗?

java - 将设置存储在数据库中

c++ - 程序效率

.net - 从哪里获得 .net 的 apache poi 端口

oop - 什么时候使用私有(private)方法?