WisDom.Net 框架设计(三)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WisDom.Net 框架设计(三)

WisDom.Net 框架设计(三)

 2014/4/23 21:37:09  Wang.Crystal  博客园  我要评论(0)
  • 摘要:WisDom.Net--数据缓存1.几种缓存方式1.静态全局变量C#静态变量使用static修饰符进行声明,在类被实例化时创建,通过类进行访问不带有static修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。2.System.Runtime.Caching中缓存类库这个是.Net4.0新出的一个命名空间
  • 标签:.net net 设计

WisDom.Net  --数据缓存

1.几种缓存方式

      1.静态全局变量

         C#静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。

      2.System.Runtime.Caching 中缓存类库

        这个是.Net 4.0新出的一个命名空间,提供缓存对所有 .NET framework 应用程序 (而不仅仅是 ASP.NET) 进行访问,高速缓存是可扩展的。您   可以创建自定义高速缓存提供程序class="sentence" data-guid="f32c4a0be96a99f942c0a847bbca741b" data-source="For example, instead of using the default in-memory cache engine, you can create custom providers that store cache data in databases, in custom objects, or in the file system.">例如,您可以不使用默认的内存高速缓存引擎,而是创建自定义提供程序,在数据库、自定义对象或文件系统中存储高速缓存数据。具体参见MSDN.这里不展开讲

      3.页面缓存,(显然这里不合适)

2.WisDom.net.DataCahce 设计构想

     

 

1.我们设计数据缓存基类如下。这里使用模板模式(附上基类的代码希望大家指正)

 

 public abstract class DataCacheCoomon<T>
    {
        protected  List<T> DataCacheDict = null;
        private static object _obj = new object();

        public  DataCacheCoomon()
        {
            if (DataCacheDict==null||DataCacheDict.Count == 0)
            {
                lock (_obj)
                {
                    if (DataCacheDict == null || DataCacheDict.Count == 0)
                    {
                        DataCacheDict = new List<T>();
                        GetDataFromDb();
                    }
                }
            }
        }

        protected abstract void GetDataFromDb();


        /// <summary>
        /// 增加数据缓存
        /// </summary>
        /// <param name="dataItem"></param>
        public void AddDataCache(List<T> dataItem)
        {
            foreach (T data in dataItem)
            {
                DataCacheDict.Add(data);
            }
        }

        /// <summary>
        /// 删除数据缓存
        /// </summary>
        /// <param name="dataItem"></param>
        public void DelDataCache(List<T> dataItem)
        {
            foreach (T data in dataItem)
            {
                DataCacheDict.Remove(data);
            }
        }

        /// <summary>
        /// 获取字典缓存
        /// </summary>
        /// <returns></returns>
        public List<T> GetDataCacheDict()
        {
            return DataCacheDict;
        }

        
    }

 

 

 2.在具体某个缓存项目时都需要继承上面的基类

 3. 使用并行方式将数据加到MemoryCache  中 示例如下(一个简单的例子给大家参考,)从缓存中获取

   

     ObjectCache objectCache = MemoryCache.Default;//




            Parallel.Invoke(() =>
            {
                CacheItem Iten = new CacheItem("aaa", 1);
                objectCache.Add(Iten, new CacheItemPolicy());
            },
                  () =>
                  {
                      CacheItem Iten = new CacheItem("Bbb", 1);
                      objectCache.Add(Iten, new CacheItemPolicy());
                  });

 

 

 

 

    

 

   

 

 

 

 

 

 

发表评论
用户名: 匿名