域对象更改 - 刷新所需的缓存列表

boj*_*boj 5 c# business-objects

问题

我们有一个复杂的领域模型.为避免性能问题,大多数列表(从域对象生成)都被缓存.在第一个域对象发生变化之前,一切正常.必须刷新缓存中的所有依赖列表 - 问题是:如何?

  • 域对象:House
  • 行动:房屋名称已更改
  • 效果:所有列表(包含房屋名称)都已过时,需要刷新

解决方案

毫无疑问,有一种非常简单的方法:保存域对象后,我们手动刷新代码中的所有列表.

伪代码

repository.Save(save);

cacheManager.Invalidate("HouseList");
cacheManager.Invalidate("OrderedHouseList");
cacheManager.Invalidate("HousecombinedWithResidentsList");
...
Run Code Online (Sandbox Code Playgroud)

所以问题是:我们必须手动刷新所有内容.我正在寻找更好的解决方案,让我们说:

  • 面向方面的方式w/PostSharp或Windsor
  • 观察者或基于事件的技术
  • CQRS是关于分离查询和命令,但这个概念可能太多了.

任何想法或经验?

Jud*_*ngo 1

这个问题的答案很复杂,因为您的要求不明确。数据会陈旧吗?如果是这样,需要多长时间?

根据您帖子中的有限信息,我建议“缓存”视图只是对真实数据的查询。查询本身可以在一定的时间间隔内定期刷新其缓存的结果。