gpt4 book ai didi

c# - 如何证明 DDD 中聚合的一致性(技术上)?

转载 作者:行者123 更新时间:2023-11-30 12:55:44 28 4
gpt4 key购买 nike

在使用 DDD 开发 Web 应用程序时,确保聚合的一致性非常重要。

我过去在一个 Web 应用程序(无 DDD)上工作,我们试图使用事务来确保数据的一致性。因此,我们使用了可序列化的事务级别,这对我们的团队来说是一场噩梦,因为我们的应用程序的性能非常糟糕,我们的用户报告了很多死锁问题。

现在我正在开发一个实现 DDD 原则的 Web 应用程序,我需要确保聚合的一致性。

我在这里读过http://geekswithblogs.net/Optikal/archive/2013/04/07/152643.aspx乐观并发/锁定是实现向我们的聚合分配版本或时间戳以对其进行检查的方法之一。

我的第一个问题是如何使用 C# 和 Entity Framework 结合 Sql Server 实现乐观并发,包括从开始到结束的整个过程,以及如果我们以订单和订单项为例,该列/标志存储在哪里埃里克埃文斯在他的书中给出了它?

我的第二个问题是,在竞争条件的情况下,用于确保聚合一致性的常用策略是什么?

如果有任何代码片段或引用资料,我将不胜感激。

最佳答案

My first question is how to achieve optimistic concurrency using C# and entity framework in conjunction with Sql Server including the whole process from the beginning to the end, and where to store that column/flag if we take order and line items example which Eric Evans gave it in his book?

如果您使用单个表来存储整个聚合,那么您可以使用乐观锁定。例如,您可以使用 JSON column to store行项目。对于这种情况,基于文档的 NoSQL 数据库非常适合。

如果您使用多个表(即一个表用于订单,一个表用于行项目)那么我不明白您如何可靠地使用乐观锁定来确保原子性。在这种情况下,您需要交易。

My second question is what are the common strategies used to ensure aggregates consistency in case of race conditions?

你只是retry the command .如果您将聚合设计为无副作用(至少不进行任何 IO 调用),那么这应该不是问题。

关于c# - 如何证明 DDD 中聚合的一致性(技术上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411649/

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