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


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

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

    •   性能,缓存通过存储和数据消费者最相关的数据,可以提升应用的性能。避免了重复的数据创建,处理和传输。
    •   可扩展性,在缓存中存储资源帮助节省资源,在有增加应用的需要情况下,提高可扩展性。
    •   可获得性,在本地存储数据,应用在网络发生潜在问题、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安全

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

  • 相关阅读:
    hdu 2014 青年歌手大奖赛_评委会打分
    java 图像灰度化与二值化
    hdu 2010
    如何搞定IE+google双内核的360浏览器表单自动回填兼容问题
    多预览小图焦点轮播插件lrtk
    多功能前台交互效果插件superSlide
    自适应标题延展线写法
    二级菜单延迟隐藏
    各种浏览器的Hack写法(chrome firefox ie等)
    jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/2287830.html
Copyright © 2020-2023  润新知