您的位置:首页 > 其它

微软企业库4.1学习笔记(十三)缓存模块

2010-08-16 15:55 393 查看
企业库的缓存模块允许开发者在应用中包含本地缓存。它支持内存缓存,内存中缓存的数据,可以用数据库或者其他分离的存储作为后端数据存储。缓存模块可以不经修改而直接使用,它提供了获取数据、添加数据到缓存、清空缓存中的数据所需的全部方法。同样支持可配置的缓存过期和清除策略。

  在构建企业级分布式应用的时候,架构师和开发者将会面对许多挑战。缓存可以帮助他们克服下面的一些挑战:

  性能,缓存通过存储和数据消费者最相关的数据,可以提升应用的性能。避免了重复的数据创建,处理和传输。

  可扩展性,在缓存中存储资源帮助节省资源,在有增加应用的需要情况下,提高可扩展性。

  可获得性,在本地存储数据,应用在网络发生潜在问题、webservice发生问题、硬件发生问题的情况下,应用还是可以生存下来,可以继续使用。

  在缓存模块将会讲述下面的主题

  缓存模块简介

  使用缓存模块进行开发

  关键的解决方案

  缓存模块的设计

  通过修改来扩展缓存模块的功能

  部署和实施

  缓存模块的QuickStart

  一、缓存模块简介

  将通过下面的一些话题,帮助你决定缓存模块是否适合你的应用需求。

  通用的解决方案

  示例代码

  缓存模块的突出点

  什么时候使用缓存模块

  缓存模块的取舍

  安全

  除了上面的话题,还将介绍下面的一些内容

  使用缓存模块进行开发,首先会介绍如何在你的应用中配置并且使用缓存模块,然后介绍如何选择缓存对应的后端存储方式。

  关键的解决方案,介绍如何使用缓存模块完成典型的缓存操作。

  缓存模块的设计,解释设计模块的相关决定,以及这些决定背后的原因。

  扩展和修改缓存模块,介绍如果通过添加自定义的后端存储以及过期策略来扩展模块,也会介绍如何通过修改源代码来实现。

  部署和实施,介绍如何部署和升级模块的程序集。

  缓存模块的QuickStart,介绍如何安装和配置Caching QuickStart,然后用一系列的代码实践在应用中常用的缓存操作。

  

  1.1常用的解决方案

在下列情况,很适合使用缓存。

重复访问很少变化,或者没有变化的数据

当数据访问在创建,访问,传输的时候非常耗时的情况下

在一些情况下,数据必须要可以获得,例如,不能访问服务的时候。

你可以在下面的任何一种应用中使用缓存

Windows Form

Console Form

Windows Service

COM+ server

ASP.NET Web应用或者是webservice

  你应该在单个的应用程序域中部署缓存模块。每个应用程序域有一个或者多个缓存,有或者没有对应的后端存储。缓存的数据不能在不同的应用程序域中共享。

  缓存模块可以优化性能,并且是线程安全和异常安全的。你可以加入自定义的过期策略和自定义的后端存储。

  1.2代码示例

  下面的代码演示了添加数据到缓存中,从缓存中获取数据。向缓存中添加Goods对象,优先级是2,如果过期不更新缓存,过期时间为最后一次访问之后的5分钟。

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 );
}
}


1.3使用缓存的突出点

  企业库的缓存模块包含下面的功能:

  你可以使用图形化的配置工具进行配置

  你可以配置一个持久化的存储位置,用企业库的数据访问模块,和内存中的缓存保持同步。

  你可以通过自定义过期策略和自定义后端存储来扩展缓存模块。

  你可以以线程安全的方式保证应用的性能。

  1.4决定什么时候使用缓存

  缓存模块适用于大多数的需要缓存的情况,

  1.5可替代的缓存模块

  在一些情况,需要另外一个缓存解决方案,例如存在多个应用,缓存和应用不在同一个系统之上。你不能跨web farm同步缓存数据。但是,当你需要改变模块基础行为的时候,你可以用自定义类代替CacheManager。更多的信息,请关注后面的缓存模块的扩展开发。

  ASP.NET Cache

  .NET框架的System.Web命名空间下面包含了一个缓存,在ASP.NET应用中可以通过System.Web.HTTPContext.Cache使用缓存,这个缓存是给ASP.NET应用开发的。当然了,也可以在ASP.NET以外使用缓存,通过System.Web.HTTPRuntime.Cache来访问。ASP.NET缓存要求安装System.Web程序集。在使用之前,开发者要验证在目标平台和系统上是否支持这个程序集。

  1.6安全

  尽管你可以在后端存储中加密缓存的数据,缓存模块却不支持加密内存中的数据。如果一个恶意的用户找到一个损害系统的办法,访问应用进程中的内存,便会访问到内存中缓存的数据。如果这对你的系统是一种威胁,就不要将敏感数据放入缓存,例如性用卡号和密码等。

  

  未完待续。。。。。。。。。。。。。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐