2010-01-05 70 views
2

我想在Web应用程序中实现缓存。高速缓存将在BLL中完成。C#缓存使用缓存依赖

的BLL方法signiture是

public static List<Ailias> Select(List<Filter> filters) 

,并在时刻简单地调用在DAL的相应的方法。

我遇到的问题是我的缓存依赖项将成为过滤器对象,只要过滤器对象不同,就应该创建新的DAL调用。

如何添加这种依赖关系,我可以在文档中找到的依赖关系是文件?

回答

0

还有就是,据我所知2个CacheDependancies预先定义的(文件和SQL),但是没有什么可以阻止你实现自己的CacheDependancy描述in this link

0

缓存依赖只是卸载从缓存项的后台方法。这意味着将缓存管理逻辑放在另一个系统/进程中。它可以工作,但它也可能引入比必要的更多的复杂性。

“...只要过滤器对象不同...”

不同于什么?之前在该方法中使用的任何东西都会调听起来就像你的List集合是你的缓存键。

考虑在List集合上实现一个唯一的哈希键,并在缓存中维护两个项目 - 静态名称(如“list-alias-filter-key”和List集合中的缓存项)。

当您对该方法进行后续调用时,请将List unique hash key(缓存键)与“list-alias-filter-key”中的键进行比较。如果它们相同,则知道可以安全地为List缓存值。如果它们不同,请使用新的List集合重新查询并重置缓存中的两个值。