Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
我正在用C#构建DDD应用程序,我对应该在哪里清理用户输入内容有一些疑问。
我已经了解到,应该在域层验证业务规则,并在存储库层生成ID身份。
我应该在应用程序层上放置此用户输入清理程序吗?
(该应用程序是具有DDD体系结构模型的ASP.NET MVC)。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
我正在用C#构建DDD应用程序,我对应该在哪里清理用户输入内容有一些疑问。
我已经了解到,应该在域层验证业务规则,并在存储库层生成ID身份。
我应该在应用程序层上放置此用户输入清理程序吗?
(该应用程序是具有DDD体系结构模型的ASP.NET MVC)。
最佳答案
http://verraes.net/2015/02/form-command-model-validation/
命令是代表用户意图的消息。在提交表单之后和将命令传递到模型之前,将进行命令验证。这里要回答的问题是“这看起来像是有效的Foo命令吗?”,它可以确保“生日”字段包含实际日期,或者“邮政编码”看起来像邮政编码。它不能保证设置约束,例如用户名唯一性。换句话说,您验证消息,而不是是否应执行消息。
命令对象应使用值对象。它们保证了自己的一致性,因此Command将验证委托给他们。请注意,我们并不是要通知用户验证错误。我们只是抛出异常。这里的假设是表格要么防止格式错误的值,要么用户试图绕过表格验证。我们不会向攻击者返回友好的错误消息。
典型的流程可能是:获取用户输入(仅是数据),然后使用工厂或构建器来创建模型将识别的值对象。
关于c# - C#(或任何语言)DDD-在哪里清理用户输入数据? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42280788/