DDD:缓存从服务器接收的聚合对象

时间:2012-10-31 10:24:58

标签: oop design-patterns architecture domain-driven-design

假设我的存储库(ContactsRepository)的方法类似于getAllContacts(userId)(ContactsRepository)从服务器获取所有数据。首次调用getAllContacts(userId)方法后,我想缓存此数据。我的问题是我应该在同一个(ContactsRepository)中实现缓存机制,当我再次调用getAllContacts(userId)方法时,存储库返回我的缓存数据,或者我需要将数据放到另一个地方(可能是存储库)。 / p>

2 个答案:

答案 0 :(得分:3)

您可以使用Repository从缓存或数据库中获取数据。如果你的Repository类有更新方法,你也可以有效地使缓存项无效。

因此,您可以在存储库中封装对缓存的访问: http://martinfowler.com/eaaCatalog/repository.html

为Repository实现缓存的另一个例子: http://ardalis.com/building-a-cachedrepository-via-strategy-pattern

答案 1 :(得分:1)

您可以缓存它,但如果您使用多个存储库执行域逻辑,请不要忘记cache coherency,例如在多台机器上。