命令生成器与事件物化器:实现高效数据处理与视图维护
1. 命令生成器相关内容
1.1 命令及所需数据
在进行数据变更时,突变(mutation)的输入可能并不包含构建命令所需的全部信息。由于命令处理器的突变函数需要是纯函数,因此在创建命令并提交处理之前,需要进行额外的处理。
在提交命令之前的工作应该是可安全重试的。若网络中断,客户端可能会重新提交突变,这会导致命令创建过程中的工作重新执行。这一阶段可视为对接收的数据进行丰富,以满足第一类业务规则,即针对静态数据的规则。任何业务规则的副作用都应在命令成功处理后发生。
以下是两个具体的例子:
- 处理表格数据 :对于接受表格数据的突变,一种方法是使用输入对象数组将数据拆分为行和列。但如果数据是用户在电子表格中创建的,让用户将电子表格上传到系统并提取表格数据可能更合理,这种提取就是命令生成的一部分。
- 文件上传 :当文件内容对系统无关紧要时,命令生成器可以接收文件并将其内容存储到对象存储(如 Amazon 的 S3)中,命令仅包含对对象存储的引用。
1.2 处理失败情况
命令生成和提交可能会以多种方式失败,主要包括以下几种:
- 输入验证失败 :对于 GraphQL 模式中无法表达的约束,输入验证可能失败。
- 命令日志写入失败 :如果命令日志无法接受写入,将新命令追加到命令日志可能会失败,此时应将系统不可用的信息传达给客户端,以便客户端重试请求。
-
超级会员免费看
订阅专栏 解锁全文
634

被折叠的 条评论
为什么被折叠?



