我正在开发一个网络应用程序,我们正在实现DDD概念,并且我们已将网站构建为N层应用程序,具有以下层(API、服务层) ,业务层,数据访问层)。
我们确实验证了我们的域模型,以确保我们的模型和聚合的一致性和完整性,但我有一些疑问是否应该在 Api 模型上添加验证(使用数据注释,因为我们正在使用 asp.net和网络 API)。
我的问题有点奇怪,但我们应该在 Api 级别进行验证吗?否则它会被视为重复,并且可能会导致验证与在域级别执行的验证有所不同?
最佳答案
验证有很多种类型,一些验证应该在某些层中完成,而其他验证应该在其他层中完成。所以:
我将核心业务规则保留在域
层的聚合
中。例如帐户余额不能为负
。
诸如电子邮件地址必须有效
之类的低级规则保留在命令的
构造函数内,也在域层
内,因为命令
是Domain
层的一部分。
授权检查,例如所有者
可以删除
自己的事件
或管理员
可以删除
任何事件
都在应用程序
层完成。
注意:这适用于以下架构:表示(如 REST 端点、MVC)、应用程序、域和基础设施。
关于asp.net - 领域驱动设计中的验证级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498922/