我们有一个基于WCF RIA服务的项目。 想象一下,我们有一个传入多个参数的方法,并根据参数生成不同的项集,例如:
IQueryable<PresentationEntity> GetEntities(DateTime startDate, DateTime endDate, int maxCount)
{
...
}
问题是为此方法设置缓存以根据参数值缓存所有输出的最佳方法是什么?
答案 0 :(得分:0)
之前我通过简单地将所有参数连接在一起形成一个字符串来完成此操作,该字符串将用作缓存键。
需要注意的一些事项,请考虑:
对于您可以传入的任何对象,您将要覆盖ToString(),以便将对象唯一地表示为字符串。可能只是将属性连接在一起或使用类似Java的哈希代码属性。
订单可能会引入错误,因此请确保每次都以相同的顺序将它们连接在一起。
您可以探索一些允许您编写交叉代码的AOP框架。这只是意味着您不必在每个WCF调用的顶部使用大量的“if(!InCache(key)){...}”语句来丢弃代码。