域驱动设计 – DDD和实现持久性

前端之家收集整理的这篇文章主要介绍了域驱动设计 – DDD和实现持久性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我第一次使用DDD(.Net)使我的脚变湿了,因为我重新构建了一个遗留企业应用程序的一些核心组件.

我想清除的是,我们如何在适当的DDD架构中实现持久性?

我意识到领域本身是持之以恒的,应该使用“普遍存在的语言”进行设计,当然不会被迫进入本月的DAC的限制甚至物理数据库.

我正确的是,Repository Interfaces存在于Domain程序集中,但是Persistentory Implementation是否存在于持久层中?持久层包含对域层的引用,反之亦然?

我的实际存储库方法(CRUD)在哪里被调用

Am I correct that the Repository Interfaces live within the Domain
assembly,but the Repository Implementations exist within the
persistence layer? The persistence layer contains a reference to the
Domain layer,never vice versa?

是的,这是一个很好的方法.

Where are my actual repository methods (CRUD) being called from?

考虑到CRUD这个术语可能是一个好主意,因为它是以数据为中心的,可能会引导你进入Generic Repository Trap. Repository有助于管理domain objects的中期和末期.Factories通常负责开始.请记住,当对象从数据库恢复时,它处于DDD视角的中间阶段.代码如下所示:

// beginning 
Customer preferredCustomer = CustomerFactory.CreatePreferred();
customersRepository.Add(preferredCustomer);

// middle life
IList<Customer> valuedCustomers = customersRepository.FindPrefered();

// end life
customersRepository.Archive(customer);

您可以直接从您的应用程序调用代码.它可能值得下载并查看Evan的DDD Sample. Unit of Work模式通常用于处理交易和抽象您的ORM的选择.

猜你在找的设计模式相关文章