zoukankan      html  css  js  c++  java
  • 微软企业库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安全

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

      

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

  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/lmule/p/1800793.html
Copyright © 2011-2022 走看看