博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception...
阅读量:6550 次
发布时间:2019-06-24

本文共 1558 字,大约阅读时间需要 5 分钟。

说在前

本节主要说一下Unity家族里的拦截组件,对于方法拦截有很多组件提供,基本上每个Ioc组件都有对它的实现,如autofac,它主要用在orchard项目里,而castle也有以拦截的体现,相关可以看我的这篇文章,而今天主要说一个Unity里的方法拦截的实现,事实上本篇文章是对的一个扩展和补充,对于unity这东西在微软的Nlayer项目里有所体现,它是基于DDD构架的,无论在架构选型还是技术选型上都很超前,也都结合了很大微软高手的心血,可读性很高,呵呵.

做在后

通过IoC建立对象实例的方法时,它们的配置信息一般有两种方式存储,第一可以通过C#程序进行存储并建立,第二可以通过配置文件先进行配置,然后在程序里直接调用即可,今天这篇文章,我们将对这两种方法进行说明.

第一,通过配置文件建立实例

程序里直接通过IOrderRepository来触发它自己的方法拦截

Repository.IOrderRepository iOrderRepository = ServiceLocator.Instance.GetService
();

第二,通过程序直接建立实例

如果希望在程序里控制它,代码就多了一些,控制上比较灵活,配置文件是全局性的,而代码里,可以有需要的时候进行创建

config配置中不需要对unity初始化,直接对caching节点进行声明即可

 

C#程序部分

//创建容器              IUnityContainer container = new UnityContainer();            //注册映射              container.RegisterType
(); //添加unity扩展,扩展类型是一个拦截器 container.AddNewExtension
(); //为接口IOrderRepository注册拦截器,它的方式是接口拦截器,拦截器的实现是一个行为,它的实现体是Project.InterceptionBehaviors.CachingBehavior container.RegisterType
( new Interceptor
(), new InterceptionBehavior
());

OK,我们看了两种拦截器的实现,选用哪种方式完全是看你的具体场合了,呵呵.

对缓存组件的封装

转载地址:http://dauco.baihongyu.com/

你可能感兴趣的文章
DNS基本原理
查看>>
iOS 中json解析数据出现中文乱码的问题
查看>>
spring工程在eclipse 运行报错:找不到ContextLoaderListener
查看>>
java连接AD域
查看>>
常见下载节点
查看>>
linux: bash登录的显示信息设置以及环境配置文件.
查看>>
Spring boot环境搭建(二)- 代码分离、日志文件配置
查看>>
搭建2008 R2 IIS网络负载平衡
查看>>
Java动态代理学习1——静态代理
查看>>
node.js学习笔记之正则表达式
查看>>
hijack.c
查看>>
使用ACL匹配奇偶网络号及IP地址
查看>>
ibatis快速入门(一)
查看>>
四、基于802.1x+AD+NPS+DHCP动态下发VLAN配置 (第4篇、添加角色DHCP服务器并配置)...
查看>>
linux基础命令学习之ls(1)
查看>>
巧用windows批处理,实现简易邮件群发功能
查看>>
SAMBA
查看>>
同事联系方式备份脚本编写
查看>>
gulp构建前端工程
查看>>
标题 php学习遇到的问题
查看>>