asp.net - 领域驱动设计中的验证级别

标签 asp.net validation asp.net-web-api domain-driven-design

我正在开发一个网络应用程序,我们正在实现DDD概念,并且我们已将网站构建为N层应用程序,具有以下层(API、服务层) ,业务层,数据访问层)。

我们确实验证了我们的域模型,以确保我们的模型和聚合的一致性和完整性,但我有一些疑问是否应该在 Api 模型上添加验证(使用数据注释,因为我们正在使用 asp.net网络 API)。

我的问题有点奇怪,但我们应该在 Api 级别进行验证吗?否则它会被视为重复,并且可能会导致验证与在域级别执行的验证有所不同?

最佳答案

验证有很多种类型,一些验证应该在某些层中完成,而其他验证应该在其他层中完成。所以:

我将核心业务规则保留在层的聚合中。例如帐户余额不能为负

诸如电子邮件地址必须有效之类的低级规则保留在命令的构造函数内,也在域层内,因为命令Domain层的一部分。

授权检查,例如所有者可以删除自己的事件管理员可以删除 任何事件都在应用程序层完成。

注意:这适用于以下架构:表示(如 REST 端点、MVC)、应用程序、域和基础设施。

关于asp.net - 领域驱动设计中的验证级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498922/

相关文章:

spring - hibernate JavassistLazyInitializer : problems with validation

validation - DAO 是否应该验证输入

asp.net-web-api - .NET Core json 动态属性序列化 (ExpandoObject)

c# - 是否可以在 Web api 路由中使用 .json?

c# - Blazor 页面中的 CancellationToken?

c# - Pinterest 嵌入按钮

c# - REDIRECT URIS OAuth 2.0 是否有命名标准?

php - 我们能否确定请求是否是从另一个域发送的?

validation - 如何验证 MongoDB 集合中的 DBRefs?

c# - 如何从 C# Web API REST 服务器缓存缓慢的资源初始化?