美文网首页
ABP之AOP初显威

ABP之AOP初显威

作者: 诸葛_小亮 | 来源:发表于2018-06-03 21:19 被阅读119次

技术和框架要点

ABP
AOP
IOC
Castle

AOP

AOP,面向切面编程,通过运行期动态代理实现程序功能的统一维护的一种技术,可以再代码运行期间改变目标函数的行为。

ABP框架BackgroundWork

可参考:
ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
Background Jobs And Workers

使用AOP提供的BackgroundJob,如何在不修改框架的基础之上记录每个BackgroundJob的运行信息呢?比如:运行结果、运行时间、Job名称、错误信息、运行耗时等信息。
方案有两种:

  1. 继承自框架的BackgroundJob<T>类,编写符合要求的基类
  2. 使用AOP动态代理所有继承自BackgroundJob<T>并且代理Execute方法

示例代码

ABP模块以及初始化

main.png 启动模块.png 运行结果.png

定义后台工作并测试运行

  1. 定义后台工作者,可参考第三节

    定义后台工作者.png
    定义后台工作需要注意:必须有参数类、Job必须继承自BackgroundJob<T>基类和ITransientDependency接口
  2. 在程序主入口启动后台工作者


    启动后台工作者.png
    运行结果.png

经过以上步骤,表示后台工作JOB正常运行。

定义和注册拦截器

定义拦截器.png
注册拦截器方法.png
Module中注册拦截器.png

注意必须是在Module的PreInitialize()方法中注册.

运行结果.png

测试异常信息

在JOB内容抛出异常,修改JOB方法如下


抛出异常.png 添加触发异常的job.png
运行结果.png

注意观察两次JOB的运行结果。

总结

根据以上代码实例,我们发现AOP带来以下好处:

  1. 不用修改框架代码
  2. 不用自定义继承自框架代码

扩展

  • 在示例代码中是用Console.WriteLine 输出信息,在实际代码中,可以使用EventBus来触发事件,其他模块代码处理Event,这样可以做到不同的信息记录方式,即可以输出到日志文件,也可以保存到数据库

相关文章

网友评论

      本文标题:ABP之AOP初显威

      本文链接:https://www.haomeiwen.com/subject/pihlsftx.html