gpt4 book ai didi

transactions - 在域驱动设计中,您通常会在哪里实现事务逻辑?

转载 作者:行者123 更新时间:2023-12-02 00:43:19 25 4
gpt4 key购买 nike

  • 在消费者代码中? (像一个 Controller )
  • 在存储库中?
  • 服务业?

最佳答案

对于初学者来说,这是一个颇具争议的问题,因此您一定会得到许多不同的答案。

我自己的看法是,(ACID) 事务是某些存储机制(尤其是关系数据库)的一个特征,因此我认为这个概念是特定于技术的。在有人抗议这只是一个理论论点之前,请考虑有几种可能的数据存储(存储库)不是事务性的情况:

  • 出于性能原因,许多大型企业(例如 Amazon)不使用事务。相反,他们拥有一个能够处理故障的架构
  • 基于 REST 的数据服务
  • 测试替身

由于域模型应该与特定的实现分离,我认为它们对事务一无所知是合乎逻辑的。然而,这也意味着存储库必须公开正确粒度的操作,以便它们自己可以根据需要管理事务,并且保证操作完全成功或失败。

换句话说,存储库应该管理事务(如果适用)。


然而,在某些情况下,这可能需要存储库拥有太多领域知识,因此 Unit of Work设计模式为您真正需要一个(潜在的)事务来跨越多个不同存储库上的多个操作的情况提供了一个很好的抽象。

关于transactions - 在域驱动设计中,您通常会在哪里实现事务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1841914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com