Domain driven design CQRS/DDD:虚拟blog/post/category/tags示例
我仍在深入研究CQRS实现实验,我决定从头开始我的博客,并将其用作沙箱 我读了很多关于有界上下文的书,在我看来,这是所有这些中最微妙的方法,也许是最难解释和应用于实际项目的方法 幸运的是,我的领域非常简单;-) 我试图识别不同的有界上下文,并确定在每个上下文中哪个模型成为聚合根 域规则非常简单:Domain driven design CQRS/DDD:虚拟blog/post/category/tags示例,domain-driven-design,cqrs,Domain Driven Design,Cqrs,我仍在深入研究CQRS实现实验,我决定从头开始我的博客,并将其用作沙箱 我读了很多关于有界上下文的书,在我看来,这是所有这些中最微妙的方法,也许是最难解释和应用于实际项目的方法 幸运的是,我的领域非常简单;-) 我试图识别不同的有界上下文,并确定在每个上下文中哪个模型成为聚合根 域规则非常简单: 当作者撰写博客文章时,他必须选择一个类别来保存他的文章,并且他可以选择多个标签来提高他的文章的可见性 当读者访问博客时,他可以通过类别或标签浏览博客帖子 只有这些规则,我们已经得到了几个有界上下文,
- 当作者撰写博客文章时,他必须选择一个类别来保存他的文章,并且他可以选择多个标签来提高他的文章的可见性
- 当读者访问博客时,他可以通过类别或标签浏览博客帖子
- 用户(编写者)组成一个post上下文。在这些上下文中,Post是聚合根
- 用户(读者)按类别浏览帖子。在这些上下文中,类别是聚合根
- 用户(阅读器)通过标签浏览帖子。在这种情况下,我不确定…;-)
通常,一个post类别和一组标记被指定为在您的案例中创建post-ComposeCommand的命令的一部分。根据您是将类别和标记建模为聚合对象还是值对象,该命令将指定CategoryId和TagID,或者仅指定值。“我的域非常简单”。在这种情况下,您可能只有1个有界上下文。也许你把聚合误认为是有界上下文?好吧,谢谢,我想我明白了,我从错误的角度看它。我是从用户体验的角度考虑的,而不是模型的真正“意义”,你是对的,模型在这里保持不变,实际上是聚合根发生了变化。关于类别和标记的创建,我理解值对象和对象引用之间的区别,我们应该尽量避免。我想知道这些VO或参考应该在哪里创建/实例化?在Post::command()方法中?在命令处理程序中(可能使用工厂?)