我正在构建一个应用程序,它将通过RESTful服务公开其部分功能,我的应用程序包的组织如下
应用程序包公开端点
CastReview(UUID reviewedEntityId, string review)
从请求正文中检索的审核,这是强制性的。
现在我的问题是验证应该发生的地方
我应该将验证逻辑保留在聚合内部和应用程序内部,我只需构建聚合实例并检查聚合是否有效
或者我应该在应用程序包内部以及聚合内部进行验证
答案 0 :(得分:3)
对于Aggregates,我不会将其称为验证但是执行不变,因为它们应该是always valid。您不仅可以修改聚合,然后通过外部验证器对其进行检查,聚合会强制执行自己的不变量。
一些规则显然是域不变量,因为您必须深入了解聚合数据以强制执行它们,并且一些规则肯定是应用规则(例如电子邮件确认==电子邮件)。但有时线条模糊不清。我肯定会在客户端和应用程序级别检查审核是否为空或空,同时我不会考虑Review
聚合确定如果它有空审查,所以我会做两件事。但这可能是依赖于域的和YMMV。
答案 1 :(得分:1)
完整性约束(或#34;不变量",如果您更喜欢该术语)应在(域/设计/数据)模型中定义。然后应多次检查它们: