Domain driven design 单个有界上下文的结构

Domain driven design 单个有界上下文的结构,domain-driven-design,Domain Driven Design,有界上下文是跨所有应用程序层(域、应用程序、表示和基础架构)还是仅跨域模型?例如,我应该使用以下结构: <bc 1> |_ domain |_ application |_ presentation |_ infrastructure <bc 2> |_ domain |_ application |_ presentation |_ infrastructure |_领域 |_应用 |_介绍 |_基础设施 |_领域 |_应用 |_介绍 |_基础设施

有界上下文是跨所有应用程序层(域、应用程序、表示和基础架构)还是仅跨域模型?例如,我应该使用以下结构:

<bc 1>
 |_ domain
 |_ application
 |_ presentation
 |_ infrastructure
<bc 2>
 |_ domain
 |_ application
 |_ presentation
 |_ infrastructure

|_领域
|_应用
|_介绍
|_基础设施
|_领域
|_应用
|_介绍
|_基础设施
或以下各项:

domain
 |_ <bc 1>
 |_ <bc 2>
application
presentation
infrastructure
域
|_ 
|_ 
应用
演示
基础设施

做你认为合适的事。每个有界上下文都有不同的域,当然也有不同的应用程序层,但我们可以想象一个公共的基础结构层和表示层。这实际上取决于您的体系结构选择,以及您试图构建的应用程序


如果你想得到更准确的答案,请在你的问题中添加一些材料,这样我们就可以了解你的背景和你的问题。

这两种方法都是有效的。我倾向于支持第一种选择,因为它允许更好的模块化,并为高级BC提供非常清晰的边界。第二个选项是“标准”方式,它支持更技术的分层,而第一个选项实际上支持更领域驱动的分层


选择一个你觉得更舒服的。

我认为这不是一个关于DDD的问题,而是一个关于架构的问题。有界上下文之间的哪种耦合对您来说是可接受/可取的

如果所有有界上下文都将:

  • 可以用一种编程语言开发
  • 访问相同的数据库引擎
  • 由相对较小的团队开发(最多20人)
然后,您可能应该使用第二种方法—每个有界上下文都包含自己的域和应用程序层,并且所有有界上下文共享相同的基础结构和应用程序层


在其他情况下,您应该考虑microservices/SOA体系结构。

这是关于人力资源应用程序的,它只是更大系统的一部分。我计划将其分为几个子部分:招聘(管理求职者)、就业(管理员工)和评估/测试(评估求职者和员工)。我猜这些是独立的有界上下文,因为一个人可以根据上下文扮演这些角色:申请人、员工或被评估人。你可以使用DDD来个性化不同的有界上下文。但在每一种情况下进行DDD的必要性是一个不同的问题。不管怎么说,我还是很喜欢你的第一种方法,因为我的经验很少,因为它可以让你在每一个bc的基础上改变你的想法。两个答案都同样有帮助。没问题,我不会急于回答问题。。祝您有个美好的一天!