c# – 如何证明DDD中聚合的一致性(技术上)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何证明DDD中聚合的一致性(技术上)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1539字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何证明DDD中聚合的一致性(技术上)?](/upload/InfoBanner/zyjiaocheng/768/0053d526fa3a43a5b355a0e4b7f9910a.jpg)
在使用DDD开发Web应用程序时,确保聚合的一致性非常重要.
我过去曾在一个Web应用程序(没有DDD)上工作,我们尝试使用Transactions确保数据的一致性.所以,我们使用了Serializable事务级别,这对我们的团队来说是一场噩梦,因为我们的应用程序的性能太差了我们的用户已经报告了很多死锁问题.
现在我正在开发一个实现DDD原则的Web应用程序,我需要确保聚合的一致性.
我在这里已经读过http://geekswithblogs.net/Optikal/archive/2013/04/07/152643.aspx,乐观并发/锁定是实现该方法的一种方法,它将一个版本或时间戳分配给我们的聚合来检查它.
我的第一个问题是如何使用C#和实体框架结合Sql Server实现乐观并发,包括从开始到结束的整个过程,以及存储该列/标志的位置,如果我们接受Eric Evans给出的顺序和行项目示例它在他的书中?
我的第二个问题是,在竞争条件下,用于确保总体一致性的常用策略是什么?
我将不胜感激任何代码段或引用.
解决方法:
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?
如果使用单个表来存储整个Aggregate,则可以使用乐观锁定.例如,您可以使用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.如果您将Aggregate设计为无副作用(至少不进行任何IO调用),那么这应该不是问题.
内容总结
以上是互联网集市为您收集整理的c# – 如何证明DDD中聚合的一致性(技术上)?全部内容,希望文章能够帮你解决c# – 如何证明DDD中聚合的一致性(技术上)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。