Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DDD请求验证处理

DDD请求验证处理
EN

Software Engineering用户
提问于 2015-06-24 23:19:50
回答 2查看 1.2K关注 0票数 1

我困在一个我找不到解决办法的地方!这里有很多验证问题,但据我所见,大多数问题都是关于实体验证的。但是请求验证呢?

我正在为web应用程序开发一个服务。基本上我有三个模块,它们是Web、Domain。对Web项目的请求依赖于其他技术(JAX自动生成的类),它们不适合在域中使用。因此,我将它们转换为新的请求类,以使其更适合域服务。我还向新的请求类添加了默认值()和validate()方法。因此,请求验证的某些部分是在validate()方法中处理的。在域服务中,我在对应方法的第一行调用它们。因此,在开始操作之前,我知道请求是否有效。后来,我有了一些验证代码。在这一点上,我不太确定验证的哪一部分真正属于请求验证,哪一部分属于域服务作为业务逻辑。我相信每一段代码都属于它必须存在的地方!但有时很难做出决定:例如,在验证时需要使用存储库。让我举个例子来解释。

假设您需要实现一个可以从帐户中添加或删除客户的方法。除了null控件(验证-第1阶段)之外,您还可以检查客户是否有效。你需要储存库。然后,你检查任何一个帐户是否开立。你需要储存库。轰隆隆!然后检查请求中的客户是否已经被添加,或者尝试删除不属于帐户的客户,等等……您可能认为这些情况不是验证,而是业务逻辑。我认为他们是验证,因为首先,你检查客户和帐户,然后做其他事情。您认为如何使用验证方法中的存储库,您的验证优势是什么?你认为我提到的上述情况是有效的吗?提前谢谢。

EN

回答 2

Software Engineering用户

发布于 2016-01-15 23:34:23

验证规则是业务逻辑。

即使是一个简单的"NULL“检查也是一条业务规则--有人认为忽略”中间名称“是可以的,但是必须始终填写"County”。

大多数验证规则并不是那么简单,甚至可能需要获得外部服务,例如“信贷机构s**t名单上的那个家伙”。

因此,不要把验证作为单独的步骤,它们甚至不是“特殊”的业务规则,在任何处理外部输入的应用程序中,大多数业务规则都是某种验证。

话虽如此,验证分为两大类:-

“请求是否格式良好”--是数字、必须填写的字段等--这些检查可以预先完成(通常是在请求者web浏览器中),并且不需要访问任何外部数据。

“内容有效吗?”--这几乎总是需要访问其他数据。

真正的问题是将验证的子集“检查请求是否格式良好”与整个验证混淆。

票数 2
EN

Software Engineering用户

发布于 2016-01-15 22:21:02

首先,如果您有一个帐户聚合和一个客户聚合,以及通过添加一个客户来修改一个帐户的业务规则需要查看客户状态和帐户状态,那么您的业务规则或模型都是错误的。聚合边界包括强制执行业务不变所需的所有状态。

所有业务规则验证都属于拥有所检查状态的聚合中。

所有关于这个命令的参数的验证--这真的是一个客户吗,这个数字真的在1到100之间,等等--这个逻辑属于聚合之外。它是命令处理程序完成的命令验证的一部分(尽管具有相同的验证逻辑通常可用是有用的--客户端应该能够在将命令发送到命令处理程序以传递到聚合之前验证命令)。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/287798

复制
相关文章
Rails里实现Filter功能
Scenario <pre> As a reader When I click on category 'rails' Then I should see articles of that category </pre> If you want some practice, go for saas book's RottenPotatoes demo. You will get a better understanding of filter and session stuff in rails!
用户2183996
2018/06/28
3540
Rails 构建评论功能(2)
添加删除模型 rails 命令可以方便的添加删除模型 [root@h202 blog]# rails --help Usage: rails COMMAND [ARGS] The most common rails commands are: generate Generate new code (short-cut alias: "g") console Start the Rails console (short-cut alias: "c") server Start
franket
2021/10/20
3700
Rails 构建评论功能(5)
修改视图和控制器 [root@h202 blog]# vim app/views/articles/show.html.erb [root@h202 blog]# cat app/views/articles/show.html.erb <p> <strong>Title:</strong> <%= @article.title %> </p> <p> <strong>Text:</strong> <%= @article.text %> </p> <h2>Add a commen
franket
2021/10/20
3420
Rails 构建评论功能(3)
评论在创表的过程中已经构建了与article 的关联,但是article并没与评论关联
franket
2021/10/20
8280
Rails 构建评论功能(4)
生成控制器 [root@h202 blog]# rails generate controller Comments Running via Spring preloader in process 3855 create app/controllers/comments_controller.rb invoke erb create app/views/comments invoke test_unit create test/c
franket
2021/10/20
3460
Rails 构建评论功能(1)
Rails 的相关基础,详细可以参考 官方文档 和 Ruby China 的 Rails 入门
franket
2021/10/20
5770
Rails 构建评论功能(9)
如果一篇文章删除了,其中的评论也应该一并删除,可以使用 dependent 来实现需求
franket
2021/10/20
4420
Rails 构建评论功能(7)
再次访问,显示效果不变 再将评论的表单也抽出 [root@h202 blog]# vim app/views/comments/_form.html.erb [root@h202 blog]# cat app/views/comments/_form.html.erb <%= form_for([@article, @article.comments.build]) do |f| %> <p> <%= f.label :commenter %><br> <%= f.text_fiel
franket
2021/10/20
4340
Rails 构建评论功能(6)
如果程序中重复代码达到一定量级,会影响可读性和可维护性,这时我们可以将其中重复部分抽出来,单独成块
franket
2021/10/20
4750
Rails 构建评论功能(10)
安全 对文章的修改加入基础认证 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController ###basic auth http_basic_authenticate_with name: "soft", password
franket
2021/10/20
3930
Rails 构建评论功能(8)
再次刷新访问,显示效果不变 ---- 删除评论 在comment视图中添加一个删除链接 然后触发Comment 模型进行删除操作 [root@h202 blog]# vim app/views/comments/_comment.html.erb [root@h202 blog]# cat app/views/comments/_comment.html.erb <p> <strong>Commenter:</strong> <%= comment.commenter %>
franket
2021/10/20
4510
Rails 构建评论功能(11)
虽然这只是一个小小的demo,但不得不说,ruby on rails 的开发效率是很高效的,原因是大部分本来需要手动完成的事情,这个框架已经帮忙自动完成了,我们需要做的只剩下去填补最基本的对象定义,逻辑关系,展示方式
franket
2021/10/21
4920
GitLab 通过安全更新修复了帐户接管高危漏洞
据Bleeping Computer网站6月3日消息,GitLab 为其社区版和企业版产品的多个版本发布了关键安全更新,以解决8个漏洞问题,其中一个为账户接管的高危漏洞。 这个帐户接管漏洞被追踪为 CVE-2022-1680,评分高达 9.9,影响 GitLab 11.10 至 14.9.4、14.10 至 14.10.3 和 15.0版本。控制 GitLab 帐户会带来严重后果,黑客可以访问开发人员的项目并窃取源代码。 根据公司公告,在具有特定配置的实例上可以利用该漏洞,当组SAML SSO被配置时,S
FB客服
2023/03/30
4540
GitLab 通过安全更新修复了帐户接管高危漏洞
本地帐户和活动目录帐户
本地帐户Local Accounts存储在本地的服务器上。这些帐户可以在本地服务器上分配权限,但只能在该服务器上分配。默认的本地帐户是内置帐户(如administrator、guest等),在安装Windows时自动创建。Windows安装后,无法删除默认的本地帐户。此外,默认的本地帐户不提供对网络资源的访问。默认的本地帐户用于根据分配给该帐户的权限来管理对本地服务器资源的访问。默认的本地帐户和后期创建的本地帐户都位于“用户”文件夹中。
谢公子
2023/09/01
1.7K0
本地帐户和活动目录帐户
rails -help
rails new APP_PATH [选项] //APP_PATH项目名称
不知雨
2018/11/13
2.6K0
C - Rails
C - Rails C - Rails #include<cstdio> #include<stack> #include<cstring> using namespace std; int a[1010]; int main() { int n; while (~scanf("%d",&n) && n) { while (1) { stack<int> s; scanf("%d",&a[0]); if (!a[0]) { puts(""); brea
杨鹏伟
2020/09/11
6820
Rails资源
Rails Resources Here I list some rails resources I found very helpful. Quick Start Ruby on Rails Guides Rails Bridge Tutorials Point Book The Rails 4 Way, Best rails book. Ruby on Rails Tutorial API Ruby on Rails API Screencast Rails Casts, excellent rai
用户2183996
2018/06/28
8520
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.5K0
Ruby On Rails 4 hello world,Ruby On Rails上手
4399AT功能更新
由slide和orientation,click,origin 组成多场景测试要求;
厦门-安仔
2019/07/30
4380
Rails路由
在创建资源路由时,会同时创建多个可以在控制器中使用的辅助方法,如上面的资源路由会创建以下方法:
用户1515472
2019/07/24
4.5K0

相似问题

更改RMarkdown PDF代码块的背景色

13

如何在vscode中更改折叠块的背景色?

12

在RMarkdown中更改块背景颜色

55

在RMarkdown中更改块的表示(背景色和框架)(带光束-演示文稿)

13

如何在RMarkdown文档中更改整个背景色?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文