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 1006: [HNOI2008]神奇的国度 弦图的染色问题&&弦图的完美消除序列

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1788  Solved: 775[Submit][Stat ...

  2. 51,PIC,AVR单片机它们的优点缺点都有哪些?

    我有幸接触了几款单片机,并用它们做了一些项目.现在想做个小总结,谈一下自己用各种单片机的感受.仅是个人意见,仁者见仁智者见智. 传统51,我想我就不多说了,适合菜鸟入门,容易上手,价格一般(从性价比方 ...

  3. javascript中神奇的(+)加操作符

    javascript是一门神奇的语言,这没神奇的语言中有一个神奇的加操作符. 常用的加操作符我们可以用来做: 加法运算,例如:alert(1+2); ==>3 字符串连接,例如:alert(“a ...

  4. 将数组转换成List

    采用比较好的方法Collections.addAll(arrayList, arr); arrayList是一个List arr是一个数组 并且要求arrayList与arr的类型是相同的  或    ...

  5. Scanner 与 Readable 的read()方法

    Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用. Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的 ...

  6. TCP/IP 目录导航

    用了近二十天的时间,把一本800页的书看完,感觉收获还是很大的.对网络,对这些协议有了深刻的认识! 知道了路由器与交换机的区别. 知道了IP地址的特点. 知道了网络的分层,物理层,数据链路层,网络层, ...

  7. bzoj3790

    观察发现,这道题目其实就相当于一个最小区间覆盖问题这里的区间是指以每个点为中心的最长回文串很久没写manacher,有点感动不得不说manacher是一个非常好的算法 ..] of char; c,l ...

  8. IronPython fail to add reference to WebDriver.dll

    在使用Ironpython引用WebDriver程序集做web自动化时碰到这个问题,出问题的代码很简单,如下: import sys import clr clr.AddReferenceToFile ...

  9. Eclipse svn图标不显示

    在菜单栏中:windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项,最后应用确认之后 ...

  10. LaTeX手动安装宏包(package)以及生成帮助文档的整套流程

    注意:版权所有,转载请注明出处. 我使用的是ctex套装,本来已经自带了许多package,但是有时候还是需要使用一些没有预装的宏包,这时就需要自己安装package了.下载package可以从CTA ...