`

微软企业库4.1学习笔记(十九)缓存模块7 扩展和修改缓存模块

阅读更多

  缓存模块可以满足大部分的缓存使用情形。但是,还是会有你想要自定义一些模块行为,来满足应用特殊需求的时候。你可以通过两个方式来达到目的:

  •   通过缓存模块提供的扩展点,扩展现有功能
  •   修改源代码

  一、扩展缓存模块

  通过设计好的扩展点来扩展应用的功能。典型的方式为,写一个自定义的类,实现某个接口,或者是继承某个抽象类。因为这些自定义类是在你的应用中使用,你不需要修改和重新编译模块。

  你可以自定义一种新的后端存储方式,添加一种过期策略,或者是新的CacheManager。

  1.1添加新的后端存储

  添加一个新类,实现IBackingStore接口,或者是继承自BaseBackingStore类。你一定要在实现的方法中保证,如果在访问后端存储的时候发生意外的话,后端存储仍然完整无缺,可以提供服务。

  因为是Cache操作,可以确保任何对后端存储的操作都是单线程的方式。这意味着在你实现的过程中不用考虑线程安全。

  1.2添加一个新的过期策略

  实现一个新的过期策略,需要添加的类实现下面的接口:  

  •   ICacheItemExpiration,接口允许开发者定义自己的过期规则,定义如何和什么时候一个缓存项CacheItem过期。
  •   ICacheItemRefreshAction,过期之后,可以更新缓存,实现这个接口的类必须可序列化。

  1.3改变默认的CacheManager

  缓存模块中的CacheManager实现了ICaheManager接口。当系统初始化的时候,CacheManager从后端存储中加载数据到内存中,通过它暴露的方法,可以添加项,删除项,获取缓存的数据。

  尽管默认的CacheManager可以满足大部分的应用需要,还是有可能在你的应用有特殊需求的时候,你可以实现自己的CacheManager来修改缓存模块的行为。下面列出一些你可能会需要的功能:

  实现一个分布式的、或者是特殊的缓存方式,支持不同的解决方案,不仅仅是存储和获取数据,通过添加自定义的后端存储也解决不了。

  改变CacheManager加载数据到内存的方式,只加载最常使用的项,或者是按照要求使得加载项最少。

  创建自定义的CacheManager,需要实现ICacheManager接口,还需要添加下面的特性,告诉配置系统这个CacheManager类是可以安装和配置的类。

  [ConfigurationElementType(typeof(CustomCacheManagerData))] 

   

  二、修改模块

  如果你需要修改模块来满足应用的一些特殊需求的话,请参考下面的指导:

  •   确保你了解了模块的运行,阅读了相关的文档。
  •   如果你需要添加新的功能模块,而且需要和原来的一些模块一起运行的话,最好修改模块的命名空间,也要修改相关模块的命名空间。
  •   使用签名,使用签名可以保证程序集的唯一性
  •   在修改之后,记得要重新编译企业库的代码

 

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

分享到:
评论

相关推荐

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    redis学习笔记Redis.md

    ### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...

    计算机网络-甘晴void学习笔记

    ### 计算机网络-甘晴void学习笔记 #### 一、甘晴void概念解析 在探讨计算机网络之前,我们先来理解一下“甘晴void”这一独特概念。甘晴void是一个融合了清新与深邃的编程理念,旨在引导程序员在编程过程中保持一种...

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...

    Java相关课程系列笔记之十四Hibernate学习笔记.doc

    ### Java相关课程系列笔记之十四:Hibernate学习笔记 #### 一、Hibernate的概述 ##### 1.1 Hibernate框架的作用 Hibernate是一个开源的对象关系映射(Object Relational Mapping, ORM)框架,它允许开发者以面向...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    ibatis学习笔记.txt

    ### iBatis 学习笔记知识点总结 #### 一、iBatis 概念与特点 **1.1 iBatis 定义** - **iBatis** 是一个基于 Java 的开源持久层框架,它专注于 SQL 映射,提供了一种将对象与数据库交互过程中的 SQL 语句进行分离的...

    nginx学习笔记.docx

    ### Nginx 学习笔记知识点总结 #### 一、Nginx 简介及安装 **Nginx** 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,...

    oracle 学习笔记

    ### Oracle学习笔记知识点详解 #### 一、数据库结构 **1.1 物理结构概述** Oracle数据库的物理结构主要包括三类文件:数据文件、重做日志文件和控制文件。这些文件共同构成了数据库的物理存储结构。 **1.2 表...

    javaNIO学习笔记

    ### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...

    大数据学习笔记

    ### 大数据学习笔记知识点概览 #### 第一部分:Spark学习 ##### 第1章:Spark介绍 - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但...

    fbreader7.5源代码

    在源代码中,我们可以看到它如何处理EPUB、PDF、MOBI等多种格式的电子书,以及如何实现文本渲染、字体调整、高亮和笔记等阅读功能。通过对源码的研究,开发者可以学习到如何构建高效、流畅且用户友好的阅读界面。 ...

    MySQL学习笔记

    ### MySQL学习笔记知识点详解 #### 一、MySQL安装与配置 **1.1 安装失败解决方案** 在MySQL安装过程中可能会遇到启动失败的情况,解决这一问题通常需要检查以下几个方面: - **确认系统环境变量是否正确配置**:...

    redis学习笔记

    ### Redis学习笔记知识点详解 #### 一、Redis环境搭建 **1.1 Redis简介** Redis是一种高性能的键值存储系统,常被用作数据库、缓存以及消息中间件。其最大的特点是支持多种数据结构,如字符串(String)、列表...

    springMVC学习笔记

    ### SpringMVC学习笔记 #### 一、SpringMVC配置详解 **1.1 配置SpringMVC分派器及映射** SpringMVC框架的核心组件之一是`DispatcherServlet`,它作为前端控制器,负责接收请求并将请求分发到合适的处理器上。为了...

    Java学习笔记-个人整理的

    {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section.4.3} {4.4}散列表与HashMap}{83}{section.4.4} {4.4.1}java....

Global site tag (gtag.js) - Google Analytics