0

我们有一个基于 WCF RIA 服务的项目。想象一下,我们有一个传入多个参数的方法,并根据参数生成不同的项目集,例如:

 IQueryable<PresentationEntity> GetEntities(DateTime startDate, DateTime endDate, int maxCount)
{
...
}

问题是为该方法设置缓存以根据参数值缓存所有输出的最佳方法是什么?

4

1 回答 1

0

我之前通过简单地将所有参数连接在一起形成一个字符串来完成此操作,该字符串将用作您的缓存键。

需要注意的一些事项,请考虑:

  1. 对于您可能传入的任何对象,您都需要覆盖 ToString() 以便将对象唯一地表示为字符串。可能只是将属性连接在一起或使用类似 Java 的哈希码属性。

  2. 顺序可能会引入错误,因此请确保每次都以相同的顺序将它们连接在一起。

  3. 您可以探索一些允许您编写横切代码的 AOP 框架。这只是意味着您不必在每个 WCF 调用的顶部使用大量“if (!InCache(key)) { ... }”语句来乱扔代码。

于 2013-04-05T17:19:38.433 回答