配置缓存模块使用数据库作为后端存储

1) 在CacheManager节点上点击右键,选择新建【Database Cache Storage】

2)在配置中自动加入数据访问模块的配置信息

3)点击Data Cache Storage节点,右侧的DatabaseInstance属性显示的是数据库连接字符串的名称,它和数据访问配置中的一个配置关联的,

你可以通过输入或者下来来选择一个数据访问配置。可以重新命名Name属性。

4)设置PartitionName属性,这个标识在CacheManager中将会使用。

通过在CacheManager上的右键菜单,可以选择新建其他类型的后端存储。

注意点:缓存配置的属性值应该考虑缓存使用的模式,和系统的环境,例如,内存的容量。如果大量使用缓存,是很消耗内存的,会导致内存紧张。

可以通过模块计数器来帮助调整缓存的配置参数值。

缓存配置的xml结构

下面介绍缓存配置的xml文件结构,你可以手动修改xml文件,但是企业库的配置工具可以大大减少这些配置工作。

<configuration>

<configSections>

<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

<section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</configSections>

<dataConfiguration defaultDatabase="Connection String" />

<connectionStrings>

<add name="Connection String" connectionString="Database=Database;Server=(local)\SQLEXPRESS;Integrated Security=SSPI"

providerName="System.Data.SqlClient" />

</connectionStrings>

<cachingConfiguration defaultCacheManager="MyCacheManager1">

<cacheManagers>

<add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"

numberToRemoveWhenScavenging="10" backingStoreName="Null Storage"

type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

name="Cache Manager" />

<add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"

numberToRemoveWhenScavenging="10" backingStoreName="Data Cache Storage"

type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

name="MyCacheManager1" />

</cacheManagers>

<backingStores>

<add databaseInstanceName="Connection String" partitionName="CacheManager1"

encryptionProviderName="" type="Microsoft.Practices.EnterpriseLibrary.Caching.Database.DataBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching.Database, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

name="Data Cache Storage" />

<add encryptionProviderName="" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

name="Null Storage" />

</backingStores>

</cachingConfiguration>

</configuration>

在应用中使用缓存模块

准备环境:

1、 添加对Microsoft.Practices.EnterpriseLibrary.Caching.dll程序集的引用

2、 添加对Microsoft.Practices.EnterpriseLibrary.Common.dll程序集的引用,里面包含了企业库的核心内容,一些通用的功能

3、 添加对Microsoft.Practices.ObjectBuilder2.dll程序集的引用

4、 如果使用数据库作为后端存储,需要添加对Microsoft.Practices.EnterpriseLibrary.Data.dll和

Microsoft.Practices.EnterpriseLibrary.Caching.Database.dll程序集的引用

5、 如果需要加密缓存中的数据,需要添加对Microsoft.Practices.EnterpriseLibrary.Caching.Cryptography.dll和Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll程序集的引用

6、 然后再代码中导入下面的命名空间

using Microsoft.Practices.EnterpriseLibrary.Common;

using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;

using Microsoft.Practices.EnterpriseLibrary.Caching;

通常,用两步就可以开始用缓存功能了。

1) 创建CacheManager

2) 使用CacheManager中对应的方法

/*

* Created by SharpDevelop.

* User: haier

* Date: 2010-4-21

* Time: 22:33

*

* To change this template use Tools | Options | Coding | Edit Standard Headers.

*/

using System;

using Microsoft.Practices.EnterpriseLibrary.Common;

using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;

using Microsoft.Practices.EnterpriseLibrary.Caching;

namespace BeautyCode.ConApp

{

public class Goods

{

public string ID{get;set;}

public string Name{get;set;}

public int Price{get;set;}

}

public class CachingTest

{

public static void Test()

{

ICacheManager goodsCache=CacheFactory.GetCacheManager();

string id="001";

string name="seed";

int price=100;

Goods goods=new Goods();

goods.ID =id;

goods .Name=name;

goods .Price=price ;

goodsCache .Add(goods .ID,goods ,CacheItemPriority .Normal ,

null,new SlidingTime (TimeSpan.FromMinutes (5)));

//Retrieve the item

goods =(Goods )goodsCache .GetData (id );

}

}

}

上面的代码演示了,用工厂方法创建CacheManager,然后调用Add方法添加数据到缓存,使用GetData方法从缓存中获取数据,

获取之后别忘了进行类型转换。

选择后端存储

每个CacheManager都可以配置为只在内存中存储数据,意味着它不使用任何后端存储,也可以配置为及使用内存,也使用持久化的存储。

持久化的形式在配置后端存储的时候指定。后端存储保证了,如果应用必须要重启的话,缓存的数据还可以存活,也就是重启之后缓存的数据不会丢失。

默认情况下,企业库的缓存模块支持两种形式的后端存储。

1) 独立的后端存储

2) 数据库的后端存储

如果你需要在多个服务器的情况下使用缓存,例如服务器场环境,后面我们会讲到。

开发者可以扩展缓存模块,来支持额外形式的后端存储。

一个应用可以使用多个缓存,每个缓存通过一个配置的CacheManager作为代理。企业库的缓存模块不支持多个CacheManager使用同一个后端存储。

但是一个应用的多个CacheManager可以使用相同的partition name。

1、使用空后端存储

空后端存储是默认的选项,它不持久化缓存的数据。意味着数据只存在于内存中,这种形式适用于你想在重启应用之后更新缓存中的数据。

它被所有的应用支持。

2、使用独立存储作为后端存储

适用于下面的情况

1) 需要持久化存储,但是用户量较少

2) 使用数据库会超出经费预算

3) 没有数据库设施

3、使用数据库作为后端存储

使用数据访问模块,可以将缓存的数据放在数据库中。默认情况,缓存模块包含一个创建缓存需要的数据表结构的脚本,支持SQL Server数据库。

开发者可以使用其它的数据库作为后端存储,但是需要修改模块的源代码。每一个数据库类型,必须在数据访问模块中包含一个数据库provider,和一个兼容的表结构。

  未完待续。。。。。。。。。。。。。。。。。。。。。

微软企业库4.1学习笔记(十五)缓存模块3 使用数据库作为后端存储相关推荐

  1. 微软企业库4.1学习笔记(十)企业库的设计

    在设计整个企业库的过程中,使用了一系列的最佳实践.下面列出一些里面的最佳实践: 在核心库中使用了Common模块 使用了统一的命名约定和统一的版本 在设计的过程中使用单元测试 在所有模块中包含基础结构 ...

  2. 微软企业库4.1学习笔记(三十六)日志模块 简介

    日志模块 企业库的日志模块简单的实现了日志功能的常用功能.开发者可以利用模块在下面的位置记录信息: 事件日志 电子邮件 数据库 消息队列 文本文件 WMI的事件查看器 自定义的位置 模块为记录在任何位 ...

  3. 微软企业库4.1学习笔记(三)企业库迁移和并行使用,以及企业库的扩展

    一.迁移和并行使用 通常来说,企业库是建立在.NET 2.0 的基础上,使用后续版本的企业库也不需要改变任何代码.不需要将引用更新到新的程序集,也不需要在配置文件中指明程序集的正确版本. 这个版本4. ...

  4. 微软企业库4.1学习笔记(八)创建对象 续集2

    3.3通过配置指定和Unity的整合 另外一种方法是在配置源中指定配置的需要,你可以指定下面的一条或者多条: 你可以在Unity配置中指定想要的BlockExtensions 你可以在Unity配置中 ...

  5. 微软企业库4.1学习笔记(七)创建对象 续集1

    3.2使用Unity模块创建企业库对象 下面介绍如何使用前面的方法获取企业库对象的实例.代码示例如下  IUnityContainer containter = new UnityContainer( ...

  6. 微软企业库4.1学习笔记(六)创建对象

    一.创建应用模块对象 在你的应用中经常会需要创建例如Database或者是CacheManager之类的对象,企业库支持一系列的方法,可以创建应用需要的对象. 你可以使用工厂方法创建这些对象,企业库的 ...

  7. 微软企业库5.0学习笔记(三十三)数据访问模块

    前言 鉴于企业库5.0已经发布正式版,同时有广大读者的要求(臭屁一下,o(∩_∩)o...),后面文章的内容和代码将基于Enterprise Library5.0和Unity2.0来写,感谢大家的一贯 ...

  8. 微软企业库5.0学习笔记(四)配置企业库

    http://blog.csdn.net/sfbirp/archive/2010/05/18/5603567.aspx 转载于:https://www.cnblogs.com/Rising/archi ...

  9. (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...

    原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...

最新文章

  1. Redis-cluster架构
  2. [BUUCTF-pwn]——ciscn_2019_sw_1
  3. 因为10万元 乐视云计算又把自己折腾成失信被执行人...
  4. 佛祖保佑,永无BUG
  5. 将rdd存储到本地的一个文件中
  6. Jquery 网站保存信息提示消息实现,提示后自动消失
  7. CUMCM 2021-B:乙醇偶合制备C4烯烃(1)
  8. 台湾移动互联网为什么跑慢了?
  9. RS485MODBUS RTU转PROFINET网关/PROFINET转MODBUS RTU网关将施耐德ATV610变频器接入西门子1500 PROFINET网络配置方法
  10. 单龙芯3A3000-7A1000PMON研究学习-(17)撸起袖子干-分析代码前的准备工作4-地址映射
  11. Push to branch was rejected
  12. 八段数码管数字显示实验c语言,八段数码管显示实验.doc
  13. 每天一个linux命令(33):atq命令
  14. Python(爬虫篇)--- 破解加密【一】JS加密破解
  15. 即兴演讲的秘诀结构(一)
  16. 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能
  17. 两台计算机之间的直连
  18. matlab 画xos函数,振荡积分的数值计算与Matlab实现
  19. 不支持发行版本5 解决方法
  20. Block背后的数据结构及变量截取

热门文章

  1. (一)KitJs瀑布流组件特点
  2. NET CMS 大全
  3. Ubuntu 13.10/12.10/12.04 用户如何升级到 Ubuntu 14.04
  4. 了解下JavaScript中的prototype
  5. moodle升级完整过程
  6. struct timeval结构体 以及 gettimeofday()函数
  7. 用tf-faster-rcnn训练自己制作的车牌号数据集(VOC2007格式)
  8. 华为机试——字符串分隔
  9. Kubernetes—动态存储卷配置(StorageClass资源)(十二)
  10. 计算机专业大学四年应该怎么过才有意义?