【发布时间】:2016-04-25 21:41:23
【问题描述】:
我发现很难决定某个东西应该是域还是应用程序的一部分。
通读answer 对授权等概念有很大帮助,但我仍然发现自己在其他事情上遇到困难。
为了说明我的困惑,请考虑一个发表评论的案例。以下是发表评论之前需要做的事情。我在括号中指出我认为这个功能应该去哪里。
- 确保允许用户角色/状态对此帖子发表评论(授权,转到应用程序)
- 确保我们评论的帖子存在且已发布(域)
- 确保用户在最后一分钟发布的 cmets 不超过 5 个(节流,直觉说它会转到应用程序)
- 确保注释不是空字符串(域)
- 确保评论没有脏话(域?)
- 确保此帖子(域?)中同一用户的评论没有重复
- 格式化评论(应用程序)
- 从评论中删除当前用户(应用程序)不允许使用的某些 HTML 标记
- 检查垃圾邮件评论(应用程序?)
我无法决定检查垃圾邮件评论是域问题还是应用程序,限制也是如此。从我的角度来看,这两个问题对我来说都很重要,并且必须存在。但是授权也是如此,我们知道它不应该在域中。
如果我在域服务和应用程序服务之间分离这些问题,那么我觉得我的域没有完全强制执行,实际上依赖于应用程序进行事先检查。在那种情况下,重点是什么,我为什么不在应用程序中做这一切以减少混乱?
我当前的设置是这样的:
Controller ->
App.CommentingService.Comment() ->
Domain.CommentingService.Comment()
如果有人可以完成所有必需的步骤来创建评论并将其分配到正确的层并给出一些推理,这将是有帮助的。
【问题讨论】:
标签: domain-driven-design cqrs domain-model