首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >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

复制
相关文章
TCP/IP, WebSocket 和 MQTT
按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议。在这三者之间, TCP是HTTP和MQTT底层的协议。大家对HTTP很熟悉,这里简要介绍下MQTT。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器的通信协议。 HTTP的不足 HTTP协议经过多年的使用,发现了一些不
张善友
2018/01/19
5.4K0
TCP/IP,  WebSocket  和 MQTT
Wireshark抓取Websocket的mqtt报文
本文档记录,如何使用Wireshark抓包工具,抓取基于Websocket的MQTT报文。
yield9tk
2022/03/05
3.1K0
13-Websocket协议与MQ协议
Websocket和HTTP都是基于TCP协议的,所以使用抓包工具可以抓到websocket的数据
zx钟
2021/04/29
1.5K0
13-Websocket协议与MQ协议
基于ActiveMQ的请求-应答模式
基于ActiveMQ的请求-应答模式,相当于通过消息队列,请求端注册了一个异步回调,在发送消息时指定回调消息的目的地和关联的id,这样应答端在收到请求消息时,可以在处理后,将处理结果的应答消息发送到回调的目的地中。
张申傲
2020/09/03
5950
MQTT X Newsletter 2022-06 | v1.8.0 发布,新增 MQTT CLI 和 MQTT WebSocket 工具
在过去的一月中,MQTT X 发布了最新的 1.8.0 版本(下载地址:https://github.com/emqx/MQTTX/releases/tag/v1.8.0 ),优化部分使用体验和改进各项问题的同时,新增了 CLI 和 Web 端的 MQTT 客户端工具,支持在终端命令行或桌面浏览器上快速完成对 MQTT 的连接测试。
EMQ映云科技
2022/07/07
1K0
基于zookeeper+leveldb的activemq集群
1.为什么选择zookeepr+leveldb,构建activemq主从集群 官网关于主从集群的描述的原文地址为:http://activemq.apache.org/masterslave.html。下面是我的翻译. activemq有3中主从配置方式 主从类型 必备条件 优点 缺点 Shared File System Master Slave(共享文件系统) 需要一个共享文件系统 例如:SAN 可按需运行多个从节点,并能从故障中自动恢复 需要一个SAN JDBC Master Slave 需要个共享的
温安适
2018/05/17
1.7K1
基于WebSocket的client封装
最近已经陷于了Socket测试的泥潭中了,之前用Java写了一个Client封装类,本想在经历过本轮测试之后,写一些文档在发出来,没想到测试对象用的是Socket.IO,所以先把一个写好的WebSocket的Client的类发出来,分享一下。后台回复Git可以查看仓库地址,方便及时了解代码更新情况。
FunTester
2020/12/01
6190
Lua编写wireshark插件初探——解析Websocket上的MQTT协议
一、背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQTT语义,只能解析到WebSocket层,如图所示。虽然在Data域中显示了去掉mask的WebSocket数据,但分析起来mqtt仍然很难受。所以打算写一个插件,利用wireshark自带的MQTT解析功能来分析Data部分的数据,而不是自己从头写一个完全新的解析器。注:很多教程是教如何添加一个新的协议,如设
ascii0x03
2018/04/12
3.8K0
Lua编写wireshark插件初探——解析Websocket上的MQTT协议
ActiveMQ笔记(2):基于ZooKeeper的HA方案
activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。 下面演示了如何在本机搭建基于zookeeper的activemq集群: 一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml 1 <broker xmlns="http://activemq.apache.org/schema/cor
菩提树下的杨过
2018/01/18
6140
ActiveMQ笔记(2):基于ZooKeeper的HA方案
activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。 下面演示了如何在本机搭建基于zookeeper的activemq集群: 一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml 1 <broker xmlns="http://activemq.apache.org/schema/cor
菩提树下的杨过
2018/01/18
7220
基于Go的websocket消息服务
  3个月没写PHP了,这是我的第一个中小型go的websocket微服务。那么问题来了,github上那么多轮子,我为什么要自己造轮子呢?
sunsky
2020/08/20
7190
基于Go的websocket消息服务
php基于websocket的那些事儿
本文实例讲述了php基于websocket搭建简易聊天室实践。分享给大家供大家参考。具体如下:
php007
2019/08/05
8710
php基于websocket的那些事儿
基于MQTT的实时日志系统
MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。
IMWeb前端团队
2019/12/04
2.9K0
基于MQTT的实时日志系统
IMWeb前端团队
2017/12/29
2.7K0
基于MQTT的实时日志系统
使用 WebSocket 客户端连接 MQTT 服务器
近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端或通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 得到了广泛的应用。
杨奉武
2018/12/28
16.6K0
【玩转ESP32】13、esp32 mqtt基础
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
ManInRoad
2021/07/23
1.4K0
【玩转ESP32】13、esp32 mqtt基础
EMQX vs Mosquitto | 2023 MQTT Broker 对比
物联网开发者需要为自己的物联网项目选择合适的 MQTT 消息产品或服务,从而构建可靠高效的基础数据层,保障上层物联网业务。目前市面上有很多开源的 MQTT 产品,在性能功能等方面各有优点。本文将选取目前最为流行的两个开源 MQTT Broker:EMQX 和 Mosquitto,从技术架构、性能、功能、社区情况等多维度进行 1v1 对比,帮助读者更加深入了解这两个产品。
EMQ映云科技
2023/04/21
2.8K0
Mosquitto vs NanoMQ | 2023 MQTT Broker 对比
Mosquitto 和 NanoMQ 都是用 C/C++ 开发的快速轻量的开源 MQTT Broker,完全支持 MQTT 3.1.1 和 5.0。
EMQ映云科技
2023/04/23
1.2K0
mqtt 客户端 基于Python
这几天一直在搞安全通信,微信小程序,反向代理等等,为了能让自己对整个系统做到把控,主要是需要了解每一个细节的地方,所以今天花了3个小时的时间学习了Python,因为我要用它来做Http和WebSocket ,其实还有就是群里的 "卡狼"一直在说用Python开发8266更方便快捷.
杨奉武
2018/12/28
1.9K0
点击加载更多

相似问题

Joda-Time返回错误的日期

10

Joda Time :日期转换错误

11

Joda-Time :日期计算

12

Joda time plusDays出错日期

215

Joda time Instant到Java time Instant的转换

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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