第九回 Microsoft.Practices.Unity.Interception实现基于数据集的缓存(针对六,七,八讲的具体概念和配置的解说)

简介:

概念

Microsoft.Practices.Unity.Interception是一个拦截器,它隶属于Microsoft.Practices.Unity组成之中,主要完成AOP的功能,而实现AOP方法拦截(页向切面)的基础就是IoC,我们需要配置相关接口或者类型的IoC方式,然后在生产对象时,使用Unity的方法进行动态生产对象,这时,你的Interception拦截器也会起作用!

相关技术

IoC: 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题。 控制反转一般又被称为依赖注入(Dependency Injection,简称DI)。即将配置中的对象,动态注入到项目程序当中,使程序的某个功能可以动态进行切换。

AOP: 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

一般用它来实现:日志记录,性能统计,安全控制,事务处理,异常处理等等。

持久化方式

目前我的Project.UnityCaching组件支持Microsoft.Practices.EnterpriseLibrary.Caching和Redis两种数据持久化的方式,前者也是Microsoft.Practices. EnterpriseLibrary企业库的一部分,主要实现内存持久化(也可以实现文件持久化),主要用在单台WEB服务器上;后者可以单独部署到一台或者多台服务器上,主要实现分布式缓存,它是未来的大数据的一个方向。

键名组成

缓存解决方案名_命名空间_方法名,其中缓存解决方案名可以自己去配置,对应config中的CacheProjectName节点,而键对应的值采用字典类型,字典的键对应方法的各参数的组合。

涉及到的相关程序集

IoC基础库程序集

 

Redis基础库程序集

 

Project.Frameworks自封装程序集

 

配置文件中进行对IoC,AoP的配置

  View Code

使用时的相关注意要点

  1. Unity组件中引入了服务定位器ServiceLocator的概念,它可以使我们不引用目标程序集,而自动在bin目录自动去定位。
  2. 对于Redis方式的缓存来说,进行缓存的实体类需要被声明为Serializable特性。
  3. 实现IoC,AoP时,只引用需要的程序集,而不用将所有Microsoft.Practices.Unity组件都引入,在程序进行编译时,这些需要的程序集会自动添加到UI项目的BIN目录。
  4. 方法拦截这块有三种,但TransparentProxyInterceptor由于性能太差,我们并不提倡使用,项目中我们主要使用VirtualMethodInterceptor对于虚方法的拦截和InterfaceInterceptor对于接口的拦截,两种方式各有好处,如果实现方式比较单一,可以直接使用虚方法注入,这样可以省去写接口的代码量。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:第九回 Microsoft.Practices.Unity.Interception实现基于数据集的缓存(针对六,七,八讲的具体概念和配置的解说),如需转载请自行联系原博主。

目录
相关文章
|
9月前
|
缓存
scanf和getchar大家都用过吧!那么缓存区的概念你必须了解!(下)
scanf和getchar大家都用过吧!那么缓存区的概念你必须了解!(下)
54 0
|
4月前
|
缓存 NoSQL Java
SpringBoot - Spring缓存默认配置与运行流程
SpringBoot - Spring缓存默认配置与运行流程
30 1
|
6月前
|
缓存 自然语言处理 算法
71 # 协商缓存的配置:通过内容
71 # 协商缓存的配置:通过内容
27 0
|
6月前
|
缓存 监控
70 # 协商缓存的配置:通过修改时间
70 # 协商缓存的配置:通过修改时间
23 0
|
6月前
|
缓存 前端开发
69 # 强制缓存的配置
69 # 强制缓存的配置
25 0
|
8月前
|
缓存 前端开发 网络安全
Apache配置----静态缓存
Apache配置----静态缓存
199 0
|
8月前
|
缓存 NoSQL Java
【Spring】Cache 缓存配置详解
【Spring】Cache 缓存配置详解
303 0
|
9月前
|
存储 缓存 vr&ar
scanf和getchar大家都用过吧!那么缓存区的概念你必须了解!(上)
scanf和getchar大家都用过吧!那么缓存区的概念你必须了解!
52 0
|
11月前
|
缓存 NoSQL Java
实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存
实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存
48 0
|
11月前
|
缓存 NoSQL Java
MyBatis-25MyBatis缓存配置【集成Redis】
MyBatis-25MyBatis缓存配置【集成Redis】
84 0

热门文章

最新文章