WisDom.Net  --数据缓存

1.几种缓存方式

      1.静态全局变量

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

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

这个是.Net 4.0新出的一个命名空间,提供缓存对所有 .NET framework 应用程序 (而不仅仅是 ASP.NET) 进行访问,高速缓存是可扩展的。您   可以创建自定义高速缓存提供程序。例如,您可以不使用默认的内存高速缓存引擎,而是创建自定义提供程序,在数据库、自定义对象或文件系统中存储高速缓存数据。具体参见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 == )
{
lock (_obj)
{
if (DataCacheDict == null || DataCacheDict.Count == )
{
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", );
objectCache.Add(Iten, new CacheItemPolicy());
},
() =>
{
CacheItem Iten = new CacheItem("Bbb", );
objectCache.Add(Iten, new CacheItemPolicy());
});

WisDom.Net 框架设计(三) 数据缓存的更多相关文章

  1. 游戏UI框架设计(三) : 窗体的层级管理

    游戏UI框架设计(三) ---窗体的层级管理 UI框架中UI窗体的"层级管理",最核心的问题是如何进行窗体的显示管理.窗体(预设)的显示我们前面定义了三种类型: 普通.隐藏其他.反 ...

  2. JavaScript框架设计(三) push兼容性和选择器上下文

    JavaScript框架设计(三) push兼容性和选择器上下文 博主很久没有更博了. 在上一篇 JavaScript框架设计(二) 中实现了最基本的选择器,getId,getTag和getClass ...

  3. WisDom.Net 框架设计(二) 服务总线

    WisDom.Net 框架设计--服务总线 1.Soa 简介     soa 就是面向服务的体系结构 是一个组件模型,不同的组件之间通过定义良好的接口联系起来.就像盖房子一块砖头一块砖头的砌墙,一片一 ...

  4. WisDom.Net 框架设计(五) 权限设计

    WisDom.Net --权限设计 1.需求分析     基本在所有的管理系统中都离不开权限管理.可以这么说,权限管理是管理系统的核心所在. 权限管理说白一些就是每个人能够做什么,不能够做什么.可以说 ...

  5. WisDom.Net 框架设计(一) 总体框架

    WisDom.Net总体框架 1.目标 WisDom.Net  做为以后快速开发相关的软件的基础框架,实现用户,权限,角色,菜单,和工作流的管理功能.相关功能可以独立使用,快速用于其他程序的开发.预计 ...

  6. WisDom.Net 框架设计(七) 验证框架

    WisDom.Net-验证框架 1.分类 这里我们将数据验证分为以下几种 数据类型校验      主要用于确保数据类型输入的正确  比如年龄一项输入 A岁 ,显然不合法 域检查             ...

  7. WisDom.Net 框架设计(八) 持久层

    WisDom.Net ---持久层  1.什么是持久层        持久层负责最基础的功能支撑,为项目提供一个高层,统一,和并发的数据持久机制,提供了比如建立数据库连接,关闭数据库连接,执行sql语 ...

  8. WisDom.Net 框架设计(四) 用户安全

    WisDom.Net  ----用户安全 1.用户单机登录 正如其名这里要求其实就是显示用户只能在一台电脑上登录.防止多处登录,这里简单的说一下实现原理,我们在这里使用session +cookie ...

  9. WisDom.Net 框架设计(六) license

    WisDom.Net-license 1.为啥要用license    license (许可证) 顾名思义就是说我的软件只能给在指定的机器上使用.毕竟很多项目都不是免费的,(说句题外话,其实我用的也 ...

随机推荐

  1. BZOJ 3969 low power

    Description 有\(n\)个机器,每个机器有\(2\)个芯片,每个芯片可以放\(k\)个电池.每个芯片能量是\(k\)个电池的能量的最小值.两个芯片的能量之差越小,这个机器就工作的越好.现在 ...

  2. Tomcat 架构 (一)

    在实践过程中,从WebSphere中实现一个EJB的容器以及从WebLogic中实现一个JMS几乎都是不可能的,然而来自Apache基金会的servlet容器Tomcat至少在理论上是可能做到的. 请 ...

  3. 开启Eclipse 智能感知代码功能

    1.打开windows->Perferences..窗口,选择java->Editor->Content Assist,在右下方的“Auto Activation triggers  ...

  4. SecureCRT 颜色

    默认的情况下,SecureCRT 是没有颜色方案的. 也就是说:用vim,你是看不到色彩显示效果,用ll 文件和文件夹也不会有颜色区别.  那如何支持颜色显示呢?方法如下:  www.2cto.com ...

  5. Psychos in a Line

    Codeforces Round #189 (Div. 1) B:http://codeforces.com/problemset/problem/319/B 题意:每一ROUND如果某个人的数字大于 ...

  6. 【POJ3691】 DNA repair (AC自动机+DP)

    DNA repair Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Description B ...

  7. win7 热点设置命令

    netsh wlan set hostednetwork mode=allownetsh wlan set hostednetwork ssid=XXXX key=XXXnetsh wlan star ...

  8. Android中SharedPreferences和序列化结合保存对象数据

    前言: 最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记录的,当用户会到此页 ...

  9. Lua function 函数

    Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细 ...

  10. LINUX系统中动态链接库的创建与使用

    大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部 ...