Abp中的工作单元UnitOfWork的Aop是如何实现的

Posted dazen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Abp中的工作单元UnitOfWork的Aop是如何实现的相关的知识,希望对你有一定的参考价值。

说来惭愧啊,Aop编程,我一直只知道Mvc 中的过滤器,我们可以重写OnActionExecuting 和OnActionExecuted的方法。用来在Action前后处理一些逻辑。如下图显示

技术图片

 

到了,Abp中的UnitOfWork之后,我就困惑了,为什么它可以在Service方法中,使用UnitOfWorkAttribute 就可以在方法前开启事务,难道可以使用mvc中的过滤器,很明显,这是不正确的。

 知道今天,看了Aop的资料,才知道拦截器。

下面我们来用控制台测试一下拦截器如何使用。

 

技术图片

 

 我们定义一个UnitOfWorkAttribute,然后安装Nuget Package Castle.Core

 

技术图片

 

我们定义UnitOfWorkInterceptor拦截器,实现IInterceptor接口,

技术图片

 

 我们定义一个需要调用的方法。需要说明这里调用的方法必须是虚方法。virtual的作用在这里就不说了

技术图片

 

 然后调用。

技术图片

 

Abp 工作单元开启和释放数据库事务也是通过拦截器来实现的。

 

以上是关于Abp中的工作单元UnitOfWork的Aop是如何实现的的主要内容,如果未能解决你的问题,请参考以下文章

[Architect] Abp 框架原理解析 UnitOfWork

ABP工作单元

ABP领域层——工作单元

[Abp 源码分析]工作单元的实现

ABP官方文档翻译 3.6 工作单元

ABP官方文档翻译 3.6 工作单元