缓存从WebService MVC返回的数据

时间:2012-04-07 14:39:30

标签: c# web-services model-view-controller caching

我从web服务中提取数据,一般在我将数据拉入后,数据不会改变。该数据将在不同的模型对象中引用。我想知道在MVC中缓存它的最佳方法是什么。我在思考模型类中的静态字典,它将使用这些数据,但多个线程可以读取和写入它。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为你的想法非常好(无论如何,这是我迄今为止所做的) 唯一的问题是你需要避免并发访问你的字典,所以只需将其设为私有,并使访问器方法使用锁读取和写入(用你自己的类型替换K和V):

public class CacheClass {
    private static object DictLock = new Object();
    private static Dictionary<K, V> CachedData;

    public static V ReadDictionary(K key) {
         V temp;
         lock (DictLock) {
              temp = CachedData[key];
         }

         return temp;
    }
    public static void SetDictionaryValue(K key, V value) {
         lock (DictLock) {
             CachedData.Add(key, value);
         }
    }
}  

其他替代方法涉及使用ConcurrentDictionary(.NET 4或更高版本) 这显然不涉及缓存老化。但在我看来,你自己就是在控制它。