首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何证明DDD中聚合的一致性(技术上)?

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

Stack Overflow用户
提问于 2017-09-26 02:14:07
回答 1查看 568关注 0票数 4

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

我过去在一个web应用程序上工作(没有DDD),我们试图使用Transactions.So来确保数据的一致性,我们使用了可序列化的事务级别,这对我们的团队来说是一场噩梦,因为我们的应用程序的性能太差了,我们的用户报告了很多死锁问题。

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

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

我的第一个问题是,如何结合Sql Server使用C#和实体框架来实现乐观并发,包括从头到尾的整个过程,以及如果我们采用Eric Evans在他的书中给出的订单和行项目示例,那么应该将列/标志存储在哪里?

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

我将感谢任何代码片段或参考。

EN

回答 1

Stack Overflow用户

发布于 2017-09-26 10:17:20

我的第一个问题是,如何结合使用C#和实体框架以及Sql Server来实现乐观并发,包括从头到尾的整个过程,以及如果我们采用Eric Evans在他的书中给出的订单和行项目的例子,那么在哪里存储列/标志?

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

如果您使用多个表(例如,一个表用于订单,一个表用于行项目),那么我看不出您如何能够可靠地使用乐观锁定来确保原子性。在这种情况下,您需要事务。

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

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

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

https://stackoverflow.com/questions/46411649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档