领域驱动设计:处理原子操作和交易(Domain driven design: Handling at

2019-07-30 15:11发布

每个团粒内部的一致性必须得到保证。 这是很容易做到这一点的储存库,因为我总是可以使用数据库或框架的交易。 我对仓库外面发生了什么怀疑。 服务可能需要一个以上的总的工作处理请求。 有可能是在服务处理过程中的问题或当聚集体依然存在。

如果事情在业务处理过程中出了问题,我可以抛出一个异常。 这样的操作将是原子。 这是我的第一个问题。 那是一个好的做法呢? 我看到的问题是,这将是很难从恢复。 将有没有简单的方法来让所有与他们失败的操作前的状态的集合体。

另一个问题我有是,如果聚集的一个不被持久化会发生什么。 如何保证信息的一致性? 我一定要使用该储存库外部的数据库事务? 我在想,它可能不是最好的解决办法,因为我不应该在数据库里想,如果我设计的域模型。

Answer 1:

这个问题的解决是在工作模式的单位提供- http://martinfowler.com/eaaCatalog/unitOfWork.html

只要你想,你可以封装尽可能多的聚合根操作成一个单一的UOW。 然后工作具体实施的单元可以包含其自身的提交和回滚逻辑,具体涉及到的持续性方法和技术。 例如,你处理TransactionScope对象( http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx )如果你在.NET工作。

下面是关于如何实现基本UOW模式像样的文章- http://msdn.microsoft.com/en-us/magazine/dd882510.aspx



文章来源: Domain driven design: Handling atomic operations and transactions