相关疑难解决方法(0)

我应该从Domain层抽象验证框架吗?

我正在使用FluentValidation来验证我的服务操作.我的代码看起来像:

using FluentValidation;

IUserService
{
    void Add(User user);
}

UserService : IUserService
{
    public void Add(User user)
    {
       new UserValidator().ValidateAndThrow(user);
       userRepository.Save(user);
    }
} 
Run Code Online (Sandbox Code Playgroud)

UserValidator实现FluentValidation.AbstractValidator.

DDD表示域层必须与技术无关.

我正在做的是使用验证框架而不是自定义异常.

将验证框架放在域层中是一个坏主意吗?

c# architecture domain-driven-design repository fluentvalidation

19
推荐指数
1
解决办法
3872
查看次数

Web应用程序的表单验证 - 设计将域错误传播到客户端?

数据验证应在Web应用程序的以下位置进行:

  • 客户端:浏览器.加快用户错误报告
  • 服务器端:控制器.检查用户输入是否在语法上有效(没有sql注入,例如,所有传入字段的有效格式,所有必填字段都填写等)
  • 服务器端:模型(域层).检查用户输入是否在域中有效(没有重复的用户名,帐户余额不是负数等)

我目前是DDD粉丝,所以我在我的应用程序中分离了UI和Domain层.

我也试图遵循这个规则,域模型永远不应该包含无效数据.

那么,如何在应用程序中设计验证机制,以便在域中发生的验证错误正确传播到客户端?例如,当域模型引发有关重复用户名的异常时,如何将该异常正确绑定到提交的表单?

一些启发了这个问题的文章可以在这里找到:http://verraes.net/2015/02/form-command-model-validation/

我在Web框架中看不到这样的机制.首先想到的是让域模型包含字段的名称,导致异常,在异常数据中,然后在UI层中提供表单数据字段和模型数据字段之间的映射,以在其上下文中正确显示错误对于用户.这种方法有效吗?它看起来很不稳定......有一些更好的设计的例子吗?

architecture validation domain-driven-design

10
推荐指数
1
解决办法
433
查看次数